CVE-2025-15123
Executive Summary
CVE-2025-15123 is a vulnerability in JeecgBoot up to version 3.9.0, affecting the /sys/sysDepartPermission/datarule/ endpoint. This flaw allows improper authorization due to insufficient access controls, enabling an authenticated attacker with low privileges to access or manipulate department permission data rules. The attack complexity is high, requiring specific conditions, but the exploit has been publicly disclosed. No patch is currently available from the vendor, who has not responded to disclosure attempts. The CVSS score is 3.1 (Low), but the public exploit increases the risk for unpatched systems.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
JeecgBoot is a Java-based rapid development framework. This vulnerability is not related to a package manager (NPM, PyPI, Go, Ruby) but is a direct application-level issue. Organizations using JeecgBoot should treat this as a critical supply chain risk due to the lack of vendor response.
CVSS Breakdown & Threat Level
- CVSS Score: 3.1 (Low)
- Vector: CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N
- Attack Vector: Network (AV:N)
- Attack Complexity: High (AC:H) – Requires specific conditions or chaining with other vulnerabilities.
- Privileges Required: Low (PR:L) – Attacker needs a valid low-privilege account.
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: Low (C:L) – Limited information disclosure.
- Integrity Impact: None (I:N)
- Availability Impact: None (A:N)
Threat Level: Low, but elevated due to public exploit availability and lack of patch.
Deep Dive & Mechanics
The vulnerability resides in the /sys/sysDepartPermission/datarule/ endpoint of JeecgBoot. This endpoint is responsible for managing data rules associated with department permissions. The flaw is an improper authorization (CWE-285) where the application fails to enforce proper access controls, allowing a low-privileged user to query or modify data rules that should be restricted to higher-privileged roles.
The attack requires a high level of complexity, likely due to the need for specific request parameters or session conditions. The exploit has been publicly disclosed, meaning proof-of-concept code is available, making it easier for attackers to leverage.
Vulnerable vs. Patched Code
Since no patch is available, a direct code comparison is not possible. However, the vulnerable code likely lacks proper authorization checks in the controller or service layer for the /sys/sysDepartPermission/datarule/ endpoint.
Vulnerable Code (Conceptual):
@GetMapping("/datarule")
public Result<List<SysDepartPermission>> getDataRules(@RequestParam String departId) {
List<SysDepartPermission> rules = sysDepartPermissionService.findByDepartId(departId);
return Result.ok(rules);
}
Patched Code (Expected):
@GetMapping("/datarule")
public Result<List<SysDepartPermission>> getDataRules(@RequestParam String departId) {
// Check if current user has permission to access this department's rules
if (!hasPermission(departId)) {
return Result.error("Access denied");
}
List<SysDepartPermission> rules = sysDepartPermissionService.findByDepartId(departId);
return Result.ok(rules);
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- A valid low-privilege user account on a JeecgBoot instance (version <= 3.9.0).
- Network access to the target application.
Exploitation Steps:
- Authenticate to the JeecgBoot application and obtain a session token.
- Craft a request to the vulnerable endpoint with a target department ID.
- Send the request and observe the response for unauthorized data access.
Example Request (using cURL):
curl -X GET "http://target.com/sys/sysDepartPermission/datarule?departId=123" \
-H "Cookie: JSESSIONID=your_session_id"
Expected Outcome: The attacker receives data rules for department 123, even if they lack authorization.
Blue Team
Detection:
- Monitor for unusual access patterns to
/sys/sysDepartPermission/datarule/from low-privilege users. - Look for repeated requests with different
departIdparameters, indicating reconnaissance.
Mitigation:
- Implement strict authorization checks on the endpoint.
- Apply the principle of least privilege.
- Monitor logs for unauthorized access attempts.
Indicators of Compromise (IOCs)
- Network: HTTP requests to
/sys/sysDepartPermission/datarule/with suspiciousdepartIdvalues. - Logs: Access logs showing low-privilege users accessing the endpoint.
- System: Unauthorized changes to department permission data rules.
Detection Engineering
YARA Rule
rule CVE_2025_15123_JeecgBoot_Unauthorized_Access {
meta:
description = "Detects exploitation attempts of CVE-2025-15123 in JeecgBoot"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-15123"
strings:
$s1 = "/sys/sysDepartPermission/datarule/" ascii wide nocase
$s2 = "departId=" ascii wide nocase
condition:
all of them
}
Sigma Rule
title: CVE-2025-15123 JeecgBoot Unauthorized Access
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects attempts to exploit improper authorization in JeecgBoot
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-stem: '/sys/sysDepartPermission/datarule/'
condition: selection
falsepositives:
- Legitimate administrative access
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-15123 JeecgBoot Unauthorized Access Attempt"; flow:to_server,established; content:"/sys/sysDepartPermission/datarule/"; http_uri; content:"departId="; http_uri; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the endpoint if not required, or restrict access via firewall or web application firewall (WAF) rules.
- Implement virtual patching by adding authorization checks in a reverse proxy or WAF.
- Monitor logs for exploitation attempts.
Long-term Fix:
- Apply the official patch once released by the vendor.
- Upgrade to a patched version of JeecgBoot.
- Conduct a security audit of the application's authorization logic.
Workarounds:
- Modify the application code to add proper authorization checks (see patched code example).
- Use role-based access control (RBAC) to restrict access to the endpoint.
Valters IT
Securing Digital Frontiers