Skip to content

CVE-2026-33940

Code Injection: is CVE-2026-33940real, exploitable, or a false positive? Here's the community verdict.

signals

public sources

Exploited in wild
Not listed
CISA KEV
Public exploit
None known
Metasploit/EDB/PoC
Base severity
8.1 High
CVSS
Exploitation prob.
0.7%
FIRST EPSS
Weakness
CWE-94 · Code Injection
CWE

High CVSS base score, but low real-world exploitation probability (EPSS). Likely less urgent than the score implies.

baseline read

auto · not a community verdict

Real, but low real-world risk

A genuine vulnerability on paper, but EPSS shows little real-world exploitation — the base score may overstate urgency. This is not the same as a false positive.

Based on CVSS · FIRST EPSS

Confirm or dispute →
Affected:Handlebarsjs

CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

Handlebars provides the power necessary to let users build semantic templates. In versions 4.0.0 through 4.7.8, a crafted object placed in the template context can bypass all conditional guards in `resolvePartial()` and cause `invokePartial()` to return `undefined`. The Handlebars runtime then treats the unresolved partial as a source that needs to be compiled, passing the crafted object to `env.compile()`. Because the object is a valid Handlebars AST containing injected code, the generated JavaScript executes arbitrary commands on the server. The attack requires the adversary to control a value that can be returned by a dynamic partial lookup. Version 4.7.9 fixes the issue. Some workarounds are available. First, use the runtime-only build (`require('handlebars/runtime')`). Without `compile()`, the fallback compilation path in `invokePartial` is unreachable. Second, sanitize context data before rendering: Ensure no value in the context is a non-primitive object that could be passed to a dynamic partial. Third, avoid dynamic partial lookups (`{{> (lookup ...)}}`) when context data is user-controlled.

Published

Embed this verdict
TruePositive verdict for CVE-2026-33940
Markdown
[![TruePositive verdict](https://www.truepositive.app/cve/CVE-2026-33940/badge.svg)](https://www.truepositive.app/cve/CVE-2026-33940)
HTML
<a href="https://www.truepositive.app/cve/CVE-2026-33940"><img src="https://www.truepositive.app/cve/CVE-2026-33940/badge.svg" alt="TruePositive verdict for CVE-2026-33940"></a>

Live badge that updates automatically as the community verdict changes.

Community ground truth

Be the first practitioner to weigh in

So far this is only TruePositive's editorial baseline from public sources. Add your real-world verdict below — it becomes the signal the next person triaging this relies on.

🥇 The first 50 practitioners to contribute earn a Founding Contributor badge.

In your experience, is this finding real and exploitable?

0 verdicts
Not a real issue

No account needed. Anonymous verdicts post as an unverified signal. Log in to make yours verified and earn reputation.

Field notes & remediation

Verdicts are the quick signal. Notes are the evidence and fixes behind them.

No notes yet. Be the first to share what you saw, or a fix that worked.

    Add a field note or remediationoptional
    Note type

    What are you adding?

    Markdown supported · minimum 20 characters.

    Same weakness: CWE-94 · Code Injection.