Description
Handlebars provides the power necessary to let users build semantic templates. In versions 4.0.0 through 4.7.8, the Handlebars CLI precompiler (`bin/handlebars` / `lib/precompiler.js`) concatenates user-controlled strings — template file names and several CLI options — directly into the JavaScript it emits, without any escaping or sanitization. An attacker who can influence template filenames or CLI arguments can inject arbitrary JavaScript that executes when the generated bundle is loaded in Node.js or a browser. Version 4.7.9 fixes the issue. Some workarounds are available. First, validate all CLI inputs before invoking the precompiler. Reject filenames and option values that contain characters with JavaScript string-escaping significance (`"`, `'`, `;`, etc.). Second, use a fixed, trusted namespace string passed via a configuration file rather than command-line arguments in automated pipelines. Third, run the precompiler in a sandboxed environment (container with no write access to sensitive paths) to limit the impact of successful exploitation. Fourth, audit template filenames in any repository or package that is consumed by an automated build pipeline.
Published: 2026-03-27
Score: 8.3 High
EPSS: < 1% Very Low
KEV: No
Impact: JavaScript Injection via the Handlebars CLI precompiler
Action: Update Immediately
AI Analysis

Impact

The vulnerability allows an attacker who can influence Handlebars template filenames or command‑line options to inject arbitrary JavaScript into the bundle generated by the CLI precompiler. The undersanitized concatenation of user‑controlled strings into the emitted code creates a classic code‑injection flaw that can execute when the bundle is loaded in Node.js or a browser. This enables remote code execution and compromises confidentiality, integrity, and availability of the runtime environment.

Affected Systems

Versions of Handlebars.js from 4.0.0 up to and including 4.7.8 are affected when the CLI precompiler is used. The problem is tied to the CLI tool bin/handlebars and its underlying precompiler script. The issue affects all platforms where Node.js is used to compile templates, as well as browsers that load the generated bundle. Handlebars‑lang:handlebars.js is the vendor, and the Fix appears in release 4.7.9.

Risk and Exploitability

The CVSS score of 8.3 indicates a high‑severity vulnerability. EPSS is reported as below 1 % and the issue is not listed in CISA’s KEV catalog, which suggests limited automated exploitation data at present. The likely attack vector derives from a user running the Handlebars CLI with crafted template filenames or options, a scenario common in automated build pipelines or local development. If an attacker can control the precompile step, they can inject executable JavaScript, which then runs with the privileges of the process loading the bundle.

Generated by OpenCVE AI on March 31, 2026 at 19:41 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Handlebars.js to version 4.7.9 or later.
  • Validate all CLI input before invoking the precompiler.
  • Reject filenames or option values that contain characters with JavaScript string‑escaping significance such as "', ;, and backslashes.
  • Configure a trusted namespace string via an external configuration file instead of passing it on the command line.
  • Execute the precompiler in a sandboxed container without write access to sensitive paths.
  • Audit template filenames in repositories or packages that are consumed by automated build pipelines.

Generated by OpenCVE AI on March 31, 2026 at 19:41 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-xjpj-3mr7-gcpf Handlebars.js has JavaScript Injection in CLI Precompiler via Unescaped Names and Options
History

Tue, 31 Mar 2026 18:00:00 +0000

Type Values Removed Values Added
CPEs cpe:2.3:a:handlebarsjs:handlebars:*:*:*:*:*:node.js:*:*

Tue, 31 Mar 2026 15:15:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Mon, 30 Mar 2026 08:15:00 +0000

Type Values Removed Values Added
First Time appeared Handlebarsjs
Handlebarsjs handlebars
Vendors & Products Handlebarsjs
Handlebarsjs handlebars

Sat, 28 Mar 2026 12:15:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Important


Sat, 28 Mar 2026 03:15:00 +0000

Type Values Removed Values Added
Description Handlebars provides the power necessary to let users build semantic templates. In versions 4.0.0 through 4.7.8, the Handlebars CLI precompiler (`bin/handlebars` / `lib/precompiler.js`) concatenates user-controlled strings — template file names and several CLI options — directly into the JavaScript it emits, without any escaping or sanitization. An attacker who can influence template filenames or CLI arguments can inject arbitrary JavaScript that executes when the generated bundle is loaded in Node.js or a browser. Version 4.7.9 fixes the issue. Some workarounds are available. First, validate all CLI inputs before invoking the precompiler. Reject filenames and option values that contain characters with JavaScript string-escaping significance (`"`, `'`, `;`, etc.). Second, use a fixed, trusted namespace string passed via a configuration file rather than command-line arguments in automated pipelines. Third, run the precompiler in a sandboxed environment (container with no write access to sensitive paths) to limit the impact of successful exploitation. Fourth, audit template filenames in any repository or package that is consumed by an automated build pipeline.
Title Handlebars.js has JavaScript Injection in CLI Precompiler via Unescaped Names and Options
Weaknesses CWE-116
CWE-79
CWE-94
References
Metrics cvssV3_1

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


Subscriptions

Handlebarsjs Handlebars
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-04-01T03:55:37.742Z

Reserved: 2026-03-24T19:50:52.104Z

Link: CVE-2026-33941

cve-icon Vulnrichment

Updated: 2026-03-31T14:24:29.904Z

cve-icon NVD

Status : Analyzed

Published: 2026-03-27T22:16:21.203

Modified: 2026-03-31T17:53:18.770

Link: CVE-2026-33941

cve-icon Redhat

Severity : Important

Publid Date: 2026-03-27T21:13:15Z

Links: CVE-2026-33941 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-03-31T20:00:38Z

Weaknesses