Description
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.
References7
- github.com/frappe/erpnext/commit/5f6952b15c1f6ee893770d5bc61855…
- github.com/frappe/erpnext/commit/88443e4a97c6c0a40d85a9e6785577…
- github.com/frappe/erpnext/commit/ecb6d48ec025e0c94abac35b2e4f76…
- github.com/frappe/erpnext/pull/56458
- github.com/frappe/erpnext/releases/tag/v15.118.0
- github.com/frappe/erpnext/releases/tag/v16.29.0
- github.com/frappe/erpnext/security/advisories/GHSA-qq49-v74j-hj…
Metrics
- CVSS 3.1
-
9.9
CRITICAL
Score source: CNA
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H - EPSS — exploit probability
- 1% percentile: 54 · as of 12 November 2026
- CWE
- CWE-1336
Could this be exploited in your environment?
A patch closes the known hole. A penetration test shows what an attacker can still reach — with proof.