Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with low-privilege Frappe account
-
DeliveryAccess render_jinja_template endpoint
-
ExploitSubmit crafted Jinja template with db.sql() call
-
ExecutionServer renders template executing arbitrary SELECT
-
PersistExtract password hashes from __Auth table
-
ImpactCrack hashes offline for privilege escalation
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a valid Frappe user account with print permission on at least one document - a standard, commonly assigned permission in Frappe and ERPNext deployments. The render_jinja_template endpoint in print_format_generator.py must be accessible over the network. The flaw is specifically scoped to development builds of Frappe Framework; organizations on stable production releases may not be affected and should verify their build type. What limits exploitation: the attacker must have a legitimate authenticated account (PR:L, ruling out unauthenticated remote exploitation); the Jinja execution context permits only SELECT queries and not data modification, confining impact to confidentiality; and if print permissions are restricted to a small set of trusted users, the exposed attacker population shrinks significantly. No non-default configuration is required - any deployment with at least one low-privileged user holding print permission on a development build is vulnerable. |
| Impact | The CVSS 4.0 score of 7.1 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N) accurately reflects the risk profile: network-accessible, no interaction required, high confidentiality impact, but restricted to authenticated low-privilege users. The most significant real-world consequence is password hash exfiltration from the __Auth table, which can enable offline cracking and full account takeover chains affecting all users in the system. Print permission is a common baseline privilege in Frappe/ERPNext deployments, so the effective attacker population is larger than a high-privilege-required flaw would imply. Critically, the description limits exposure to development builds - organizations running stable tagged releases should verify whether their version is affected before elevating response priority. EPSS data is absent from available intelligence; the vulnerability is not listed in CISA KEV and no public POC has been confirmed, so widespread opportunistic exploitation is not currently evidenced. The impact is confidentiality-only (read-only SQL), which bounds the blast radius - an attacker cannot modify or destroy data through this vector alone. |
| Exploit ScenarioDerived | An attacker with a standard Frappe user account possessing print permission on any document directly calls the render_jinja_template endpoint and submits a crafted Jinja template string invoking frappe.db.sql() or equivalent database helpers against the __Auth table. The server renders the template and returns password hashes for all Frappe users in the response, which the attacker can then attempt to crack offline using tools such as hashcat to escalate to administrator access. No public POC has been identified at the time of analysis, but the attack requires no special tooling beyond knowledge of Frappe's Jinja context. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAI
Incorrect authorization in Frappe Framework development builds allows any authenticated low-privileged user holding print permission on a document to supply raw Jinja template strings to the render_jinja_template endpoint, bypassing the intended System Manager restriction. The template engine executes these strings server-side, enabling arbitrary SELECT queries across unrelated database tables - critically including extraction of password hashes from the __Auth table. No public exploit has been identified at the time of analysis, but the attack is mechanically straightforward for any user with a valid Frappe account and default print permissions, making credential theft the primary real-world risk.
RemediationAI
The upstream fix is available via GitHub PR #40710 (https://github.com/frappe/frappe/pull/40710) and commit 37d2eb59790633da01c741b950cc00ca3558c494, which adds frappe.only_for('System Manager') to the render_jinja_template endpoint. This is a patch at the commit/PR level; a tagged stable release incorporating this fix has not been independently confirmed from available data. Organizations running Frappe development builds should apply the upstream commit directly or pin to a version that includes it once a tagged release is confirmed. As an immediate workaround, administrators should audit and restrict print permissions to only trusted users, reducing the effective attacker population; note this does not eliminate the vulnerability if any untrusted user retains print permission. Additionally, restricting network access to the Frappe application to trusted internal segments reduces exposure to external attackers but does not protect against insider threats. The VulnCheck advisory at https://www.vulncheck.com/advisories/frappe-framework-development-branch-incorrect-authorization-via-jinja-template-preview-endpoint should be monitored for updates on a patched release version.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Frappe Framework is a Python-based full-stack web framework that powers ERPNext and other business applications. The vulnerable code resides in frappe/utils/print_format_generator.py, which exposes the render_jinja_template endpoint for previewing Jinja-templated print formats. The root cause is CWE-863 (Incorrect Authorization): the endpoint failed to gate access to the System Manager role, allowing any low-privileged user to pass arbitrary template strings directly to Jinja2's rendering engine. Because Frappe's Jinja sandbox grants access to framework database helpers, an attacker can embed calls such as frappe.db.sql() within a template to execute arbitrary SELECT statements. The CPE cpe:2.3:a:frappe:frappe:*:*:*:*:*:*:*:* spans all versions but the description specifically scopes the issue to development builds. The upstream fix, visible in PR #40710 and commit 37d2eb59790633da01c741b950cc00ca3558c494, adds a single frappe.only_for('System Manager') guard at the top of the endpoint.
Know when Frappe 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:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Low-privilege authenticated account required (PR:L) over network; read-only SQL means no integrity or availability impact; high confidentiality from password hash exposure.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Frappe Framework development builds contain an authorization flaw in the render_jinja_template endpoint that allows low-privileged users to render arbitrary Jinja templates by supplying raw template strings. Attackers with print permission on any document can execute arbitrary SELECT statements against unrelated tables, including reading password hashes from the __Auth table.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Stored cross-site scripting leading to code execution in Frappe Framework 15.89.0 (and the ERPNext application built on
An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS
An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS
An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS
An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS
Authenticated SQL injection in Frappe ERPNext through 15.89.0 allows low-privilege users to extract arbitrary database c
SQL injection in Frappe ERPNext through 15.89.0 lets an authenticated attacker with a valid session and access to the Pa
Authenticated server-side template injection in Frappe ERPNext through 15.89.0 lets a user who can create or modify an A
An SQL injection vulnerability exists in the frappe.desk.reportview.get functionality of ERPNext 11.1.38. Rated high sev
Arbitrary file read in the Frappe full-stack web application framework allows remote unauthenticated attackers to retrie
SQL injection in Frappe HelpDesk 1.14.0 dashboard functionality allows authenticated attackers to execute arbitrary SQL
In Frappe ERPNext 15.57.5, the function get_rfq_containing_supplier() at erpnext/buying/doctype/request_for_quotation/re
EUVD-2026-68202
GHSA-p8qq-rm8q-85j9
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB