Skip to main content

Handlebars.java CVE-2026-63490

| EUVDEUVD-2026-63392 HIGH
Path Traversal (CWE-22)
2026-08-20 GitHub_M GHSA-g29j-rwfv-h99w
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify Spring MVC endpoint with user-controlled view name
  2. Delivery
    Craft request injecting file: URL with # fragment delimiter
  3. Exploit
    HandlebarsViewResolver receives unsanitized view name
  4. Execution
    SpringTemplateLoader resolves path, .hbs suffix discarded in fragment
  5. Impact
    JVM 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 public PoC Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

handlebars.java < 4.5.3

Affected Packages

maven com.github.jknack:handlebars-springmvc fix: 4.5.3
euvd handlebars_java fix: 4.5.3

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

Vendor (GitHub_M) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 7.5 HIGH

Network-reachable with no authentication or user interaction; high confidentiality from arbitrary file read; no integrity or availability impact.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

2
Patch available
Aug 20, 2026 - 15:16 EUVD
CVE Published
Aug 20, 2026 - 14:45 cve.org
HIGH 7.5

DescriptionCVE.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.

Latest POC

1 public PoC link from github

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch: upgrade to Handlebars.java version 4.5.3 or later.

Threat Intelligence Overview

EPSS Score
0.5%
Top 61% exploitable
Prevalence
Low
niche Java templating library with limited Spring MVC adapter adoption
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Out-of-Cycle
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

58
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

More in Java

View all
CVE-2012-4681 CRITICAL POC
9.8 Aug 28

Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m

CVE-2015-7450 CRITICAL POC
9.8 Jan 02

Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti

CVE-2013-2465 CRITICAL POC
9.8 Jun 18

Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent

CVE-2011-3544 CRITICAL POC
9.8 Oct 19

Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug

CVE-2010-1871 HIGH POC
8.8 Aug 05

JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to

CVE-2012-1723 CRITICAL POC
9.8 Jun 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up

CVE-2013-0422 CRITICAL POC
9.8 Jan 10

Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using

CVE-2012-0507 CRITICAL POC
9.8 Jun 07

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up

CVE-2015-4852 CRITICAL POC
9.8 Nov 18

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

CVE-2012-5076 CRITICAL POC
9.8 Oct 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow

CVE-2017-3066 CRITICAL POC
9.8 Apr 27

Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla

CVE-2012-0391 CRITICAL POC
9.8 Jan 08

The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy