Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with consent-gated API Key
-
DeliverySubmit document under valid human-minted submit marker
-
ExploitNest cancel riding the enclosing act's consent
-
ExecutionReach Document.cancel() on different submitted document
-
ImpactReverse target document's ledger effect
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 an authenticated credential holding an API Key with Scope.require_consent (a consent-gated grant) and a valid, human-minted submit marker from an enclosing governed act to ride; the attacker submits a caller-controlled Sales Invoice or other supported document and nests a cancel targeting a different pre-existing submitted document. Limiting factors: principals that have no consent-gated grant are explicitly not affected; a legitimate human must first mint the submit marker (UI:R), the attacker must already possess valid API credentials (PR:L), and only pacioli-guard versions 0.9.6 through just before 0.10.0 are vulnerable - 0.10.0 fixes the marker's document and act binding. |
| Impact | This is a medium-severity (CVSS 5.7) authorization flaw (CWE-863) whose signals are internally consistent and point to a limited, non-urgent priority. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:R confirms a network-reachable issue but with two real brakes: the attacker needs a valid authenticated credential (PR:L - specifically an API Key with Scope.require_consent) and must ride a legitimately human-minted submit marker (UI:R), so exploitation cannot proceed against a target with no outstanding consent-gated grant. Impact is integrity-only (C:N/I:H/A:N): the attacker can cancel a pre-existing submitted document and reverse its ledger effect, but cannot read data or deny service. No EPSS score, KEV listing, or public exploit was provided, so there is no public exploit identified at time of analysis and no evidence of active exploitation; these absences are expected for an obscure product rather than reassuring. Net: a genuine authorization bypass worth patching for the small population that runs pacioli-guard with consent-gated grants, but not a widespread or wormable threat. The signals do not conflict - the moderate CVSS, the PR:L/UI:R preconditions, and the lack of exploitation telemetry all align on 'targeted, low-volume risk.' |
| Exploit ScenarioDerived | An insider or compromised-but-legitimate automation account holding an API Key with Scope.require_consent submits a caller-controlled Sales Invoice (or other supported DocType) under a valid human-approved submit marker, then nests a cancel operation inside that governed act. Because the consent gate does not verify that the marker authorizes cancellation, the nested call reaches Document.cancel() against a different, pre-existing submitted document and reverses its ledger entry. No public exploit code is known, but the attack requires no special tooling - only an existing consent-gated credential and an in-flight submit marker to ride. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
pacioli-guard 0.9.6 fails to check that a consent marker actually authorizes a cancellation, so a nested Document.cancel() call can ride a valid human-minted submit marker belonging to an enclosing governed act and reverse the ledger effect of a different, caller-named pre-existing submitted document such as a Sales Invoice. The flaw is an incorrect-authorization defect (CWE-863) that bypasses the marker's document binding, act binding, single-use spend accounting, and denial audit, and it is reachable by an authenticated API-key credential holding Scope.require_consent (PR:L) only after a legitimate human has minted the enclosing submit marker (UI:R), which is why it rates a medium CVSS 5.7. Principals without a consent-gated grant are explicitly unaffected, and no public exploit has been identified at time of analysis - there is no CISA KEV listing for this CVE.
RemediationAI
Vendor-released patch: pacioli-guard 0.10.0 - upgrade to that version (release tag guard-v0.10.0) or later, which restores document and act binding on consent markers; the fix is carried in commit f3c7219f5dde6050bd7921e0ac55afd02771250c and described in advisory https://github.com/john-broadway/pacioli/security/advisories/GHSA-3hj7-6vmj-h8v4, which also documents the affected range and the 0.6.3-and-earlier allowlist defect. Until upgrading is possible, the most direct compensating control is to strip Scope.require_consent from API keys and refrain from issuing consent-gated grants to any principal that does not strictly need them, since principals without a consent-gated grant cannot trigger this path - the trade-off is that this disables the governed broker's consent workflow for those credentials, pushing the work back to human-executed operations in ERPNext. Restricting which callers may invoke the broker with caller-controlled document names (pinning the target document in the enclosing marker) also reduces exposure but requires custom enforcement outside the vulnerable gate. Because the flaw bypasses the denial audit, checking logs alone is insufficient: manually review submitted Sales Invoices and other supported DocTypes for unexpected cancellations and reversed general-ledger entries, and treat any such reversal as a security incident requiring re-submission or amendment of the affected document.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in pypi, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
pacioli is a least-privilege governance layer and governed agent broker for ERPNext/Frappe; pacioli-guard is its document-layer consent gate, which brokers agent-initiated document actions so that a privileged operation (such as submitting a Sales Invoice DocType) only proceeds under a consent marker minted by a human principal. That marker is intended to be bound to a specific document and a specific act, to be single-use ("spend"), and to leave a denial audit trail when a request is refused. In the vulnerable range the gate evaluated nested operations in the context of an enclosing governed act: a credential with API Key Scope.require_consent could submit a caller-controlled document under a legitimate submit marker and then nest a cancel operation targeting a different, pre-existing submitted document. Because the gate never re-checked whether the enclosing marker authorized the cancellation act - or matched the target document identity - the nested call reached Frappe's Document.cancel(), the root-cause class being CWE-863 (Incorrect Authorization), specifically a confused-deputy style failure where an authorization decision for one resource/action is reused for another. The consequence is integrity-only (I:H) rather than confidentiality loss: the cancelled document's ledger/accounting effect is reversed without a marker of its own and without the expected denial record. The vulnerability is confined to the published 0.9.6 build; the referenced repository commit also updates SECURITY.md to declare 0.10.0 the supported, fixed release and notes that 0.9.0-0.9.5 were never published.
Know when Erpnext 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:R/S:U/C:N/I:H/A:N
API-reachable (AV:N) but needs a valid consent-scoped credential (PR:L) and a human-minted submit marker to ride (UI:R); impact is unauthorized cancellation reversing the ledger, so I:H with C:N/A:N.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
1DescriptionCVE.org
pacioli provides least-privilege governance and a governed agent broker for ERPNext. From version 0.9.6 until version 0.10.0, the pacioli-guard document-layer consent gate allows nested cancellation operations to ride any consent established by an enclosing governed act without checking whether the marker authorizes cancellation. A credential with API Key Scope.require_consent can submit a caller-controlled Sales Invoice or other supported document under a valid human-minted submit marker and reach Document.cancel() for a different pre-existing submitted document, bypassing the marker's document and act binding, single-use spend, and denial audit. The unauthorized cancellation can reverse the target document's ledger effect; principals without a consent-gated grant are not affected. This issue is fixed in version 0.10.0.
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 attackers with permission to create or modify Print Format documents in Frappe ERPNext through 15.89.0 can
Authenticated server-side template injection in Frappe ERPNext through 15.89.0 lets a user who can create or modify an A
Authenticated server-side template injection in Frappe ERPNext through 15.89.0 allows users with privileges to configure
An SQL injection vulnerability exists in the frappe.desk.reportview.get functionality of ERPNext 11.1.38. Rated high sev
Frappe Framework ERPNext 13.4.0 contains a sandbox escape vulnerability in RestrictedPython that allows authenticated us
EUVD-2026-95937
GHSA-3hj7-6vmj-h8v4
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB