/

CVE-2026-108374

Severity:

HIGH RISK

(7.7)

Missing Authorization (CWE-862) in ERPNext Status APIs

CVE-2026-108374

Deferred

Vulnerability type

Category:

Missing Authorization

CWE:

CWE-862

Impact:

Unauthorized Data Modification

Severity:

HIGH RISK

(7.7)

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

ERPNext contains authorization weaknesses in certain status-modification endpoints, allowing authenticated low-privileged users to invoke state-changing methods without all required permission checks. Under deployments where these endpoints are reachable and the user has valid access, an attacker may modify records beyond the permissions granted by their role.

ERPNext contains authorization weaknesses in certain status-modification endpoints, allowing authenticated low-privileged users to invoke state-changing methods without all required permission checks. Under deployments where these endpoints are reachable and the user has valid access, an attacker may modify records beyond the permissions granted by their role.

Affected context

The issue occurs in ERPNext endpoints that expose whitelisted methods for changing document or record status. Risk is present when those methods do not consistently enforce write, submit, cancel, document-level, or role-based authorization checks before performing state-changing operations.

The issue occurs in ERPNext endpoints that expose whitelisted methods for changing document or record status. Risk is present when those methods do not consistently enforce write, submit, cancel, document-level, or role-based authorization checks before performing state-changing operations.

Exploit preconditions

  • Attack surface: ERPNext status-modification and whitelisted method endpoints
  • Required access: An authenticated account with low privileges
  • Trigger point: Invocation of a state-changing endpoint or method
  • Why exploitation is possible: Authorization enforcement is incomplete or absent for one or more required permission categories
  • Attack surface: ERPNext status-modification and whitelisted method endpoints
  • Required access: An authenticated account with low privileges
  • Trigger point: Invocation of a state-changing endpoint or method
  • Why exploitation is possible: Authorization enforcement is incomplete or absent for one or more required permission categories

Why this happens

The underlying flaw is a missing authorization control in server-side handlers. The application permits a state-changing operation to proceed without verifying that the requesting user has the required write, submit, cancel, document, and role permissions. This maps to CWE-862: Missing Authorization, where access control is not enforced for a protected operation.

The underlying flaw is a missing authorization control in server-side handlers. The application permits a state-changing operation to proceed without verifying that the requesting user has the required write, submit, cancel, document, and role permissions. This maps to CWE-862: Missing Authorization, where access control is not enforced for a protected operation.

Potential impact

  • Unauthorized modification of business records
  • Bypassing workflow or document-state controls
  • Integrity loss in financial, operational, or administrative data
  • Abuse of records that should require elevated roles or approval
  • Possible disruption of downstream processes that trust modified status values
  • Unauthorized modification of business records
  • Bypassing workflow or document-state controls
  • Integrity loss in financial, operational, or administrative data
  • Abuse of records that should require elevated roles or approval
  • Possible disruption of downstream processes that trust modified status values

General mitigation guidance

Mitigation should center on enforcing authorization at every server-side state-changing boundary rather than relying on client-side controls or endpoint naming.

Common defensive patterns include:

  • Require explicit authorization checks for write, submit, cancel, document, and role permissions
  • Apply deny-by-default access policies to whitelisted methods
  • Centralize permission evaluation to reduce inconsistent endpoint behavior
  • Validate record ownership, document type, workflow state, and requested transition
  • Avoid trusting client-provided role, status, or permission indicators
  • Run service components with only the privileges necessary for their functions
  • Record and review denied and successful sensitive state changes

Mitigation should center on enforcing authorization at every server-side state-changing boundary rather than relying on client-side controls or endpoint naming.

Common defensive patterns include:

  • Require explicit authorization checks for write, submit, cancel, document, and role permissions
  • Apply deny-by-default access policies to whitelisted methods
  • Centralize permission evaluation to reduce inconsistent endpoint behavior
  • Validate record ownership, document type, workflow state, and requested transition
  • Avoid trusting client-provided role, status, or permission indicators
  • Run service components with only the privileges necessary for their functions
  • Record and review denied and successful sensitive state changes

How teams detect issues like this

Organizations can look for missing authorization through:

  • Static analysis rules identifying state-changing handlers without permission checks
  • Code review searches for whitelisted methods that update, submit, cancel, or transition records
  • Tests that exercise sensitive endpoints with users lacking each required permission
  • API policy checks requiring authorization middleware for mutating operations
  • Audit-log analysis for low-privileged accounts making unusual status changes
  • Automated security review tools that flag inconsistent access-control enforcement

Organizations can look for missing authorization through:

  • Static analysis rules identifying state-changing handlers without permission checks
  • Code review searches for whitelisted methods that update, submit, cancel, or transition records
  • Tests that exercise sensitive endpoints with users lacking each required permission
  • API policy checks requiring authorization middleware for mutating operations
  • Audit-log analysis for low-privileged accounts making unusual status changes
  • Automated security review tools that flag inconsistent access-control enforcement

Sources

SourceLink
github.comgithub.com/frappe/erpnext/commit/547d82da563380a0644919173e00d0205f986d89
github.comgithub.com/frappe/erpnext/commit/86e94803629ea5668c2fc2d18afb5ca59fe2cf03
github.comgithub.com/frappe/erpnext/commit/a20fc4f9317ecc7d262625aea680c9a0cda98cef
github.comgithub.com/frappe/erpnext/releases/tag/v15.121.0
github.comgithub.com/frappe/erpnext/releases/tag/v16.34.0
github.comgithub.com/frappe/erpnext/security/advisories/GHSA-5wpj-6rvp-9ff7

Frequently asked

questions

It may be exploitable through the ERPNext application interface when the affected endpoints are network-accessible and the attacker can authenticate.

A valid low-privileged account is generally sufficient; administrative access should not be necessary when the affected authorization checks are missing.

Enforce server-side, deny-by-default authorization checks for every state-changing method, including record, workflow, role, and operation-specific permissions.

Use centralized authorization middleware, test each sensitive endpoint with underprivileged roles, validate workflow transitions on the server, and monitor audit logs for anomalous changes.

It may be exploitable through the ERPNext application interface when the affected endpoints are network-accessible and the attacker can authenticate.

A valid low-privileged account is generally sufficient; administrative access should not be necessary when the affected authorization checks are missing.

Enforce server-side, deny-by-default authorization checks for every state-changing method, including record, workflow, role, and operation-specific permissions.

Use centralized authorization middleware, test each sensitive endpoint with underprivileged roles, validate workflow transitions on the server, and monitor audit logs for anomalous changes.

Find out what's already
exploitable in your codebase.