Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with operational role
-
DeliveryInject Jinja expression into statement fields
-
ExploitTrigger validation/email rendering
-
ExecutionTemplate engine evaluates with frappe.utils globals
-
PersistExecute arbitrary server-side code
-
ImpactRead data across application
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V1 - Encoding and Sanitization Template injection prevention
|
| Exploitation Conditions | Exploitation requires an authenticated ERPNext account with a common operational role that can create or edit Process Statement of Accounts records - the attacker must be able to write into the subject, body, or pdf_name fields of that specific doctype. Code executes when those fields are rendered, i.e. at document validation and when send_emails generates the statement, so the attacker needs the record to be validated/processed (which the standard statement workflow performs). Limiting factors: valid low-privilege credentials are mandatory (PR:L, so not remote-unauthenticated), and exploitation is confined to instances where users with access to this feature exist; the vulnerable pre-restrict_globals code path is present only in versions before 15.118.0 / 16.29.0. No user interaction from a victim and no non-default configuration is required. |
| Impact | All signals point to a genuine high priority rather than an inflated CVSS. The vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H describes network-reachable, low-complexity, no-user-interaction exploitation requiring only low privileges (PR:L) - consistent with the description's 'authenticated user with a common operational role.' The scope change (S:C) reflects that template code execution escapes the document context into the underlying server/application. SSTI leading to code execution is inherently reliable to weaponize, aligning with the RCE/SSTI tags. No EPSS score, KEV entry, or public POC was provided, so real-world exploitation is unconfirmed; the absence of KEV plus a fresh patch suggests no confirmed active exploitation yet, but the low bar to exploit warrants urgent remediation. The only meaningful barrier is that an attacker must first hold a valid low-privilege account with access to the Process Statement of Accounts doctype. |
| Exploit ScenarioDerived | An attacker holding a routine ERPNext operational account opens a Process Statement of Accounts record and enters a malicious Jinja expression (e.g., referencing frappe.utils) into the subject, body, or pdf_name field. When the record is validated or the statement email is generated and sent, the template engine evaluates the expression with unrestricted globals, executing the attacker's code on the ERPNext server. No public POC was provided, but SSTI of this form is straightforward to weaponize given AV:N/AC:L and no required user interaction. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 10, 2026
Server-side template injection in ERPNext's Process Statement of Accounts feature (versions prior to 15.118.0 and 16.29.0) lets an authenticated user with a common operational role inject Jinja template expressions into the subject, body, and pdf_name fields, which are rendered with unrestricted globals including frappe.utils, yielding arbitrary server-side code execution. Tagged RCE/SSTI (CWE-1336) and rated CVSS 9.9 with scope change; no public exploit identified at time of analysis, but the trivial exploitation path and low privilege requirement make this a high-priority patch.
RemediationAI
Upgrade to a fixed release: ERPNext 15.118.0 for the v15 branch or 16.29.0 for the v16 branch (Vendor-released patch: 15.118.0 / 16.29.0), which add restrict_globals=True to the validate_template and render_template calls in process_statement_of_accounts.py - see the advisory at https://github.com/frappe/erpnext/security/advisories/GHSA-qq49-v74j-hjh7 and PR https://github.com/frappe/erpnext/pull/56458 (commits 5f6952b, 88443e4, ecb6d48). If immediate upgrade is not possible, restrict which roles can create or edit Process Statement of Accounts records to trusted administrators only, and audit existing records' subject, body, and pdf_name fields for injected template expressions before scheduled emails run; the trade-off is that limiting the doctype's permissions may disrupt legitimate finance/operations users who rely on customized statement templates.
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
ERPNext is built on the Frappe framework, which uses Jinja templating via frappe.render_template and validates templates with validate_template. In the affected code path (erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py), these calls were invoked without the restrict_globals flag, so the template sandbox exposed the full set of Python globals, including the frappe.utils module. This is a classic CWE-1336 (Server-Side Template Injection / improper neutralization of special elements used in a template engine) issue: attacker-controlled document fields flow directly into the template engine, letting expression syntax reach code-execution primitives. The fix adds restrict_globals=True to both validate_template (at validate time) and frappe.render_template (in send_emails), constraining the accessible globals.
Know when Ssti 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
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network-reachable web app, low complexity, and only a common operational role (PR:L) with no user interaction; template code execution escapes document scope (S:C) giving full C/I/A impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
ERPNext is a free and open source Enterprise Resource Planning tool. Prior to 15.118.0 and 16.29.0, the validate_template and render_template calls in erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py render subject, body, and pdf_name fields with unrestricted globals including frappe.utils, allowing an authenticated user with a common operational role to inject template expressions, execute arbitrary server-side code, and read data across the application. This issue is fixed in versions 15.118.0 and 16.29.0.
Executive ViewAI
ERPNext versions prior to 15.118.0 and 16.29.0 contain a critical remote code execution vulnerability in the Process Statement of Accounts feature that allows authenticated operational users to execute arbitrary code on the server. Any organization running affected ERPNext versions faces immediate risk of complete server compromise and data exfiltration. Leadership should prioritize emergency access restrictions and upgrade planning to prevent exploitation.
Until patched versions of ERPNext can be deployed: (1) immediately revoke user access to the Process Statement of Accounts feature for all non-administrator roles; (2) implement network detection rules and WAF policies blocking requests containing Jinja template syntax (e.g., '{{', '{%', 'frappe.utils') to this API endpoint; (3) enable and alert on comprehensive API request logging for this feature; (4) implement network segmentation to isolate ERPNext application servers and limit lateral movement if RCE occurs; (5) establish continuous monitoring for abnormal process execution, network connections, and credential usage on affected servers.
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
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Rejetto HTTP File Server, up to and including version 2.3m, is vulnerable to a template injection vulnerability. Rated c
Invision Community 5.0.0 through 5.0.6 contains an unauthenticated remote code execution vulnerability in the template e
Remote code execution in the WPML WordPress multilingual plugin (versions up to and including 4.6.12) allows Contributor
Server-side template injection in Adobe Commerce, Adobe Commerce B2B, and Magento Open Source allows remote unauthentica
Server-Side Template Injection in OpenCTI notifier templates allows privileged administrators with 'Manage customization
Unauthenticated remote code execution in Rejetto HFS2 (HTTP File Server) through version 2.4.0 lets an attacker execute
Tandoor Recipes is an application for managing recipes, planning meals, and building shopping lists. Rated critical seve
changedetection.io is an open source web page change detection, website watcher, restock monitor and notification servic
A server side template injection vulnerability in CrushFTP in all versions before 10.7.1 and 11.1.0 on all platforms all
Remote code execution in WGDashboard 4.3.2 and earlier lets authenticated attackers inject Server-Side Template Injectio
Gibbon through 26.0.00 allows /modules/School%20Admin/messengerSettings.php Server Side Template Injection leading to Re
Server-side template injection in the TYPO3 'Powermail' extension lets an anonymous user submit Fluid template syntax th
EUVD-2026-55833
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB