Skip to main content
VulnerabilityPublished Updated

CVE-2026-33937: handlebars.js · Type Confusion

Affects handlebars.jsSource CVE Database V5

0
Compare

Not known to be exploited · CVSS 9.8 Critical : upgrade to 4.7.9 as a priority.

Data as of 30 Oct 2026, 11:52 UTC

CVSS 3.1 base score
9.8Critical
How severe the flaw is on the 0–10 CVSS scale.
EPSS
1.9% chance of exploitation in 30 days – higher than 79% 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:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 27 Mar 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponized: evidence found.

    Public exploit code: GitHub proofs of concept

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq 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), GitHub proofs of concept, the Metasploit, Exploit-DB and nuclei-templates index as of 30 Oct 2026.

What to do

Upgrade handlebars.js and handlebars to 4.7.9.

Affected software

ProductAffectedFixed in
handlebars-langhandlebars.jsAffected
  • >=4.0.0 <4.7.9
Fixed in
  • 4.7.9
npmhandlebarspkg:npm/handlebarsOther threatsAffected
  • >=4.0.0 <4.7.9
Fixed in
  • 4.7.9

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. Until upgrading, mitigate by validating input types before calling Handlebars.compile() to ensure the argument is always a string and not a deserialized object. Alternatively, use the Handlebars runtime-only build on the server if templates are pre-compiled at build time, which disables the compile() function and prevents exploitation.

Description

Handlebars provides the power necessary to let users build semantic templates. In versions 4.0.0 through 4.7.8, `Handlebars.compile()` accepts a pre-parsed AST object in addition to a template string. The `value` field of a `NumberLiteral` AST node is emitted directly into the generated JavaScript without quoting or sanitization. An attacker who can supply a crafted AST to `compile()` can therefore inject and execute arbitrary JavaScript, leading to Remote Code Execution on the server. Version 4.7.9 fixes the issue. Some workarounds are available. Validate input type before calling `Handlebars.compile()`; ensure the argument is always a `string`, never a plain object or JSON-deserialized value. Use the Handlebars runtime-only build (`handlebars/runtime`) on the server if templates are pre-compiled at build time; `compile()` will be unavailable.

References

Community reviews

Loading reviews…