Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as restricted jshERP user
-
ExploitCraft GET /depotHead/list with purchaseStatus=0 in search JSON
-
ExecutionServer drops creator filter in DepotHeadService.select
-
ImpactHarvest all tenant purchase/sales/inventory bills
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a valid authenticated jshERP session, even one restricted to personal or department-only data scope (PR:L); no admin rights are needed. The attacker must send a GET /depotHead/list request with purchaseStatus=0 added to the search JSON - this specific parameter presence is what causes DepotHeadService.select to omit the creator/owner filter. No non-default configuration or user interaction is required; the behavior is present in default jshERP through 3.6. The sole limiting factor is the need for any low-privilege authenticated account, which bounds exploitation to insiders or attackers who have otherwise obtained credentials. |
| Impact | This is a genuine but moderate-severity information-disclosure issue, not a top-tier emergency. The provided CVSS 4.0 vector (AV:N/AC:L/PR:L/UI:N/VC:L, score 5.3) is internally consistent with the description: a network-reachable, low-complexity bug that requires an authenticated low-privilege account and leaks confidentiality only (no integrity or availability impact). A public POC exists (publicly available exploit code exists), which raises practical exploitability for anyone who already holds a valid jshERP login. However, there is no CISA KEV listing and no EPSS score provided, so there is no evidence of active or widespread exploitation - the absence of these signals is not itself an error, just missing data. The key tension is that PR:L bounds the audience to existing authenticated tenant users (insiders or attackers who have obtained any low-privilege credential), which argues against mass internet-scale exploitation despite AV:N. One nuance to verify: the description says the filter bypass exposes ALL tenant purchase, sales and inventory bills, which is arguably a broader confidentiality impact than the VC:L / C:L rating suggests - defenders handling sensitive commercial data may wish to treat the confidentiality impact as higher than the headline 5.3 implies. Net: real and worth patching, but lower priority than unauthenticated RCE or KEV-listed flaws. |
| Exploit ScenarioDerived | An attacker who already has a low-privilege jshERP account scoped to only their own or their department's records logs in, then issues a GET /depotHead/list request with purchaseStatus=0 injected into the search JSON. Because DepotHeadService.select drops the creator filter when purchaseStatus is present, the server returns every purchase, sales and inventory bill for the entire tenant, leaking commercially sensitive data the user should not see. A public Python POC for this exact request is available. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
An authorization bypass in jshERP through 3.6 lets any authenticated user - even one whose data scope is restricted to personal or department-level records - read other users' purchase, sales, and inventory bills by inserting a purchaseStatus=0 value into the search JSON of a GET /depotHead/list request. The presence of that single parameter causes DepotHeadService.select to omit the creator/owner filter, returning tenant-wide depot head records instead of only the caller's own. Publicly available exploit code exists (a VulnCheck-published PoC script), though there is no KEV-listed active exploitation and the assessed CVSS 3.1 score of 5.3 reflects confidentiality-only impact (C:L, I:N, A:N) requiring a low-privilege authenticated session, making this a moderate-severity information-disclosure issue best addressed by insiders or attackers who already hold credentials.
RemediationAI
No vendor-released patch or fixed version was identified at time of analysis; the GitHub references supplied are pointers to the vulnerable source (controller and service lines), not to a fix commit or tagged release, so remediation must currently rely on code-level correction or compensating controls. The definitive fix is to modify DepotHeadService.select so the creator/department scope predicate is always appended regardless of whether purchaseStatus (or any other search key) is present in the caller-supplied JSON, and to validate the search payload against an allowlist of fields rather than trusting arbitrary keys; until that patch is available and deployed, restrict network access to the application to trusted internal users only, since every exploitation path requires a valid low-privilege session and blocking unauthenticated ingress removes the easiest credential-acquisition route. Trade-off: this does nothing against malicious or compromised insiders, which is the primary threat model here. As an interim control, deploy a reverse-proxy or WAF rule that logs or rejects GET /depotHead/list requests whose search parameter contains "purchaseStatus" for non-privileged roles; the trade-off is potential breakage of legitimate purchase-status filtering for those users and possible evasion via JSON encoding or parameter reordering. Finally, audit application logs and database query traces for GET /depotHead/list calls carrying purchaseStatus in the search JSON from accounts whose scope should not permit tenant-wide reads, and treat any such hits as evidence of data-scope enumeration.
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
jshERP is a Java/Spring Boot multi-tenant ERP platform (jshERP-boot) handling purchasing, sales, and inventory documents through a DepotHead entity. The vulnerability class is CWE-863 (Incorrect Authorization): the controller endpoint DepotHeadController (lines 77-80 of the referenced commit) forwards a caller-supplied search JSON to DepotHeadService.select (lines 104-125), where the data-scope predicate that constrains results to the caller's own or department's records is conditionally constructed. When the search object contains a purchaseStatus key, the code path taken omits the creator/owner filter entirely, so the query executes with tenant-wide scope. This is a broken object-level/row-level authorization defect rather than a memory-safety or injection flaw - the query itself is valid and the data returned is legitimate data the caller simply is not authorized to see. Exploitation requires PR:L per both the supplied CVSS 4.0 vector and the independent CVSS 3.1 assessment (AV:N/AC:L/PR:L/UI:N), so an unauthenticated attacker cannot trigger it, and no user interaction or non-default configuration is involved.
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:L/VI:N/VA:N/SC:N/SI:N/SA:N
Network-reachable HTTP endpoint (AV:N), trivial parameter injection (AC:L), requires any authenticated low-privilege account (PR:L), read-only data leak so C:L with I:N/A:N and no scope change.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
DescriptionCVE.org
jshERP through 3.6 contains an authorization bypass vulnerability that allows authenticated users restricted to personal or department data to list other users' bills by adding a purchaseStatus value. Attackers can include purchaseStatus=0 in the search JSON on GET /depotHead/list, causing DepotHeadService.select to drop the creator filter and expose all tenant purchase, sales and inventory bills.
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.
EUVD-2026-97385
GHSA-gm8f-w8c2-frcr
NVD
CVE.org
EPSS
Exploit-DB