/

CVE-2026-109185

Severity:

HIGH RISK

(8.8)

Missing Authorization (CWE-862) in jshERP UserController

CVE-2026-109185

Deferred

Vulnerability type

Category:

Missing Authorization

CWE:

CWE-862

Impact:

Privilege Escalation and Unauthorized Role Assignment

Severity:

HIGH RISK

(8.8)

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 contains a missing authorization check in the UserController updateUser handler. An authenticated, low-privilege user may assign arbitrary roles to other users, including tenant administrator privileges, when the request is not properly restricted by identity and tenant permissions.

jshERP through version 3.6 contains a missing authorization check in the UserController updateUser handler. An authenticated, low-privilege user may assign arbitrary roles to other users, including tenant administrator privileges, when the request is not properly restricted by identity and tenant permissions.

Affected context

The issue occurs in jshERP deployments where the UserController updateUser handler accepts user and role identifiers from authenticated requests without adequately verifying whether the requester may change the target user's role. Risk is higher in multi-tenant environments when tenant boundaries and administrative role assignments are not enforced consistently.

The issue occurs in jshERP deployments where the UserController updateUser handler accepts user and role identifiers from authenticated requests without adequately verifying whether the requester may change the target user's role. Risk is higher in multi-tenant environments when tenant boundaries and administrative role assignments are not enforced consistently.

Exploit preconditions

  • Attack surface: Authenticated application or API request to the user-update functionality
  • Required access: A valid account with sufficient access to reach the updateUser handler; administrative privileges may not be required
  • Trigger point: Submission of a user update containing a target user identifier and role identifier
  • Why exploitation is possible: The handler may process attacker-controlled role assignments without confirming authorization for the target user, tenant, or requested role
  • Attack surface: Authenticated application or API request to the user-update functionality
  • Required access: A valid account with sufficient access to reach the updateUser handler; administrative privileges may not be required
  • Trigger point: Submission of a user update containing a target user identifier and role identifier
  • Why exploitation is possible: The handler may process attacker-controlled role assignments without confirming authorization for the target user, tenant, or requested role

Why this happens

The underlying flaw is an authorization decision failure. The updateUser handler appears to rely on the presence of an authenticated session or request parameters without enforcing object-level and function-level permissions for role changes. This maps to CWE-862: Missing Authorization, where the application does not verify that the requester is permitted to perform a sensitive operation on the selected account or within the relevant tenant.

The underlying flaw is an authorization decision failure. The updateUser handler appears to rely on the presence of an authenticated session or request parameters without enforcing object-level and function-level permissions for role changes. This maps to CWE-862: Missing Authorization, where the application does not verify that the requester is permitted to perform a sensitive operation on the selected account or within the relevant tenant.

Potential impact

  • An attacker may elevate their own privileges to a tenant administrator role
  • An attacker could modify roles assigned to other users
  • Tenant isolation may be weakened or bypassed
  • Unauthorized users could gain access to administrative functions and data
  • Account governance and audit integrity could be affected
  • An attacker may elevate their own privileges to a tenant administrator role
  • An attacker could modify roles assigned to other users
  • Tenant isolation may be weakened or bypassed
  • Unauthorized users could gain access to administrative functions and data
  • Account governance and audit integrity could be affected

General mitigation guidance

Mitigation generally focuses on enforcing authorization at the server-side operation boundary rather than trusting client-supplied identifiers or UI restrictions.

Common defensive patterns include:

  • Require explicit permission checks for every role-management operation
  • Verify that the requester may modify the target user and assign the requested role
  • Enforce tenant ownership and scope checks independently of user-supplied tenant or user identifiers
  • Apply deny-by-default policies for privileged role assignment
  • Separate self-service profile updates from administrative identity and role management
  • Use least-privilege roles and protect administrator role changes with stronger controls and audit logging

Mitigation generally focuses on enforcing authorization at the server-side operation boundary rather than trusting client-supplied identifiers or UI restrictions.

Common defensive patterns include:

  • Require explicit permission checks for every role-management operation
  • Verify that the requester may modify the target user and assign the requested role
  • Enforce tenant ownership and scope checks independently of user-supplied tenant or user identifiers
  • Apply deny-by-default policies for privileged role assignment
  • Separate self-service profile updates from administrative identity and role management
  • Use least-privilege roles and protect administrator role changes with stronger controls and audit logging

How teams detect issues like this

Organizations can look for this class of issue through:

  • Static analysis and code review rules that identify sensitive update handlers lacking centralized authorization checks
  • Review of endpoints that accept user IDs, tenant IDs, role IDs, or permission fields from clients
  • Authorization tests covering horizontal access, vertical privilege escalation, and cross-tenant object access
  • Policy enforcement requiring server-side permission checks before role or entitlement changes
  • Monitoring for unexpected role changes, especially administrator assignments initiated by non-administrative accounts

Automated security testing and code review tools may help identify missing object-level authorization paths.

Organizations can look for this class of issue through:

  • Static analysis and code review rules that identify sensitive update handlers lacking centralized authorization checks
  • Review of endpoints that accept user IDs, tenant IDs, role IDs, or permission fields from clients
  • Authorization tests covering horizontal access, vertical privilege escalation, and cross-tenant object access
  • Policy enforcement requiring server-side permission checks before role or entitlement changes
  • Monitoring for unexpected role changes, especially administrator assignments initiated by non-administrative accounts

Automated security testing and code review tools may help identify missing object-level authorization paths.

Sources

SourceLink
github.comgithub.com/AnkesKasty/cve-request-poc/blob/a7b6d1423555812d8efa26c91c5d0683164b31e5/jshERP/poc_identity_privilege_write.py
github.comgithub.com/jishenghua/jshERP/blob/8f28e7c2fe54d54de3621a414f5df1833dc5a55f/jshERP-boot/src/main/java/com/jsh/erp/controller/UserController.java#L342-L350
github.comgithub.com/jishenghua/jshERP/blob/8f28e7c2fe54d54de3621a414f5df1833dc5a55f/jshERP-boot/src/main/java/com/jsh/erp/service/UserService.java#L679-L709
vulncheck.comvulncheck.com/advisories/jsherp-through-3.6-privilege-escalation-via-put-user-updateuser

Frequently asked

questions

An authenticated low-privilege user may be able to exploit it if the deployment exposes the affected user-update functionality without adequately enforcing role-management permissions.

Cross-tenant impact depends on how tenant and target-user checks are implemented. If those boundaries are not enforced, role changes could extend beyond the attacker's authorized tenant.

Enforce server-side, deny-by-default authorization for every role assignment, validating the requester, target user, requested role, and tenant scope before applying the change.

Use centralized authorization middleware or policy checks, test both horizontal and vertical access controls, separate self-service updates from administrative actions, and audit all privilege changes.

An authenticated low-privilege user may be able to exploit it if the deployment exposes the affected user-update functionality without adequately enforcing role-management permissions.

Cross-tenant impact depends on how tenant and target-user checks are implemented. If those boundaries are not enforced, role changes could extend beyond the attacker's authorized tenant.

Enforce server-side, deny-by-default authorization for every role assignment, validating the requester, target user, requested role, and tenant scope before applying the change.

Use centralized authorization middleware or policy checks, test both horizontal and vertical access controls, separate self-service updates from administrative actions, and audit all privilege changes.

Find out what's already
exploitable in your codebase.