Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain low-privileged JeecgBoot account
-
DeliveryEnumerate datasource codes (dbSourceCode)
-
ExploitCall getDynamicDbSourceByCode endpoint
-
ExecutionRetrieve cleartext DB credentials
-
ImpactConnect to backend database directly
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
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 | The attacker must hold a valid low-privileged authenticated JeecgBoot session (PR:L) - exploitation is NOT possible unauthenticated. Given that, the specific prerequisite is reaching the GET /sys/api/getDynamicDbSourceByCode endpoint of SystemApiController, which lacks Shiro permission/role annotations, and supplying a valid datasource code in the dbSourceCode parameter; the target JeecgBoot instance (through 3.9.5) must have dynamic datasources configured so that credentials exist to be returned. No user interaction, no special non-default feature toggle, and no elevated role are required beyond basic authentication. The practical limiting factors are: (1) acquiring any application account, and (2) knowing or enumerating valid dbSourceCode values; the decrypted-password disclosure is the designed behavior of the endpoint once reached. |
| Impact | This is a credible, actionable priority rather than a CVSS-inflated paper risk, though it sits in the moderate band. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N) describes a network-reachable, low-complexity attack requiring only low-privilege authentication, with high confidentiality impact and no integrity or availability impact - consistent with CWE-862 missing authorization leaking secrets. Reinforcing signals: a public PoC exists (AnkesKasty cve-request-poc) and the finding comes from a credible research source (VulnCheck), which lowers the barrier to opportunistic exploitation by anyone who already holds any valid account. Tempering signals: exploitation is NOT unauthenticated (PR:L), so an attacker must first obtain a low-privileged JeecgBoot credential, and the direct impact is confidentiality-only. No EPSS score was provided in the input and the CVE is NOT on CISA KEV, so there is no evidence of active or widespread in-the-wild exploitation at time of analysis - the risk is driven by PoC availability plus the high value of the leaked asset (cleartext database credentials), not by observed campaigns. Net: treat as a near-term patch priority for any multi-tenant or internet-exposed JeecgBoot instance, because the leaked DB passwords enable serious downstream lateral movement even though the base CVE scores the disclosure only. |
| Exploit ScenarioDerived | An attacker who holds or registers any low-privileged JeecgBoot account sends a simple authenticated GET request to /sys/api/getDynamicDbSourceByCode with a guessed or enumerated dbSourceCode value, and the endpoint - missing Shiro permission/role annotations - returns the datasource's JDBC URL, username, and decrypted cleartext database password. A public proof-of-concept (poc_sys_api_credential_family.py) already automates this, so exploitation requires no custom development. The recovered credentials can then be used to connect directly to backend databases outside the application. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 10, 2026
Database credential disclosure in JeecgBoot through 3.9.5 allows any authenticated low-privileged user to retrieve JDBC connection URLs, database usernames, and decrypted cleartext database passwords from the GET /sys/api/getDynamicDbSourceByCode endpoint of SystemApiController. The handler carries no Shiro permission or role annotations, so a basic application account is sufficient; the only practical hurdles are obtaining any valid session and knowing or enumerating a valid dbSourceCode value, and exposure requires that dynamic datasources be configured on the instance. Publicly available exploit code exists, and the impact is confidentiality-only (CVSS 3.1 6.5 / CVSS 4.0 7.1, PR:L), with no evidence of confirmed active exploitation at time of analysis.
RemediationAI
No vendor-released patch was identified at time of analysis; a publicly available proof-of-concept exploit exists (https://github.com/AnkesKasty/cve-request-poc/blob/a7b6d1423555812d8efa26c91c5d0683164b31e5/JeecgBoot/poc_sys_api_credential_family.py), so treat remediation as compensating controls until JeecgBoot ships a fixed release above 3.9.5 and monitor the VulnCheck advisory (https://www.vulncheck.com/advisories/jeecgboot-through-3.9.5-missing-authorization-via-getdynamicdbsourcebycode-endpoint) for an updated version. The most direct control is to add Shiro @RequiresPermissions/@RequiresRoles annotations to the getDynamicDbSourceByCode handler (or an equivalent explicit rule in the Shiro filter chain, e.g. /sys/api/** = authc,roles[admin]) so that only administrative principals can reach it - verify the change against your Shiro configuration first, since an over-broad path rule can break other legitimate system API integrations. If the endpoint is not used by your deployment, block it at the reverse proxy/WAF or remove the controller mapping outright; the trade-off is that any internal automation relying on dynamic-datasource introspection will fail. Because cleartext credentials are the payload, also rotate the passwords for every datasource registered in JeecgBoot and re-encrypt the stored datasource configuration, review database and application logs for prior calls to /sys/api/getDynamicDbSourceByCode, and apply least-privilege grants to the exposed database accounts so that leaked credentials reach only what they need. Finally, restrict who can obtain even a low-privileged JeecgBoot account (disable self-registration, enforce MFA) and add alerting on dbSourceCode enumeration, since PR:L is the only real barrier to exploitation.
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
JeecgBoot is a Spring Boot-based low-code development platform that relies on Apache Shiro for authentication and authorization. The affected code is SystemApiController#getDynamicDbSourceByCode, referenced in the vendor repository at jeecg-boot/jeecg-module-system/jeecg-system-biz/.../api/controller/SystemApiController.java lines 358-361, which is mapped to GET /sys/api/getDynamicDbSourceByCode. The method accepts a dbSourceCode parameter, resolves the matching dynamic datasource configuration, and returns its connection details - including the database password after the platform's configuration-encryption routine decrypts it back to cleartext. Because the method is missing Shiro's @RequiresPermissions/@RequiresRoles annotations (and no equivalent filter-chain rule covers the path), authorization is never evaluated beyond the base authenticated-session check, which is the CWE-862 missing authorization root cause. The CPE cpe:2.3:a:jeecgboot:jeecgboot:*:*:*:*:*:*:*:* with the description's 'through 3.9.5' bound indicates all released versions up to and including 3.9.5 are affected; the vulnerability is an authorization-gap flaw in the platform's own administrative API surface rather than a memory-safety or injection defect.
Know when Jeecgboot gets its next vulnerability
- 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:N/VA:N/SC:N/SI:N/SA:N
Network-reachable endpoint needing only a basic authenticated account (PR:L, AC:L); discloses cleartext credentials so C:H, with no integrity or availability impact and no base-scope change.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
JeecgBoot through 3.9.5 contains a missing authorization vulnerability in the GET /sys/api/getDynamicDbSourceByCode endpoint of SystemApiController, which lacks Shiro permission or role annotations. Any authenticated low-privileged user can supply datasource codes in the dbSourceCode parameter to retrieve JDBC URLs, usernames and decrypted cleartext database passwords.
Technical POC Analysis
CWE-862 (Missing Authorization).
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
JeecgBoot deployments through version 3.9.5 can disclose database connection details and cleartext passwords to any authenticated low-privileged user when dynamic datasources are configured, creating a priority credential-exposure risk for organizations running affected instances. Publicly available exploit code exists, and there is no vendor-released patch identified at time of analysis, so leadership should prioritize containment and credential rotation, especially for internet-facing or sensitive-data environments. Although the vulnerability is confidentiality-only, leaked database credentials could enable follow-on access to connected systems and should be treated as a potential precursor to broader compromise.
No vendor-released patch identified at time of analysis. Interim mitigations include restricting or blocking GET /sys/api/getDynamicDbSourceByCode to trusted administrative networks, disabling dynamic datasource functionality where not required, rotating all database credentials referenced by JeecgBoot dynamic datasources, enforcing least privilege for authenticated application accounts, using WAF/reverse proxy virtual patching, and monitoring for dbSourceCode enumeration or unusual access to the SystemApiController endpoint.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Unauthenticated report data exfiltration in JimuReport (JeecgBoot) through version 2.5.0 lets remote attackers export th
Broken access control in JeecgBoot through 3.9.2 lets authenticated low-privilege users reach the OpenApiAuthController
Privilege escalation in JeecgBoot through 3.9.5 lets any authenticated user approve their own pending tenant administrat
Missing authorization in the saveDeptRolePermission endpoint of JeecgBoot's SysDepartPermissionController lets any authe
SQL injection vulnerability in Beijing Guoju Information Technology Co., Ltd JeecgBoot v.3.7.2 allows a remote attacker
JeecgBoot up to v 3.5.1 was discovered to contain a SQL injection vulnerability via the component queryFilterTableDictIn
JeecgBoot up to v 3.5.1 was discovered to contain a SQL injection vulnerability via the component queryTableDictItemsByC
JeecgBoot through 3.9.5 ships a system log controller whose batch-delete handler performs no authorization check, so any
Missing authorization in JeecgBoot through 3.9.5 lets any authenticated user enumerate record IDs through the unguarded
Authenticated low-privileged users of JeecgBoot through 3.9.5 can retrieve any other user's stored password ciphertext t
Authenticated users of any privilege level on JeecgBoot through 3.9.5 can rewrite DingTalk, WeCom, or Feishu third-party
Tenant ownership takeover in JeecgBoot through 3.9.5 lets any authenticated user - regardless of privilege level - reass
EUVD-2026-96587
GHSA-xqq5-rxcj-4fmx
NVD
CVE.org
EPSS
Exploit-DB