Safeguard
Vulnerability Analysis•

CVE-2026-94412: High Missing Authorization in jshERP resetPwd

jshERP through 3.6 lets any logged-in user reset another account's password via /user/resetPwd (CVSS 8.8). No fix confirmed. Restrict the route.

Safeguard Security Team
3 min read

CVE-2026-94412 is a high severity (CVSS 8.8) missing authorization flaw in jshERP through version 3.6. Any authenticated user can reset another user's password, including an administrator's, through the POST /user/resetPwd endpoint. I could not confirm a fixed release, so restrict the route and watch the project.

What's affected

The record says jshERP through 3.6 is affected. The weakness is CWE-862, missing authorization. The record describes the POST /user/resetPwd endpoint accepting a target user ID from an authenticated caller and resetting that account's password to a known default value.

I found no fixed version in the sources I could read. The references are the project repository, the controller source at v3.6 and the VulnCheck advisory, none of which names a patched release.

One point where scores differ. The record gives CVSS 8.8 from a version 3.1 vector. VulnCheck's advisory lists severity high with a CVSS version 4 score of 8.7. Both put it in the high band.

How to check if you're exposed

Find out which jshERP release you run and compare it with 3.6.

Then check whether the reset route is exposed. If you run a reverse proxy, search its logs for calls to the endpoint.

grep "/user/resetPwd" /var/log/nginx/access.log

Calls you cannot tie to an administrator action deserve a closer look. Also look at your user table for accounts whose passwords were recently changed, especially administrators.

What to do now

  1. Check the jshERP repository for a release after 3.6 that fixes the endpoint, and apply it when available.
  2. Until then, block or restrict POST /user/resetPwd at your reverse proxy so only trusted administrator addresses can reach it.
  3. Reset administrator passwords if you see unexplained calls to the endpoint, and review recent logins.
  4. Do not leave jshERP reachable from the public internet. Put it behind a VPN or an allowlist.
  5. Review default passwords: the record says the reset sets a known default value, so change any account still on a default.

Why it matters

Authorization checks answer a different question than login checks. Here the application knows who the caller is, but does not check whether that caller is allowed to act on the target account. CWE-862 bugs of this kind turn any low privilege account into an account takeover tool.

In an ERP system the accounts guard financial and inventory records. The record does not mark exploitation, and the CVE is not in CISA's catalog. A public proof of concept exists in the references, which raises the chance of copycat use, so do not wait for a release to apply the proxy rule.

Quick check

Do attackers need valid credentials?

Yes, any authenticated account. The flaw is that the endpoint does not check whether that account may reset someone else's password.

Is there a patch?

I could not confirm one. Check the project repository and apply a proxy restriction in the meantime.

Sources

Last reviewed: 18 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.