/

CVE-2026-94495

Severity:

HIGH RISK

(7.1)

Missing Authorization (CWE-862) in jshERP System Config

CVE-2026-94495

Deferred

Vulnerability type

Category:

Missing Authorization

CWE:

CWE-862

Impact:

Unauthorized modification of tenant configuration

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

jshERP through version 3.6 does not properly validate user privileges when updating tenant system configuration. An authenticated user who can reach the systemConfig endpoint may modify or delete tenant-wide settings, affecting company identity, inventory rules, approval behavior, and printing configuration.

Affected context

The vulnerability occurs in deployments of jshERP through 3.6 where the

SystemConfigService.updateSystemConfig operation is accessible to

authenticated users without sufficiently specific authorization checks.

Risk depends on whether ordinary tenant users can invoke the systemConfig

endpoint and whether tenant configuration changes are enforced by server-side

privilege and scope controls.

Exploit preconditions

  • Attack surface: The authenticated system configuration endpoint
  • Required access: A valid user account with access to the affected application
  • Trigger point: An update or delete operation handled by updateSystemConfig
  • Why exploitation is possible: The application does not adequately verify

that the requesting user is authorized to change the targeted tenant-wide

configuration

Why this happens

The underlying flaw is an authorization gap in a state-changing service

operation. The application appears to authenticate the requester but does not

reliably enforce the required privilege and tenant-scope checks before applying

configuration changes. This maps to CWE-862: Missing Authorization, in

which access to a protected function is not adequately restricted after

authentication.

Potential impact

  • An authenticated user could alter tenant-wide company identity settings
  • Inventory or stock-control behavior could be changed unexpectedly
  • Approval workflows could be weakened, disrupted, or redirected
  • Printing configuration could be modified or removed
  • Business operations and configuration integrity could be affected
  • Other users could receive misleading or inconsistent application behavior

General mitigation guidance

Mitigation generally focuses on enforcing authorization at the service layer

for every configuration update and deletion.

Common defensive patterns include:

  • Applying deny-by-default permissions to administrative configuration actions
  • Checking both the caller's role and the target tenant before changing state
  • Enforcing authorization independently of client-supplied role or tenant values
  • Separating read, update, and delete privileges where appropriate
  • Validating configuration changes against an explicit server-side allowlist
  • Using least-privilege roles and minimizing access to tenant-wide settings
  • Recording and reviewing configuration changes with actor, tenant, and outcome details

How teams detect issues like this

Detection approaches can include:

  • Static analysis for state-changing service methods lacking authorization

annotations, guards, or explicit permission checks

  • Code review of every controller-to-service path that updates or deletes

tenant-wide data

  • Tests that exercise administrative endpoints with ordinary authenticated

accounts and cross-tenant identifiers

  • Runtime monitoring for unusual configuration changes or delete operations
  • Policy enforcement requiring authorization checks for privileged API routes
  • Neutral automated security review tools to identify missing access-control

checks and inconsistent tenant-boundary enforcement

Sources

SourceLink
github.comgithub.com/LinYuanyi1/cve-request-poc/blob/master/jshERP/poc-10-systemconfig-tamper.py
github.comgithub.com/jishenghua/jshERP
github.comgithub.com/jishenghua/jshERP/blob/v3.6/jshERP-boot/src/main/java/com/jsh/erp/controller/SystemConfigController.java#L93-L115
vulncheck.comvulncheck.com/advisories/jsherp-through-3.6-missing-authorization-via-systemconfig

Frequently asked

questions

It may be exploitable through the application's API by an authenticated user,

provided the user can reach the affected system configuration operation.

Yes, the described attack path requires authenticated access. The relevant

question is whether a normal or otherwise insufficiently privileged account

can invoke the endpoint.

Enforce server-side authorization in the service layer for every update and

delete action, including explicit role, permission, and tenant-scope checks.

Use deny-by-default access control, test privileged endpoints with lower

privilege accounts, avoid trusting client-supplied authorization data, and

audit changes to tenant-wide configuration.

Find out what's already
exploitable in your codebase.