Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged user
-
DeliveryPOST crafted request to /sys/sysDepartPermission/add
-
ExploitInject arbitrary departId, permissionId, dataRuleIds
-
ExecutionAttach menu/button/data-rule grants to target department
-
ImpactEscalate privileges via delegated department roles
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 | Requires a valid authenticated session as any low-privileged JeecgBoot user (PR:L) - no admin role and no user interaction are needed, matching the AV:N/AC:L/UI:N vector. The specific prerequisite is reaching the POST /sys/sysDepartPermission/add endpoint, which performs no authorization check, allowing arbitrary departId, permissionId, and dataRuleIds values to bind grants to any department. Exploitation is limited by the need for a pre-existing account and by the indirect impact: meaningful privilege escalation depends on the attacker belonging to, or controlling roles within, the targeted department so the injected menu/button/data-rule grants are actually delegated. Affects JeecgBoot versions up to and including 3.9.5 in default configuration. |
| Impact | This is a medium-severity, authenticated access-control flaw (CWE-862) rather than a top-tier priority. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) confirms a network-reachable, low-complexity endpoint, but PR:L means the attacker must already hold a valid low-privileged account, and the impact is limited to integrity (VC:N/VI:L/VA:N) - there is no confidentiality or availability loss, which is why the base score is only 5.3. A public POC exists (VulnCheck-reported, GitHub script), lowering the exploitation barrier, so this qualifies as 'publicly available exploit code exists' - but it is NOT in CISA KEV and there is no confirmed active exploitation. EPSS and SSVC data are NOT provided in the input, so exploitation-probability and automatability cannot be quantified - do not assume widespread opportunistic scanning. The signals are internally consistent (no CVSS-vs-description conflict): a logged-in user abuses a missing authorization check to write permission bindings. Real-world danger hinges on whether the injected department grants actually propagate to the attacker's own roles - a plausible privilege-escalation chain but one requiring a follow-on condition rather than a single-shot takeover. |
| Exploit ScenarioDerived | A low-privileged but authenticated JeecgBoot user sends a crafted POST to /sys/sysDepartPermission/add containing an arbitrary departId plus attacker-chosen permissionId and dataRuleIds, binding high-value menu, button, and data-rule grants to a department they influence. Because the endpoint omits the authorization check, the grants are accepted and can then be delegated to that department's roles, escalating the attacker's effective privileges. A working POC script (poc_depart_permission_add.py) is publicly available, so no original exploit development is required. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 10, 2026
JeecgBoot through 3.9.5 exposes the POST /sys/sysDepartPermission/add endpoint without any authorization check, so any low-privileged authenticated user can create department-permission bindings and attach menu, button, and data-rule grants to arbitrary departments by supplying their own departId, permissionId, and dataRuleIds values. Because the flaw is a missing-authorization issue (CWE-862) rated 5.3 with an assessed CVSS:3.1 vector of AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N, impact is limited to integrity and exploitation requires a pre-existing account plus a department context whose roles will actually delegate the injected grants. Publicly available proof-of-concept exploit code exists, making the issue practically reproducible, but there is no confirmed active exploitation (CISA KEV) at time of analysis.
RemediationAI
No vendor-released patch version is identified in the available data at time of analysis, so the primary action is to apply an upstream JeecgBoot fix as soon as one is published and meanwhile enforce authorization explicitly: gate POST /sys/sysDepartPermission/add behind an administrative role check (or disable the SysDepartPermission add path) at the gateway/reverse-proxy or via a Spring Security interceptor, which stops the exploit but also blocks legitimate department-permission administration until a patched build is deployed. As a compensating control, restrict the endpoint to trusted administrator accounts or internal networks and audit existing rows in the department-permission tables for entries whose departId does not correspond to a legitimate administrative action, since injected bindings persist and will keep delegating menu, button, and data-rule grants to the department's roles until removed. Monitoring logs for unusual calls to /sys/sysDepartPermission/add from low-privileged sessions and rotating credentials of any account suspected of abuse are worthwhile follow-ups; the PoC script at https://github.com/AnkesKasty/cve-request-poc/blob/a7b6d1423555812d8efa26c91c5d0683164b31e5/JeecgBoot/poc_depart_permission_add.py can be used to validate that the blocking rule works, and see the VulnCheck advisory at https://www.vulncheck.com/advisories/jeecgboot-through-3.9.5-missing-authorization-via-sys-sysdepartpermission-add for updates.
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 whose administrative surface is split into modules, with the affected code living in jeecg-module-system/jeecg-system-biz under SysDepartPermissionController (specifically the handler at lines 92-97 in the referenced commit). Department-level permission bindings are the mechanism by which the platform maps menu items, buttons, and data rules to a department so that roles belonging to that department inherit those grants; the controller method is annotated/guarded such that the authorization layer that normally enforces who may mutate these bindings is absent, which is the textbook CWE-862 Missing Authorization pattern. The request body accepts attacker-controlled departId, permissionId, and dataRuleIds fields that are persisted without verification that the caller has any rights over the target department or over the permissions being granted, so the trust boundary between a low-privileged session and privileged administrative configuration is crossed. The CPE cpe:2.3:a:jeecgboot:jeecgboot:*:*:*:*:*:*:*:* confirms the wildcard covers all releases up to and including 3.9.5, matching the VulnCheck advisory scope.
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:N/VI:L/VA:N/SC:N/SI:N/SA:N
Network endpoint with low complexity but requires an authenticated low-privileged account (PR:L); impact is limited to integrity (writing permission bindings) with no confidentiality or availability loss.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
JeecgBoot through 3.9.5 contains a missing authorization vulnerability that allows low-privileged authenticated users to create department permission bindings via POST /sys/sysDepartPermission/add. Attackers can submit arbitrary departId, permissionId and dataRuleIds fields to attach menu, button and data rule grants to any department for delegation to its roles.
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
Database credential disclosure in JeecgBoot through 3.9.5 allows any authenticated low-privileged user to retrieve JDBC
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
EUVD-2026-96572
GHSA-8m49-5x23-469c
NVD
CVE.org
EPSS
Exploit-DB