Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify Spring MVC endpoint with user-controlled view name
-
DeliveryCraft request injecting file: URL with # fragment delimiter
-
ExploitHandlebarsViewResolver receives unsanitized view name
-
ExecutionSpringTemplateLoader resolves path, .hbs suffix discarded in fragment
-
ImpactJVM reads target file and returns contents to attacker
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires two specific conditions to both be true: (1) the target application includes the handlebars-springmvc module with HandlebarsViewResolver configured as the view resolver, and (2) at least one Spring MVC controller endpoint exists where user-supplied input - such as a query parameter, path variable, or request header - directly determines or materially influences the view name string returned by the controller. This is not a default Spring MVC behavior; it represents an explicit design choice to delegate dynamic view selection to user input. Exploitation is further limited by the JVM process's file access permissions - only files readable by the application's OS user account can be retrieved. Applications using the core Handlebars.java library without the handlebars-springmvc adapter are entirely unaffected. |
| Impact | The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N) characterizes this as a high-severity, network-exploitable, unauthenticated vulnerability requiring no user interaction - metrics that are accurate given a vulnerable controller pattern is present. However, the real-world attack surface is narrower than the raw score implies: exploitation is gated on the application exposing a Spring MVC controller that routes user-supplied input directly into view name resolution, which is a specific (and avoidable) architectural pattern rather than a default Spring MVC behavior. EPSS data was not provided, so probabilistic exploitation likelihood cannot be quantified. No KEV listing and no public POC are known at time of analysis, suggesting this has not yet attracted widespread attacker interest. The confidentiality impact is genuinely high for affected deployments because the JVM can access sensitive resources such as application.properties, database credentials, and internal configuration files. Overall: organizations running handlebars-springmvc before 4.5.3 with dynamic view selection should treat this as a priority patch, but those without user-influenced view name controllers face no practical exposure. |
| Exploit ScenarioDerived | An attacker finds a Spring MVC application using Handlebars.java before 4.5.3 with an endpoint such as GET /render?view=home that passes the view parameter directly to HandlebarsViewResolver. The attacker submits GET /render?view=file:/etc/passwd%23, causing HandlebarsViewResolver to construct the URL file:/etc/passwd#.hbs; Java's URL resolution discards the fragment, and the JVM reads and returns the contents of /etc/passwd as a rendered template. No authentication or prior reconnaissance beyond identifying the vulnerable endpoint is required. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 20, 2026
Unauthenticated file read in Handlebars.java's Spring MVC integration module (all versions prior to 4.5.3) allows remote attackers to retrieve arbitrary files accessible to the JVM process. The HandlebarsViewResolver passes attacker-controlled view names to handlebars.compile() without path-containment validation, and a file: or classpath: URL with a trailing
fragment delimiter causes the appended .hbs suffix to be silently discarded during resource resolution, bypassing the intended extension check. No active exploitation is confirmed (no CISA KEV listing) and no public POC has been identified at time of analysis, but the CVSS 3.1 score of 7.5 (AV:N/AC:L/PR:N/UI:N) reflects meaningful risk for any deployment with user-influenced view name routing.
RemediationAI
Upgrade to Handlebars.java 4.5.3 or later; the patched release is confirmed at https://github.com/jknack/handlebars.java/releases/tag/v4.5.3 and the fixing commit is at https://github.com/jknack/handlebars.java/commit/61f43423a337b87db5fec1fe59f0725aaaa38df5. For deployments that cannot patch immediately, audit all Spring MVC controllers and identify any endpoint where user-supplied data (query parameter, path variable, request header) flows into the returned view name string; refactor those controllers to use an allowlist of permitted view names rather than passing raw user input to HandlebarsViewResolver. As an additional layer, deploying a WAF rule that rejects request parameters containing file:, classpath:, or
characters targeting the relevant endpoints can reduce exposure, though URL-encoding variants may bypass naive string matching and blocking
has a side effect of rejecting legitimate fragment usage in other parameter contexts. Restricting JVM file system permissions to only the directories required for application operation limits the blast radius of a successful exploit.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in maven, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected component is the handlebars-springmvc module of Handlebars.java (CPE: cpe:2.3:a:jknack:handlebars.java:*:*:*:*:*:*:*:*), a Java library implementing Mustache-compatible logic-less templates. The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory): SpringTemplateLoader delegates view name resolution to Spring's ResourceLoader without normalizing the path or enforcing a prefix boundary, unlike other URL-based loaders in the library. By injecting a file: or classpath: scheme followed by an arbitrary filesystem path and a
fragment delimiter, the attacker ensures that the .hbs suffix appended by the framework lands in the URL fragment component, which Java's FileUrlResource.exists() and URL.openStream() both ignore. HandlebarsViewResolver then passes the unsanitized name to handlebars.compile(), causing the JVM to read and process the target file. The fix in commit 61f43423 addresses this via two complementary layers: HandlebarsViewResolver.buildView() now rejects view names containing :, #, or .., while SpringTemplateLoader gains path normalization, prefix-boundary enforcement, and post-resolution fragment/query component validation via a new validateNoUnsafeUrlComponents() method.
Know when Java gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Network-reachable with no authentication or user interaction; high confidentiality from arbitrary file read; no integrity or availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
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.
Articles & Coverage 2
Latest POC
1 public PoC link from github
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
Handlebars.java Spring MVC versions prior to 4.5.3 contain an unauthenticated file read vulnerability (CVE-2026-63490, CVSS 7.5) that enables remote attackers to retrieve arbitrary files accessible to the application process. Organizations running affected versions expose sensitive application and system files to unauthorized access without requiring authentication or user interaction. Prompt remediation is essential to prevent sensitive data disclosure.
Apply vendor patch: upgrade to Handlebars.java version 4.5.3 or later.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
EUVD-2026-63392
GHSA-g29j-rwfv-h99w
NVD
CVE.org
EPSS
VulDB
Exploit-DB