/

CVE-2026-109613

Severity:

HIGH RISK

(7.1)

Missing Authorization (CWE-862) in Frappe ERPNext App

CVE-2026-109613

Deferred

Vulnerability type

Category:

Missing Authorization

CWE:

CWE-862

Impact:

Unauthorized Data Modification

Severity:

HIGH RISK

(7.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Frappe ERPNext contains a missing authorization vulnerability in certain endpoints that modify document status. Authenticated low-privileged users may invoke these endpoints to change data beyond the permissions granted by their roles.

Frappe ERPNext contains a missing authorization vulnerability in certain endpoints that modify document status. Authenticated low-privileged users may invoke these endpoints to change data beyond the permissions granted by their roles.

Affected context

The issue occurs in ERPNext deployments where document-status modification endpoints do not consistently enforce role-based authorization. Risk is present when an authenticated account with limited privileges can reach an affected endpoint and the endpoint relies on incomplete or missing permission checks.

The issue occurs in ERPNext deployments where document-status modification endpoints do not consistently enforce role-based authorization. Risk is present when an authenticated account with limited privileges can reach an affected endpoint and the endpoint relies on incomplete or missing permission checks.

Exploit preconditions

  • Attack surface: Application endpoints used to modify document status
  • Required access: An authenticated account with lower-level privileges
  • Trigger point: A request to an affected status-modification endpoint
  • Why exploitation is possible: The endpoint does not adequately verify whether the requesting user is authorized to perform the requested operation
  • Attack surface: Application endpoints used to modify document status
  • Required access: An authenticated account with lower-level privileges
  • Trigger point: A request to an affected status-modification endpoint
  • Why exploitation is possible: The endpoint does not adequately verify whether the requesting user is authorized to perform the requested operation

Why this happens

The underlying flaw is a missing authorization check on sensitive document-status operations. The application permits an authenticated request to proceed without reliably validating the user's role and object-level permissions, which maps to CWE-862: Missing Authorization. Authentication establishes the user's identity, but the affected code does not consistently enforce the authorization decision required for the requested action.

The underlying flaw is a missing authorization check on sensitive document-status operations. The application permits an authenticated request to proceed without reliably validating the user's role and object-level permissions, which maps to CWE-862: Missing Authorization. Authentication establishes the user's identity, but the affected code does not consistently enforce the authorization decision required for the requested action.

Potential impact

  • Unauthorized users may modify document status
  • Business workflow controls could be bypassed
  • Records may be altered beyond the user's assigned role
  • Data integrity and audit reliability may be weakened
  • Unauthorized changes could affect downstream processing or reporting
  • Unauthorized users may modify document status
  • Business workflow controls could be bypassed
  • Records may be altered beyond the user's assigned role
  • Data integrity and audit reliability may be weakened
  • Unauthorized changes could affect downstream processing or reporting

General mitigation guidance

Mitigation generally focuses on enforcing authorization at every sensitive operation rather than relying solely on authentication or client-side controls.

Common defensive patterns include:

  • Applying centralized, server-side role and object-level authorization checks
  • Verifying authorization immediately before document-status changes
  • Denying access by default when permissions are absent or ambiguous
  • Separating read, create, update, approve, and status-transition privileges
  • Preventing clients from supplying trusted authorization decisions
  • Running service components with only the permissions required for their functions
  • Recording and reviewing sensitive status changes for accountability

Mitigation generally focuses on enforcing authorization at every sensitive operation rather than relying solely on authentication or client-side controls.

Common defensive patterns include:

  • Applying centralized, server-side role and object-level authorization checks
  • Verifying authorization immediately before document-status changes
  • Denying access by default when permissions are absent or ambiguous
  • Separating read, create, update, approve, and status-transition privileges
  • Preventing clients from supplying trusted authorization decisions
  • Running service components with only the permissions required for their functions
  • Recording and reviewing sensitive status changes for accountability

How teams detect issues like this

Organizations commonly detect missing authorization issues through:

  • Static analysis for endpoint handlers that modify records without permission checks
  • Code review of every route, controller, and service method that changes document state
  • Authorization matrix testing across roles, ownership states, and document statuses
  • Dynamic tests using low-privileged accounts against administrative and workflow endpoints
  • Policy enforcement requiring centralized authorization middleware for sensitive operations
  • Monitoring for unexpected status changes by users or roles that should not perform them

Automated application-security and code-review tools may help identify inconsistent access-control patterns, but endpoint-level permission testing remains important.

Organizations commonly detect missing authorization issues through:

  • Static analysis for endpoint handlers that modify records without permission checks
  • Code review of every route, controller, and service method that changes document state
  • Authorization matrix testing across roles, ownership states, and document statuses
  • Dynamic tests using low-privileged accounts against administrative and workflow endpoints
  • Policy enforcement requiring centralized authorization middleware for sensitive operations
  • Monitoring for unexpected status changes by users or roles that should not perform them

Automated application-security and code-review tools may help identify inconsistent access-control patterns, but endpoint-level permission testing remains important.

Sources

SourceLink
github.comgithub.com/frappe/erpnext/security/advisories/GHSA-wp9w-rxmg-6pfj
vulncheck.comvulncheck.com/advisories/frappe-erpnext-before-15.121.0-missing-authorization-allows-unauthorized-status-modification

Frequently asked

questions

It may be exploitable through reachable application endpoints when an attacker has valid credentials and network access to the ERPNext instance.

No. The described condition involves authenticated low-privileged users whose requests are not properly checked against their permitted roles.

Enforce server-side, deny-by-default authorization checks for every document-status modification, including role, ownership, and object-level permissions.

Maintain a centralized authorization model, test all sensitive endpoints with multiple privilege levels, and monitor for unauthorized workflow or status changes.

It may be exploitable through reachable application endpoints when an attacker has valid credentials and network access to the ERPNext instance.

No. The described condition involves authenticated low-privileged users whose requests are not properly checked against their permitted roles.

Enforce server-side, deny-by-default authorization checks for every document-status modification, including role, ownership, and object-level permissions.

Maintain a centralized authorization model, test all sensitive endpoints with multiple privilege levels, and monitor for unauthorized workflow or status changes.

Find out what's already
exploitable in your codebase.