Jeecg Boot
CVE-2025-15126
LOW
Severity by source
CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Primary rating from NVD · only source for this CVE.
CVSS VectorNVD
CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Lifecycle Timeline
2DescriptionCVE.org
A weakness has been identified in JeecgBoot up to 3.9.0. Affected by this vulnerability is the function getPositionUserList of the file /sys/position/getPositionUserList. This manipulation of the argument positionId causes improper authorization. The attack may be initiated remotely. The complexity of an attack is rather high. The exploitation appears to be difficult. The exploit has been made available to the public and could be exploited. The vendor was contacted early about this disclosure but did not respond in any way.
AnalysisAI
We need to generate a JSON object based on the provided CVE data. We must follow all instructions precisely.
Let's extract data:
- CVE ID: CVE-2025-15126
- Description: "A weakness has been identified in JeecgBoot up to 3.9.0. Affected by this vulnerability is the function getPositionUserList of the file /sys/position/getPositionUserList. This manipulation of the argument positionId causes improper authorization. The attack may be initiated remotely. The complexity of an attack is rather high. The exploitation appears to be difficult. The exploit has been made available to the public and could be exploited. The vendor was contacted early about this disclosure but did not respond in any way."
- CVSS Score: 1.3 (CVSS 4.0 base score? Actually it says CVSS Score: 1.3, CVSS Vector: CVSS:4.0/... so it's a 4.0 score). The vector: AV:N/AC:H/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P/... That means: Attack Vector: Network, Attack Complexity: High, Attack Requirements: None, Privileges Required: Low, User Interaction: None, Confidentiality: Low, Integrity: None, Availability: None, no scope change, Exploit maturity: Proof-of-Concept.
- CWE: CWE-266 (Incorrect Privilege Assignment)
- EPSS Score: 0.04% (percentile 11%)
- POC/Exploit: Publicly available
- Reported by: cna@vuldb.com
- CPE: cpe:2.3:a:jeecg:jeecg_boot:*:*:*:*:*:*:*:*
- Tags: Information Disclosure, Jeecg Boot
- References:
- github.com/Hwwg/cve/issues/39 (exploit)
- vuldb.com/?ctiid.338504
- vuldb.com/?id.338504
- vuldb.com/?submit.711782 (exploit)
Now, we need to synthesize all this into a thorough analysis. The description says "manipulation of the argument positionId causes improper authorization" - CWE-266. So it's like an IDOR or authorization bypass allowing maybe unauthorized access to user list? The function name getPositionUserList suggests retrieving user list for a position, and improper authorization on positionId could allow a low-privileged user to see others' data. CVSS: Confidentiality Low, no other impact.
The CVSS vector is 4.0, so we need to assess ourselves using 3.1 and 4.0 vectors consistent with our own assessment. The provided vector is CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P. So we need to map that to 3.1 metrics: AV:N, AC:H, PR:L, UI:N, S:U, C:L, I:N, A:N. That would be CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N. But the instructions say: "assessed_cvss_vector: Your OWN independent CVSS 3.1 base-metric vector for THIS vulnerability, grounded in the description and exploitation conditions — NOT a copy of any score in the input." So we should confirm that this matches our assessment. Description: "remote attack ... complexity high ... exploitation difficult ... improper authorization ... manipulate argument positionId ..." So indeed, remote, needs authentication? The CVSS says PR:L, so low privileges. No user interaction. Impact: only confidential info (low). So we can generate that vector. For 4.0, we'll also produce a vector consistent with that, but note that the provided one already has AT:N (Attack Requirements None), so we can just reuse that. However, we should add exploit maturity? The instruction says "base vector" only, not including temporal/environmental. So we'll just output the base vector without E/X/etc. So for 4.0: CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N. That matches the provided one stripped of temporal. For 3.1: CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N.
Now, for fields:
product_name: "JeecgBoot" (it's 1-3 words, the product name is JeecgBoot, Jeecg Boot). So "JeecgBoot" or "Jeecg Boot"? In description "JeecgBoot" so I'll use "JeecgBoot".
summary: Must be original synthesis, not copy description. Start with impact verb. So: "Improper authorization in JeecgBoot up to 3.9.0 allows authenticated low-privileged attackers to access position-based user lists by manipulating the positionId parameter. The vulnerability in the getPositionUserList endpoint exposes potentially sensitive user data. Exploit code is publicly available, though attack complexity is high."
Make sure not to start with "A vulnerability". That's fine. Mention that exploit is public, POC exists. EPSS low (0.04%) but not notable. No KEV mention. So summary: "Improper authorization in JeecgBoot versions up to 3.9.0 allows low-privileged remote attackers to enumerate position-associated user data via crafted positionId parameter manipulation on the /sys/position/getPositionUserList endpoint. The issue exposes limited confidential information, and publicly available exploit code exists, although exploitation requires high attack complexity." That's good.
technical_context: Explain underlying technology: JeecgBoot is a Java-based low-code development platform. The CWE-266 Incorrect Privilege Assignment means the authorization check for the positionId parameter is flawed. The /sys/position/getPositionUserList endpoint likely returns list of users belonging to a specific position, and without proper verification, a user could query positions they shouldn't have access to. CPE indicates product: jeecg:jeecg_boot. So I'll write something educational: "JeecgBoot is an open-source low-code Java development platform. The flawed endpoint /sys/position/getPositionUserList is designed to return user lists for a given position. Under CWE-266, incorrect privilege assignment stems from missing or insufficient authorization checks on the positionId parameter, enabling an authenticated user with minimal privileges to access user data associated with arbitrary positions. This is a classic IDOR (Insecure Direct Object Reference) variant where the parameter lacks proper ownership validation."
risk_assessment: Need to combine signals: CVSS 4.0 score 1.3 (very low), but that's due to high attack complexity and only low confidentiality impact. EPSS 0.04% (low exploitation likelihood). KEV: no, not in KEV. POC: publicly available. SSVC: Exploitation: public PoC (but no active exploitation). Automatable: high complexity makes automation unlikely. Technical Impact: low (confidentiality, no integrity/availability). So real-world priority is low despite public exploit. Contrast: "CVSS indicates network attack vector but high complexity, requiring attacker to already have low-privileged account. EPSS score is low (0.04%), suggesting limited exploitation probability. No active exploitation reported. Public exploit code exists but is not easily weaponized due to difficulty." That covers. Also note missing vendor response.
affected_products: Write paragraph: "JeecgBoot versions up to 3.9.0 are affected, as per CPE cpe:2.3:a:jeecg:jeecg_boot:*:*:*:*:*:*:*:*. The vendor has not responded to disclosure, and no official advisory or patch version is available. Reference: (provide links from references) https://vuldb.com/?id.338504 and the GitHub issue link https://github.com/Hwwg/cve/issues/39." Actually the description says "up to 3.9.0", so version range all versions through 3.9.0.
remediation: Primary fix? No patch available, vendor hasn't responded. So suggest compensating controls: "No vendor-released patch is available; the vendor has not responded to disclosure. As a mitigation, restrict access to the /sys/position/getPositionUserList endpoint to authorized users only via web application firewall rules or reverse proxy, or disable the feature if not needed. Implement strict authorization checks on positionId to ensure users can only query their own positions. Contact JeecgBoot developers for an official fix." Since patch is not available, say "No vendor-released patch identified at time of analysis". Then suggest workarounds.
exploit_scenario: Realistic attack scenario: "An authenticated attacker with standard user privileges sends crafted requests to /sys/position/getPositionUserList with arbitrary positionId values, potentially enumerating user lists across different organizational positions. This could leak sensitive organizational structure information and user associations, although exploitation is difficult due to required knowledge of valid position IDs."
exploitation_conditions: Must be specific prerequisites. The description says: function getPositionUserList of /sys/position/getPositionUserList, argument positionId. So conditions: "The attacker must be authenticated with at least low-level user privileges (PR:L). The target must have the /sys/position/getPositionUserList endpoint accessible. The attacker must be able to manipulate the positionId parameter. No default configuration changes are required; the vulnerability is inherent in the function's authorization logic. High attack complexity arises from the need to guess or know valid position IDs to enumerate users, but these may be predictable or brute-forceable." Note that the CVSS says AC:H, so we can mention that it's not trivial. No user interaction required.
attack_chain: Steps: "Access authenticated session as low-privileged user → Enumerate or guess valid position IDs → Send crafted request to /sys/position/getPositionUserList with target positionId → Exfiltrate user list data associated with that position." That's 3-4 steps. I'll use 4-step: Access → Delivery → Exploit → Impact? More like: "Authenticate as low-privileged user → Identify valid positionId values → Send manipulated request to getPositionUserList → Retrieve confined user data." So: "Authenticate with low privileges → Discover or brute-force valid positionId values → Send crafted HTTP request to /sys/position/getPositionUserList → Receive user list data associated with targeted position." That's 4 steps. Good.
confidence_notes: "Public exploit code available (GitHub issue). Vendor unresponsive; no official fix confirmed. CVSS and CWE assigned by VulDB. EPSS data sourced from FIRST. Affected version range inferred from description and CPE. No active exploitation confirmed." That's specific. Forbidden generic phrases: Avoid "analysis based on available data" – I'll state exactly what is confirmed and missing.
prevalence: JeecgBoot is an open-source low-code platform, likely used but not as widespread as major frameworks. I'd say "medium" – it's a commonly used Java low-code tool, but not ubiquitous like Spring. Anchors: medium "common but not everywhere". Prevalence basis: "open-source Java low-code platform with moderate enterprise adoption". So "medium".
prevalence_basis: "open-source Java low-code platform with moderate enterprise adoption" within 12 words.
assessed_cvss_vector: CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N
assessed_cvss_rationale: "Requires low-privileged account and high attack complexity to guess position IDs; only low confidentiality impact." (within 25 words). That justifies AC:H, C:L.
assessed_cvss40_vector: CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N (no temporal).
Now construct JSON. All fields must be plain text strings. No markdown. Ensure I don't use prohibited phrases. Product_name: "JeecgBoot". Summary not starting with A vulnerability etc. Technical_context: explain CWE-266, etc. Risk_assessment: mention all signals. Affected_products: paragraph with links. Remediation: no patch, suggest mitigations. Exploit_scenario: realistic. Exploitation_conditions: specific. Attack_chain: steps separated by ' → '. Confidence_notes: specific. Prevalence and basis: "medium" and justification.
Check exploitation conditions: "FORBIDDEN generic phrases: 'Network access required.' / 'Specific configuration needed.' / 'Depends on deployment.'" So I need to avoid those. I will list the exact prerequisites: authenticated as low-privileged user, accessible endpoint, ability to manipulate positionId. I'll note that no special configuration is required beyond the existence of the feature. That is specific. I'll
More in Jeecg Boot
View allJeecg-boot v3.4.3 was discovered to contain a SQL injection vulnerability via the component updateNullByEmptyString. Rat
Jeecg-boot v3.4.3 was discovered to contain a SQL injection vulnerability via the component /sys/duplicate/check. Rated
JeecgBoot v3.7.1 was discovered to contain a SQL injection vulnerability via the component /onlDragDatasetHead/getTotalD
SSTI injection vulnerability in jeecg-boot version 3.5.3, allows remote attackers to execute arbitrary code via crafted
SQL injection vulnerability in jeecg-boot v3.5.3, allows remote attackers to escalate privileges and obtain sensitive in
SQL injection vulnerability in jeecg-boot version 3.5.3, allows remote attackers to escalate privileges and obtain sensi
Jeecg boot up to v3.5.3 was discovered to contain a SQL injection vulnerability via the component /jeecg-boot/jmreport/s
jeecg-boot v3.5.1 was discovered to contain a SQL injection vulnerability via the title parameter at /sys/dict/loadTreeD
jeecg-boot 3.5.0 and 3.5.1 have a SQL injection vulnerability the id parameter of the /jeecg-boot/jmreport/show interfac
A vulnerability classified as critical has been found in jeecg-boot 3.5.0. Rated critical severity (CVSS 9.8), this vuln
Jeecg boot up to v3.5.3 was discovered to contain an arbitrary file read vulnerability via the interface /testConnection
jjeecg-boot V3.5.0 has an unauthorized arbitrary file upload in /jeecg-boot/jmreport/upload interface. Rated medium seve
Same weakness CWE-266 – Incorrect Privilege Assignment
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today