CVE-2026-33916 | Handlebars.js has Prototype Pollution Leading to XSS through Partial Template Injection

Exp

Handlebars provides the power necessary to let users build semantic templates. In versions 4.0.0 through 4.7.8, `resolvePartial()` in the Handlebars runtime resolves partial names via a plain property lookup on `options.partials` without guarding against prototype-chain traversal. When `Object.prototype` has been polluted with a string value whose key matches a partial reference in a template, the polluted string is used as the partial body and rendered without HTML escaping, resulting in reflected or stored XSS. Version 4.7.9 fixes the issue. Some workarounds are available. Apply `Object.freeze(Object.prototype)` early in application startup to prevent prototype pollution. Note: this may break other libraries, and/or use the Handlebars runtime-only build (`handlebars/runtime`), which does not compile templates and reduces the attack surface.

Published: 2026-03-27 Last update: 2026-03-31 Assigner: [email protected] Source: [email protected]

Conclusion & alert: CVE-2026-33916 is rated Exploit Available (50/100): CVSS Medium severity, with low exploitation likelihood (EPSS 0.06%). Core evidence: 1 public exploit reference(s) are indexed (Exploit-DB). Mandatory action: Public exploits are available—assess exposure, apply mitigations, and prioritize patching.

Risk is dynamic; we continuously reassess and refresh what is shown on this page as upstream context changes.

Public exploit references (Exploit-DB) for CVE-2026-33916

EDB-ID Source Kind Published Link
nvd_ref exploit_tag Exploit-DB ↗

Exploit prediction scoring system (EPSS) score for CVE-2026-33916

EPSS lead: Daily EPSS estimates relative likelihood of exploitation; percentile ranks this CVE among scored vulnerabilities (higher = more severe relative rank).

# Date Old EPSS score New EPSS score Delta (New - Old)
1 2026-05-08 0.03% 0.06% +0.03%
2 2026-03-28 0.03%

Full EPSS history (2 records total)

Common vulnerability scoring system (CVSS) metrics for CVE-2026-33916

CVSS metrics for this CVE.

Base score Version Severity Vector Exploitability Impact Score source
4.7 3.1 MEDIUM
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network—not just someone sitting at the machine.
Attack complexity (AC:H)
Even with access, the exploit needs extra luck, timing, or a fussy environment to actually work.
Privileges required (PR:N)
No account or special rights needed—anonymous or random user is enough.
User interaction (UI:R)
A real person has to do something—click, install, enable—otherwise it doesn’t land.
Scope (S:C)
Breaking this can reach past the original component and bite other resources—bigger blast radius.
Confidentiality (C:L)
Some sensitive info could get out, but not a total data dump.
Integrity (I:L)
Attackers could change some data, but it’s limited—not everything goes.
Availability (A:N)
Service keeps running; no real outage angle.
1.6 2.7 [email protected]
4.7 3.1 MEDIUM
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network—not just someone sitting at the machine.
Attack complexity (AC:H)
Even with access, the exploit needs extra luck, timing, or a fussy environment to actually work.
Privileges required (PR:N)
No account or special rights needed—anonymous or random user is enough.
User interaction (UI:R)
A real person has to do something—click, install, enable—otherwise it doesn’t land.
Scope (S:C)
Breaking this can reach past the original component and bite other resources—bigger blast radius.
Confidentiality (C:L)
Some sensitive info could get out, but not a total data dump.
Integrity (I:L)
Attackers could change some data, but it’s limited—not everything goes.
Availability (A:N)
Service keeps running; no real outage angle.
1.6 2.7 [email protected]

Weakness enumeration for CVE-2026-33916

GitHub Security Advisory for CVE-2026-33916

GHSA-2qvq-rjwj-gvw9 · Severity: medium · Ecosystem: npm — Handlebars.js has Prototype Pollution Leading to XSS through Partial Template Injection

OS Trackers for CVE-2026-33916

vendor priority summary link
debian not yet assigned CVE-2026-33916 not yet assigned priority: Debian including 1 source packages (node-handlebars), 5 status rows across 5 suites (bookworm, bullseye, forky, sid, trixie): open 3, resolved 2. https://security-tracker.debian.org/tracker/CVE-2026-33916
redhat medium https://access.redhat.com/security/cve/CVE-2026-33916
ubuntu medium CVE-2026-33916 medium priority: Ubuntu including 1 source packages (node-handlebars), 6 status rows across 6 suites (bionic, focal, jammy, noble, questing, upstream): needs-triage 5, released 1. https://ubuntu.com/security/CVE-2026-33916

Affected software / configurations for CVE-2026-33916

Vendor Product Version Raw CPE
handlebarsjs handlebars >= 4.0.0, < 4.7.9 cpe:2.3:a:handlebarsjs:handlebars:*:*:*:*:*:node.js:*:*

References for CVE-2026-33916

cvelogic Threat Intelligence