CVE-2026-33938: handlebars.js · Code Injection
Affects handlebars.jsSource CVE Database V5
Not known to be exploited · CVSS 8.1 High : upgrade to 4.7.9 soon.
Data as of 30 Oct 2026, 11:52 UTC
- EPSS
- 0.7% chance of exploitation in 30 days – higher than 53% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
- Patch
- Available – fixed in 4.7.9
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:HExploitation evidence
Disclosed: evidence found.
CVE published 27 Mar 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 30 Oct 2026.
What to do
Upgrade handlebars.js to 4.7.9.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| handlebars-langhandlebars.js | Affected
| Fixed in
|
npmhandlebarspkg:npm/handlebarsOther threats | Affected
| Fixed in– |
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
AI-suggested
An official fix is available in handlebars.js version 4.7.9. Users should upgrade to this version to remediate the vulnerability. If upgrading immediately is not possible, use the runtime-only build of handlebars.js which does not include the vulnerable compile() method. Additionally, audit all registered helpers to ensure they do not overwrite context data such as @partial-block with arbitrary values, and avoid registering third-party helpers in environments where templates or context data can be influenced by untrusted input.
Description
Handlebars provides the power necessary to let users build semantic templates. In versions 4.0.0 through 4.7.8, the `@partial-block` special variable is stored in the template data context and is reachable and mutable from within a template via helpers that accept arbitrary objects. When a helper overwrites `@partial-block` with a crafted Handlebars AST, a subsequent invocation of `{{> @partial-block}}` compiles and executes that AST, enabling arbitrary JavaScript execution on the server. Version 4.7.9 fixes the issue. Some workarounds are available. First, use the runtime-only build (`require('handlebars/runtime')`). The `compile()` method is absent, eliminating the vulnerable fallback path. Second, audit registered helpers for any that write arbitrary values to context objects. Helpers should treat context data as read-only. Third, avoid registering helpers from third-party packages (such as `handlebars-helpers`) in contexts where templates or context data can be influenced by untrusted input.
References
- github.com/handlebars-lang/handlebars.js/security/advisories/GHSA-3mfm-83xf-c92r (opens in a new tab)
- github.com/handlebars-lang/handlebars.js/commit/68d8df5a88e0a26fe9e6084c5c6aaebe67b07da2 (opens in a new tab)
- github.com/handlebars-lang/handlebars.js/releases/tag/v4.7.9 (opens in a new tab)
- access.redhat.com/security/cve/CVE-2026-33938 (opens in a new tab)
- bugzilla.redhat.com/show_bug.cgi?id=2452525 (opens in a new tab)
- security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-33938.json (opens in a new tab)
- access.redhat.com/errata/RHSA-2026:34342 (opens in a new tab)
- access.redhat.com/errata/RHSA-2026:10175 (opens in a new tab)