Skip to main content

Frappe ERPNext CVE-2025-66440

HIGH
SQL Injection (CWE-89)
2025-12-15 cve@mitre.org
8.8
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with low-privilege ERPNext account
  2. Exploit
    Submit SQL payload in to_posting_date parameter
  3. Execution
    Trigger injection in get_outstanding_reference_documents query
  4. Impact
    Exfiltrate arbitrary database records

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Persistence

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated ERPNext session with access to the payment-entry functionality that calls get_outstanding_reference_documents() (consistent with PR:L); the attacker injects SQL through the to_posting_date parameter, which is interpolated into the query without parameter binding. No special or non-default configuration, plugin, or user interaction is needed, and the flaw affects default installations of Frappe ERPNext through version 15.89.0. The primary limiting factor is the authentication requirement - a valid low-privilege account is necessary, so fully unauthenticated exploitation is not indicated; exposure is therefore highest in multi-tenant, self-service, or internet-facing deployments where low-privilege accounts are easy to obtain.

Impact

This is a genuine, actionable priority rather than an inflated high-CVSS artifact. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, base 8.8) describes a network-reachable, low-complexity SQL injection (CWE-89) requiring only a low-privilege authenticated session and no user interaction - a profile that is reliably exploitable once an attacker has any valid ERPNext account. The input reports POC=YES with a public write-up (iamanc.github.io), which materially raises real-world risk because a working technique is documented; however, the CVE is NOT listed in CISA KEV and no EPSS probability or SSVC decision data was supplied in the input, so there is no evidence of active, widespread exploitation at this time - only that exploit code is public. The one signal tension worth flagging: the description frames the impact as data extraction ('extract arbitrary data from the database'), which cleanly supports C:H, whereas the I:H/A:H ratings assume the injection point also permits writes or destructive/stacked queries - plausible for SQLi but not explicitly demonstrated in the provided description, so integrity/availability impact should be verified against the actual query context. Net: treat as a high-priority patch for any internet-exposed or multi-tenant ERPNext deployment, driven by low attack complexity plus public POC, while recognizing active exploitation is not confirmed.

Exploit ScenarioDerived

An attacker with any low-privilege authenticated ERPNext account (or a user who compromises such credentials) invokes the payment-entry workflow and supplies a crafted SQL payload in the to_posting_date parameter, which is interpolated directly into the backend query. Because a public proof-of-concept write-up exists, the attacker can follow a known technique to dump sensitive accounting, customer, and credential data from the database. The low attack complexity (AC:L) and network vector (AV:N) make this reliable against any reachable instance once authenticated.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 14, 2026

Authenticated SQL injection in Frappe ERPNext through 15.89.0 allows low-privilege users to extract arbitrary database contents via the to_posting_date parameter in get_outstanding_reference_documents(). Publicly available exploit code exists, though no active exploitation is confirmed (CISA KEV not indicated). The flaw requires authentication (PR:L) but no special configuration, making it a significant risk for multi-tenant or internet-facing deployments where low-privilege accounts are common.

RemediationAI

No vendor-released patch is referenced in the provided intelligence; monitor the vendor security page (https://github.com/frappe/frappe/security) for a patched version. Until a fix is available, apply compensating controls: restrict access to the payment entry functionality to trusted users and enforce least privilege to limit the pool of authenticated accounts that can exploit the flaw. Deploy web application firewall (WAF) rules to detect and block SQL injection patterns in the to_posting_date parameter, though this may have false positives and requires tuning. Monitor database logs for anomalous queries originating from the payment entry module. Additionally, review user roles and permissions to ensure that only necessary personnel have access to the vulnerable function. In multi-tenant or internet-facing deployments, consider additional network segmentation and authentication hardening to reduce exposure.

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 ERPNext is an open-source enterprise resource planning platform. The vulnerability resides in the get_outstanding_reference_documents() function within erpnext/accounts/doctype/payment_entry/payment_entry.py, where the to_posting_date parameter is directly interpolated into an SQL query without parameter binding or sanitization (CWE-89). This allows an authenticated attacker with access to the payment entry functionality to inject arbitrary SQL payloads, potentially exfiltrating sensitive data from the database. The CVSS vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) indicates network exploitable, low complexity, requiring low privileges, no user interaction, and high impact on confidentiality, integrity, and availability. The CPE entry cpe:2.3:a:frappe:erpnext:*:*:*:*:*:*:*:* confirms that all versions up to and including 15.89.0 are affected.

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

