Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Authenticated low-privilege user (PR:L) sends network requests (AV:N/AC:L) abusing a misnamed permission check to read and modify sale-order data (C:H/I:H); no availability impact.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
1DescriptionCVE.org
ruoyi-vue-pro through 2026.05, fixed in commit 5d1fd70 contains a broken access control vulnerability in ErpSaleOrderController that allows attackers with erp:sale-out permissions to gain unauthorized access to sale order operations by exploiting an incorrect permission namespace enforcement. Attackers holding shipment-level permissions can perform unauthorized create, update, delete, and read operations on financially sensitive sale orders due to the controller enforcing erp:sale-out instead of the intended erp:sale-order namespace.
AnalysisAI
Broken access control in the ErpSaleOrderController of ruoyi-vue-pro (through version 2026.05) lets authenticated users holding only shipment-level 'erp:sale-out' permissions perform full create, read, update, and delete operations on financially sensitive ERP sale orders. The controller enforces the wrong permission namespace ('erp:sale-out' instead of the intended 'erp:sale-order'), so low-privileged warehouse/shipment operators effectively gain order-management authority. No public exploit identified at time of analysis and the issue is not in CISA KEV; an upstream fix exists as commit 5d1fd70.
Technical ContextAI
ruoyi-vue-pro is a widely used Java/Spring Boot + Vue rapid-development platform (YunaiV) that ships an ERP module. Authorization in this stack is enforced declaratively, typically via Sa-Token/Spring annotations such as @PreAuthorize("@ss.hasPermission('...')") on controller methods. The root cause is CWE-863 (Incorrect Authorization): the ErpSaleOrderController endpoints were annotated with the 'erp:sale-out' (sale shipment) permission string rather than the 'erp:sale-order' string they should require. Because the platform's RBAC model treats each colon-delimited string as a distinct privilege, a role granted shipment permissions silently inherits access to a different functional namespace, collapsing the intended separation between shipment handling and order management.
RemediationAI
Upstream fix available (commit 5d1fd70dc3e61bf64e7ce3328a71cc60001175c6); a released patched version was not independently confirmed from the input, so pull the fix from the YunaiV/ruoyi-vue-pro repository or rebuild from a build that includes that commit. As an immediate compensating control until you deploy the corrected build, audit and tighten role assignments so no role granted 'erp:sale-out' is also trusted with order operations - practically, separate shipment-only roles from accounts that should not touch sale orders, accepting that warehouse operators may lose convenience access they were implicitly relying on. Alternatively, manually correct the @PreAuthorize permission strings on ErpSaleOrderController endpoints to require 'erp:sale-order' as a hotfix, but only if you can rebuild and verify it does not break legitimate workflows. Reference the commit diff and the VulnCheck advisory (https://www.vulncheck.com/advisories/ruoyi-vue-pro-incorrect-permission-namespace-in-erpsaleordercontroller) to confirm the exact endpoints changed.
Same weakness CWE-863 – Incorrect Authorization
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-40167
GHSA-r39c-vf2w-53j7