Handlebars.java provides logic-less and semantic Mustache templates with Java. Prior to 4.5.3, com.github.jknack.handlebars.springmvc.SpringTemplateLoader resolves attacker-influenced Spring MVC view names through Spring ResourceLoader without the path-containment validation used by other URL-based loaders. In handlebars-springmvc/src/main/java/com/github/jknack/handlebars/springmvc/SpringTemplateLoader.java, a view name using a file: or classpath: URL and ending with the # fragment delimiter places the appended .hbs suffix in the fragment, which FileUrlResource.exists() and URL.openStream() discard. HandlebarsViewResolver in handlebars-springmvc/src/main/java/com/github/jknack/handlebars/springmvc/HandlebarsViewResolver.java then passes the attacker-controlled name to handlebars.compile(), allowing an unauthenticated remote attacker to read files accessible to the JVM when an application exposes a controller with a user-influenced view name. This issue is fixed in version 4.5.3.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-22",
"CWE-23",
"CWE-552"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/63xxx/CVE-2026-63490.json"
}"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-63490.json"
[
{
"target": {
"function": "resolve",
"file": "handlebars-springmvc/src/main/java/com/github/jknack/handlebars/springmvc/SpringTemplateLoader.java"
},
"deprecated": false,
"source": "https://github.com/jknack/handlebars.java/commit/61f43423a337b87db5fec1fe59f0725aaaa38df5",
"id": "CVE-2026-63490-03aeaaba",
"signature_version": "v1",
"digest": {
"length": 417.0,
"function_hash": "189048322001925782931546065861680160374"
},
"signature_type": "Function"
},
{
"target": {
"file": "handlebars-springmvc/src/test/java/com/github/jknack/handlebars/springmvc/SpringTemplateLoaderTest.java"
},
"deprecated": false,
"source": "https://github.com/jknack/handlebars.java/commit/a733ae1e2b3b24d3857bd4cfff080130d777bdc7",
"id": "CVE-2026-63490-12e16e6b",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"283111640158751887371919179514456608793",
"124424237208915413044693078024977295718",
"128580819486392187617489657236963461290",
"306044615348563623402137061147643785484",
"110112269328007236743157190840262126045",
"21767270511925541131599885177307795758",
"2367167767513552376843969103825007714",
"242541466008822052188930733002140932551",
"173784460195689882239969544961718280505",
"267174442745707036181733078993054549113",
"125129305266544762237682132517201620426",
"125447234951807086833307985166096436024",
"303068627718475250610380021975769498734",
"240463503037576781791468056994744625573",
"21767270511925541131599885177307795758",
"2367167767513552376843969103825007714",
"242541466008822052188930733002140932551",
"34759626407033902026278371536171684098",
"24981344039524995588204155665602596450",
"127517712127678984621956449642277012655",
"15489294027092540617659836874620090305"
]
},
"signature_type": "Line"
},
{
"target": {
"file": "handlebars-springmvc/src/main/java/com/github/jknack/handlebars/springmvc/HandlebarsViewResolver.java"
},
"deprecated": false,
"source": "https://github.com/jknack/handlebars.java/commit/61f43423a337b87db5fec1fe59f0725aaaa38df5",
"id": "CVE-2026-63490-4e96e63e",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"183761468201175679659138099181099908101",
"147742068214475995042888476304373649123",
"307163843331844970840244863110920486337",
"166257965537882788533880066300401982794",
"125483172516086890838847213705728220762",
"61216548176903800072082083836046748128",
"215103592913422223645852145898212954170",
"23514186417129480334461058235179083014",
"192399087117178078317423398901048719982",
"37171824728493136345900589085831748430",
"121530667960709232256712015912021662934",
"114387268346263237604857219276877637100"
]
},
"signature_type": "Line"
},
{
"target": {
"file": "handlebars-springmvc/src/main/java/com/github/jknack/handlebars/springmvc/SpringTemplateLoader.java"
},
"deprecated": false,
"source": "https://github.com/jknack/handlebars.java/commit/61f43423a337b87db5fec1fe59f0725aaaa38df5",
"id": "CVE-2026-63490-8c1c31bd",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"12556972397938876904262034594577397291",
"219030385066092940297697232469012820824",
"201459153815000720943643615827038433505",
"319807086485784421064917754111117292777",
"146765013496801918948084321763651218358",
"131684101238753803528354566851700515142",
"261494752999438911161191518973037031666",
"333871743910750682037289186890679024664",
"265563099809951125418658445545367336846",
"118557139800153660604301681569365497462",
"53807451814544539454734025332506617865",
"137294189825524959186783112390604501074",
"339858015650258881245931771894059538084",
"190797721656681291192142442993826322740",
"329960580452948942597166270106893638408",
"157952907195093260627707880009985355213",
"223012828820754501401211258231179498115",
"175718475126074852069558602250908340022",
"90748865064192573537917112872207306375",
"241253817615965569380395524864509925754",
"300695396556594455707671855041016823476",
"291696659561503734385355836663253155767",
"263409651879307176551943944110824168418",
"63974683328277093447878508410438699560",
"61947625098248431834370035023104925425"
]
},
"signature_type": "Line"
},
{
"target": {
"file": "handlebars-springmvc/src/test/java/com/github/jknack/handlebars/springmvc/SpringTemplateLoaderTest.java"
},
"deprecated": false,
"source": "https://github.com/jknack/handlebars.java/commit/61f43423a337b87db5fec1fe59f0725aaaa38df5",
"id": "CVE-2026-63490-d5b7d430",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"149844313103849893858802180184800941289",
"265347308949425364589233001227435863470",
"148602551397198423961953724310758317697",
"236211497381344135076818836342754370936",
"168607626548157139347622499053533330307",
"321287582264850149415897288521133349532",
"118176058011357964328556096815843335314",
"185169329738221927801130623088258653381",
"169743638174200832954260316650799559434",
"307400370564346550457095523569628875493"
]
},
"signature_type": "Line"
},
{
"target": {
"function": "configure",
"file": "handlebars-springmvc/src/main/java/com/github/jknack/handlebars/springmvc/HandlebarsViewResolver.java"
},
"deprecated": false,
"source": "https://github.com/jknack/handlebars.java/commit/61f43423a337b87db5fec1fe59f0725aaaa38df5",
"id": "CVE-2026-63490-df192c78",
"signature_version": "v1",
"digest": {
"length": 466.0,
"function_hash": "164545399337510588322203006457352974054"
},
"signature_type": "Function"
},
{
"target": {
"function": "getResource",
"file": "handlebars-springmvc/src/main/java/com/github/jknack/handlebars/springmvc/SpringTemplateLoader.java"
},
"deprecated": false,
"source": "https://github.com/jknack/handlebars.java/commit/61f43423a337b87db5fec1fe59f0725aaaa38df5",
"id": "CVE-2026-63490-e497d7d4",
"signature_version": "v1",
"digest": {
"length": 175.0,
"function_hash": "304757198551881287477573073228682313543"
},
"signature_type": "Function"
}
]
"2026-08-22T09:15:44Z"