Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged tenant user
-
DeliveryCraft PUT /user/update with tenant_id/password fields
-
ExploitMass assignment binds protected fields
-
ExecutionOverwrite target password hash or own tenant_id
-
PersistLog in as victim or into foreign tenant
-
ImpactAccount takeover / cross-tenant access
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V4 - API and Web Service Object attribute protection
|
| Exploitation Conditions | Exploitation requires the attacker to already hold a valid authenticated jshERP account (PR:L) capable of calling the PUT /user/update endpoint; no user interaction or non-default configuration is needed, and the flaw is present in the default UserController update handler through version 3.6. The specific prerequisite is the ability to submit an update request whose body includes the protected tenant_id and password fields, which the handler binds without a server-side allowlist. Limiting factors: the attacker must first obtain or register a low-privilege account (so purely unauthenticated attackers are excluded), and impact scope depends on the deployment being multi-tenant and having other user accounts worth taking over. |
| Impact | This is a credible, actionable priority rather than a high-CVSS-but-low-real-risk issue. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) describes network-reachable exploitation with low complexity, no special attack requirements, and only low privileges - meaning any authenticated user (any tenant account) can trigger it, which matches the description's 'authenticated users' and the mass-assignment nature (CWE-915). A publicly available POC exists (github-poc reference), raising practical exploitability, though the CVE is NOT in CISA KEV and no EPSS score was provided in the input, so there is no evidence of widespread or confirmed active exploitation yet - the POC signal and the KEV/EPSS signals should not be conflated. The impact triad VC:H/VI:H/VA:H is consistent with the description: overwriting password hashes enables full account takeover (integrity/availability for the victim) and tenant_id manipulation enables cross-tenant access (confidentiality). The one notable signal conflict is the 'Information Disclosure' tag, which understates the vulnerability - the dominant impact is integrity/privilege (account takeover and tenant switching), not merely disclosure. Net assessment: real priority for any organization running jshERP with multiple user accounts, tempered by the fact that the attacker must first hold a valid low-privilege account and that real-world deployment footprint is limited. |
| Exploit ScenarioDerived | An attacker who holds any low-privileged jshERP account (self-registered or a compromised standard user) sends a crafted PUT /user/update request that includes the protected tenant_id and password fields in the body. Because the update handler binds request parameters directly to the user entity (mass assignment), the attacker overwrites another user's password hash to seize that account, or changes their own tenant_id to pivot into a different tenant on next login. A public POC (poc_identity_privilege_write.py) demonstrates this write primitive. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Authenticated mass assignment in jshERP through 3.6 lets any user holding a valid low-privilege account overwrite protected fields on a user record - including tenant_id and password - by submitting a crafted PUT /user/update body, enabling silent cross-tenant identity switching on the next login or takeover of other accounts via password-hash overwrite. The vulnerable code path is the default UserController update handler and exploitation requires only an authenticated session (CVSS v3.1 base 8.7, PR:L, no user interaction or non-default configuration). Publicly available exploit code exists and no confirmed active exploitation (CISA KEV) has been reported at time of analysis.
RemediationAI
No vendor-released patch was identified at time of analysis; the references in the advisory link to the vulnerable source lines rather than to a released fix or tagged version, so operators should not assume an upstream upgrade resolves the issue. Until an official fix ships, apply a code-level fix by binding request bodies to an explicit DTO/allowlist that excludes tenant_id and password, then reloading those two fields server-side from the authenticated principal and the existing record - this is the only mitigation that removes the flaw rather than reducing reach. Note that this requires forking/maintaining jshERP locally, which carries a maintenance and regression burden. As compensating controls with clear trade-offs: front the deployment with a reverse proxy or API gateway rule that blocks or restricts PUT /user/update to administrative sessions (this breaks normal self-service profile updates for ordinary users); enforce a server-side check that the submitted record's tenant_id matches the caller's current tenant and reject any mismatch; require re-authentication plus a separate endpoint for password changes so password can never appear in a generic update body; and treat the endpoint as a monitoring signal - alert on any update request whose body contains tenant_id or password, since such traffic is almost certainly malicious. Because password hashes are overwritable, rotate credentials and invalidate sessions for all users on exposed instances, and review audit logs for unexpected tenant reassignments. Vendor-independent detail is available at https://www.vulncheck.com/advisories/jsherp-through-3.6-mass-assignment-via-put-user-update, and the public PoC at https://github.com/AnkesKasty/cve-request-poc/blob/a7b6d1423555812d8efa26c91c5d0683164b31e5/jshERP/poc_identity_privilege_write.py can be used to validate that a mitigation actually blocks the request.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-915, Improperly Controlled Modification of Dynamically-Determined Object Attributes - the classic Java/Spring mass assignment pattern. In jshERP-boot, the Spring MVC update handler in UserController.java (referenced lines 97-103) binds the inbound request body directly onto a User domain object and forwards it to UserService.java (lines 176-192), which persists the object without an allowlist of writable properties or an ownership check. Two persistent attributes are therefore attacker-controllable: tenant_id, the multi-tenancy discriminator that governs which tenant's data set the account is scoped to on subsequent authentication, and password, stored as a hash but overwritten with attacker-chosen material. Because binding and persistence are generic, the request looks like an ordinary profile update - the impact is a server-side trust failure, not a parsing or injection bug. The supplied tags label the finding as Information Disclosure, but the exposed primitive is integrity/privilege-write (write-what-you-want on protected attributes), which is the more accurate characterization given the CVSS v3.1 vector C:H/I:H/A:H.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Network endpoint reachable by any authenticated low-privilege user (PR:L, AV:N, AC:L); mass assignment yields password overwrite and cross-tenant access, giving full C/I/A:H with unchanged scope.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
DescriptionCVE.org
jshERP through 3.6 contains a mass assignment vulnerability in the UserController update handler that allows authenticated users to overwrite protected fields including tenant_id and password. Attackers can send a crafted PUT /user/update body to switch into another tenant on next login or overwrite other users' password hashes for account takeover.
Technical POC Analysis
CWE-915 (mass assignment), per the advisory.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Latest POC
1 public PoC link from github
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
jshERP versions through 3.6 contain an authenticated mass assignment vulnerability (CVE-2026-109186) that allows any authenticated low-privilege user to overwrite critical user record fields, including tenant_id and password, leading to cross-tenant identity switching or account takeover. Publicly available exploit code exists, and no vendor-released patch has been identified at time of analysis. This undermines multi-tenant isolation and could result in unauthorized access to sensitive business data, so leadership should prioritize immediate mitigations.
No vendor-released patch identified at time of analysis. Implement input validation to whitelist modifiable fields in user update requests, enforce least privilege, deploy WAF rules to block malicious PUT requests, and monitor for anomalous account changes.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-97390
GHSA-q6mx-rrwp-p348
NVD
CVE.org
EPSS
Exploit-DB