Description
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.
Published: 2026-08-20
Score: 7.5 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability resides in Handlebars.java’s SpringTemplateLoader, where a view name supplied by an attacker can be treated as a file: or classpath: URL with a fragment suffix. The loader strips the .hbs suffix into the URL fragment, causing FileUrlResource.exists() and URL.openStream() to ignore it. Consequently, the untrusted name is passed to handlebars.compile() and the JVM’s ResourceLoader reads the targeted file. An unauthenticated attacker can thus retrieve any file readable by the application’s Java process, compromising confidentiality and potentially enabling further exploitation.

Affected Systems

The affected product is Handlebars.java (jknack:handlebars.java). All releases before version 4.5.3 are vulnerable. The issue was fixed in the 4.5.3 release.

Risk and Exploitability

The CVSS score of 7.5 indicates a high severity, while the EPSS score is not available, suggesting limited public exploitation data. The vulnerability is not listed in the CISA KEV catalog. Attackers can exploit this via any request that triggers a controller with a user‑controlled view name, making it feasible for unauthenticated remote actors to read arbitrary files accessible to the JVM.

Generated by OpenCVE AI on August 20, 2026 at 20:39 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Handlebars.java to version 4.5.3 or later
  • Disable or sanitize any controller that accepts user‑controlled view names in the Spring MVC application
  • Implement path‑containment validation on file resources used by the application
  • Apply usage restrictions or permissions so that the JVM cannot access sensitive files

Generated by OpenCVE AI on August 20, 2026 at 20:39 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 20 Aug 2026 17:00:00 +0000

Type Values Removed Values Added
First Time appeared Jknack
Jknack handlebars.java
Vendors & Products Jknack
Jknack handlebars.java

Thu, 20 Aug 2026 15:00:00 +0000

Type Values Removed Values Added
Description 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.
Title Handlebars.java: Arbitrary file read in `SpringTemplateLoader` via URL-fragment suffix bypass
Weaknesses CWE-22
CWE-23
CWE-552
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N'}


Subscriptions

Jknack Handlebars.java
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-20T14:45:35.727Z

Reserved: 2026-07-16T21:49:52.068Z

Link: CVE-2026-63490

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-20T15:18:04.577

Modified: 2026-08-20T15:18:04.577

Link: CVE-2026-63490

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-20T20:45:04Z

Weaknesses
  • CWE-22

    Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

  • CWE-23

    Relative Path Traversal

  • CWE-552

    Files or Directories Accessible to External Parties