Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply attacker-controlled Handlebars template
-
DeliveryCraft bracketed path segment in helper/block argument
-
ExploitBreak out of generated resolve() string literal
-
ExecutionExecute injected Python in application process
-
ImpactFull application/host compromise
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The application must compile a Handlebars template whose SOURCE is attacker-influenced - specifically a helper or block argument containing a crafted bracketed path segment - not merely render untrusted data through a trusted template. This is the concrete prerequisite: control over template text reaching pybars4's compiler. LIMITING FACTORS: in the typical configuration where templates are static and developer-authored, untrusted input never reaches the compiler and the flaw is not reachable; the CVSS AC:H/AT:P indicates the trigger is not satisfied by default inputs. Affected: pybars4 through 0.9.13; the available sources do not state a fixed version. No authentication is modelled (PR:N), but the trust-boundary requirement, not auth, is the real gate. |
| Impact | Signals conflict, and the gap between them is the whole story. The CVSS 4.0 base score of 9.2 (Critical) reflects full confidentiality/integrity/availability loss on the vulnerable system (VC:H/VI:H/VA:H) via a network vector with no privileges or user interaction (AV:N/PR:N/UI:N), which reads as a top-priority RCE. But the same vector carries AC:H and AT:P, signalling that non-trivial attack requirements must be met, and the vuln.today Decision label is 'monitor' - the lowest urgency tier - not act_now or emergency. CISA KEV status is not indicated (treat as not listed), no EPSS probability was supplied, and no exploit is confirmed as weaponized; the references are advisories (VulnCheck and a third-party write-up) describing the mechanism rather than a verified working exploit. The decisive, undetermined variable is trust boundary: the flaw only matters if the application compiles attacker-controlled Handlebars template SOURCE (not merely untrusted data rendered through a trusted template). In the common deployment where templates are developer-authored and static, real-world risk is low despite the Critical score; where an app accepts user-supplied templates, this is effectively server-side template injection yielding code execution and should be treated as high priority. Net: high CVSS, but real priority is 'monitor' pending confirmation of whether your deployment exposes template source to untrusted input. |
| Exploit ScenarioDerived | An application uses pybars4 (≤0.9.13) and compiles Handlebars template strings that originate, in whole or part, from an untrusted source (e.g. a user-customisable report or email template). The attacker submits a template containing a crafted bracketed path segment inside a helper or block argument that breaks out of the generated resolve() string literal, so when the template is compiled the injected Python executes in the application process. VulnCheck and a third-party advisory describe the technique, but no exploit is confirmed as verified working code at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Code injection in pybars4 through 0.9.13 lets an attacker who controls the source text of a Handlebars template execute Python in the application process, because crafted bracketed path segments in a helper or block argument are not escaped when the compiler emits its resolve() string literal. The supplied CVSS 4.0 score is 9.2, but the independent assessment treats exploitation as gated by template-source control rather than merely untrusted rendered data; static, developer-authored templates do not satisfy that prerequisite. KEV status is not indicated in the supplied data, no public exploit identified at time of analysis, and the vuln.today priority label is monitor.
RemediationAI
No vendor-released patch or fixed version is identified in the available sources for pybars4 through 0.9.13; verify the current status at the upstream repository (https://github.com/up9inc/pybars4) and the VulnCheck advisory (https://www.vulncheck.com/advisories/pybars4-through-0.9.13-code-injection-via-bracketed-path-segments) before upgrading. Until a fixed release is confirmed, prevent attacker-controlled template source from reaching pybars4's compiler: keep Handlebars templates static and developer-authored, and do not compile user-supplied templates or user-editable helper or block argument path segments. The trade-off is loss of user-customizable or dynamically supplied templates; rendering untrusted data through a trusted template does not satisfy the prerequisite described in the assessment. If dynamic templates are a business requirement, run template compilation in a separate process or container without sensitive credentials or filesystem access, accepting the added operational complexity.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
pybars4 is a Python implementation of Handlebars, and pybars/_compiler.py translates template constructs into generated Python source. The flaw is CWE-94 code injection: bracketed path segments used in helper or block arguments are inserted into a generated resolve() string literal without escaping, so a crafted segment can terminate the literal and inject Python statements. The affected CPE is cpe:2.3:a:up9inc:pybars4:*:*:*:*:*:*:*:*, with the issue described through release 0.9.13; the cited vulnerable code is pybars/_compiler.py lines 153-154. The assessed vector is AV:N/AC:H/PR:N/UI:N, so no authentication is modelled, but the practical gate is control of template source text reaching the compiler, not rendering attacker data through a trusted template. In a deployment with only static developer-authored templates, attacker-controlled input does not reach the vulnerable compiler path; the AC:H/AT:P metrics reflect that prerequisite. The available sources do not state a fixed version.
Know when Pybars4 gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Network-reachable code injection with no auth or UI (AV:N/PR:N/UI:N) but requiring the app to compile attacker-controlled template source, an uncommon condition (AC:H); code runs in-process so S:U with full C/I/A.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
pybars4 through 0.9.13 contains a code injection vulnerability in pybars/_compiler.py that allows attackers to execute Python code via unescaped bracketed path segments in Handlebars templates. Attackers can supply a template with a crafted segment in a helper or block argument to break out of the generated resolve() string literal and execute code in the application process.
Articles & Coverage 1
Executive ViewAI
CVE-2026-119717 is a critical code injection flaw in pybars4 (versions through 0.9.13) that allows Python code execution if an attacker can control the source of a Handlebars template. This means teams using pybars4 to process externally sourced templates could face full application compromise. Leadership should prioritize identifying and mitigating this risk, especially where user-supplied or third-party templates are involved.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict template source to trusted developers only, validate and sanitize templates to disallow bracketed path segments, run template compilation in a sandboxed environment with minimal privileges, and consider migrating to an alternative templating engine.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
EUVD-2026-114122
GHSA-x54v-7mw2-5rrx
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB