/

CVE-2026-94496

Severity:

HIGH RISK

(8.3)

Missing Authorization (CWE-862) in jshERP Role Endpoints

CVE-2026-94496

Deferred

Vulnerability type

Category:

Missing Authorization

CWE:

CWE-862

Impact:

Privilege Escalation and Unauthorized Data Access

Severity:

HIGH RISK

(8.3)

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

jshERP through version 3.6 does not consistently verify whether an authenticated caller is authorized to manage the targeted role. An authenticated user may modify a role's data scope or delete roles, potentially escalating privileges and exposing business records across the tenant.

Affected context

The issue occurs in jshERP role-management functionality when the /role/update and /role/delete endpoints process requests without adequately validating the caller's permission to act on the specified role. Deployments are at risk when authenticated users can reach these endpoints and role data controls visibility of tenant business records.

Exploit preconditions

  • Attack surface: Authenticated role-management HTTP endpoints - Required access: A valid jshERP user account with access to submit requests - Trigger point: Requests sent to /role/update or /role/delete - Why exploitation is possible: Server-side authorization checks do not

sufficiently bind the requested role operation to the caller's permissions,

allowing unauthorized changes to role scope or role deletion

Why this happens

The underlying bug is a missing or incomplete authorization check at a sensitive resource boundary. The application appears to authenticate the caller but does not reliably verify that the caller may update or delete the specific role identified by the request. This maps to CWE-862, Missing Authorization, where access control enforcement is absent or insufficient for a protected operation.

Potential impact

  • An attacker may change a role's data scope to expose all tenant records.
  • An attacker could escalate privileges by altering role permissions or scope.
  • Unauthorized users may delete roles and disrupt administrative controls.
  • Business records may be accessed outside the intended visibility boundary.
  • Tenant confidentiality and integrity could be reduced.

General mitigation guidance

Mitigation generally focuses on enforcing authorization on every sensitive role-management operation, using server-side policy decisions rather than client-supplied role or scope assumptions. Authorization checks should verify both the caller's administrative capability and access to the specific target role, with deny-by-default behavior for ambiguous requests. Role and data-scope changes can be constrained through least privilege, immutable or narrowly assignable scope policies, strong tenant isolation, and audit logging. Input validation and consistent authorization middleware should apply before any update or deletion is performed.

How teams detect issues like this

Detection can include static and dynamic analysis for role-management handlers that process object identifiers without a corresponding authorization decision. Code review should look for endpoint-level checks that rely only on authentication, client-provided role attributes, or UI restrictions. Tests can exercise cross-user and cross-role access attempts, including updates, deletions, and data-scope changes. Policy enforcement may require centralized authorization middleware, audit events for role mutations, and alerts for unusual scope expansions or administrative changes. Automated security review tools may help identify missing access-control checks, but should be supplemented with authorization-focused tests.

Sources

SourceLink
github.comgithub.com/LinYuanyi1/cve-request-poc/blob/master/jshERP/poc-11-role-tamper.py
github.comgithub.com/jishenghua/jshERP
github.comgithub.com/jishenghua/jshERP/blob/v3.6/jshERP-boot/src/main/java/com/jsh/erp/controller/RoleController.java#L76-L98
vulncheck.comvulncheck.com/advisories/jsherp-through-3.6-privilege-escalation-via-role-management

Frequently asked

questions

It may be exploitable through the application's HTTP endpoints when those

endpoints are reachable and the attacker has an authenticated account.

The attacker needs valid credentials and sufficient access to submit requests

to the affected role-management endpoints. The account does not necessarily

need legitimate permission to modify the targeted role.

Enforce server-side, deny-by-default authorization for each role update and

deletion, validating both the caller's privileges and the targeted resource.

Centralize authorization policy, test horizontal and vertical access-control

boundaries, enforce tenant isolation, and audit sensitive role and scope

changes.

Find out what's already
exploitable in your codebase.