NVD PRIMARY 8.8 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

Network-reachable endpoint (AV:N) with no mitigating conditions (AC:L) needs a low-privilege authenticated account (PR:L); SQLi enables full data read and plausibly write/destructive queries, so C/I/A:H.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

DescriptionNVD

An issue was discovered in Frappe ERPNext through 15.89.0. Function get_outstanding_reference_documents() at erpnext/accounts/doctype/payment_entry/payment_entry.py is vulnerable to SQL Injection. It allows an attacker to extract arbitrary data from the database by injecting SQL payloads via the to_posting_date parameter, which is directly interpolated into the query without proper sanitization or parameter binding.

Executive ViewAI

Why It Matters

Frappe ERPNext deployments through 15.89.0 are affected by a high-severity authenticated SQL injection that allows low-privilege users to read arbitrary database contents. Publicly available exploit code exists, and no vendor-released patch identified at time of analysis, so internet-facing or multi-tenant instances could expose financial, customer, and operational data. Leadership should treat this as a priority data-disclosure risk and authorize interim controls while a fix is developed.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations include restricting network access to affected ERPNext instances, enforcing MFA and least privilege, deploying WAF/IPS virtual patching for the to_posting_date parameter, limiting database permissions, rotating credentials, and monitoring for anomalous SQL queries.

Threat Intelligence Overview

EPSS Score
0.4%
Top 70% exploitable
Prevalence
Medium
popular open-source ERP, common in SMBs but not ubiquitous enterprise-wide
Exploit
POC
Public exploit code exists
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

64
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

Affected Products (CPE)NVD

cpe:2.3:a:frappe:erpnext:*:*:*:*:*:*:*:*

More in Frappe

View all
CVE-2025-67289 CRITICAL POC
9.6 Dec 22

Stored cross-site scripting leading to code execution in Frappe Framework 15.89.0 (and the ERPNext application built on

CVE-2018-3885 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2018-3884 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2018-3883 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2018-3882 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2025-66439 HIGH POC
8.8 Dec 15

SQL injection in Frappe ERPNext through 15.89.0 lets an authenticated attacker with a valid session and access to the Pa

CVE-2025-66437 HIGH POC
8.8 Dec 15

Authenticated server-side template injection in Frappe ERPNext through 15.89.0 lets a user who can create or modify an A

CVE-2020-6145 HIGH POC
8.8 Aug 10

An SQL injection vulnerability exists in the frappe.desk.reportview.get functionality of ERPNext 11.1.38. Rated high sev

CVE-2026-39352 HIGH POC
8.7 May 20

Arbitrary file read in the Frappe full-stack web application framework allows remote unauthenticated attackers to retrie

CVE-2025-10655 HIGH POC
8.6 Dec 09

SQL injection in Frappe HelpDesk 1.14.0 dashboard functionality allows authenticated attackers to execute arbitrary SQL

CVE-2025-52042 HIGH POC
8.2 Oct 01

In Frappe ERPNext 15.57.5, the function get_rfq_containing_supplier() at erpnext/buying/doctype/request_for_quotation/re

CVE-2025-52041 HIGH POC
8.2 Oct 01

In Frappe ERPNext 15.57.5, the function get_stock_balance_for() at erpnext/stock/doctype/stock_reconciliation/stock_reco

References

Advisories & patches

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy