{"id":"CVE-2026-42084","aliases":["EUVD-2026-27057","GHSA-wgx6-g857-jjf7","PYSEC-2026-2242"],"status":"published","title":"OpenC3 COSMOS: Hijacked session token can be used to reset password for persistence","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.","severity":{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00305,"percentile":0.23544,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-620"],"published":"2026-04-22T22:13:10Z","modified":"2026-10-28T02:30:43Z","fixes":[{"ecosystem":"RubyGems","package":"openc3","fixed_in":["6.10.5","7.0.0-rc3"],"sources":["ghsa","osv"]},{"ecosystem":"PyPI","package":"openc3","fixed_in":["6.10.5"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"RubyGems","package":"openc3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.10.5"}]}]},{"source":"ghsa","ecosystem":"RubyGems","package":"openc3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.0.0.pre.rc1"},{"fixed":"7.0.0-rc3"}]}]},{"source":"osv","ecosystem":"RubyGems","package":"openc3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.10.5"}]}],"versions":["5.0.10","5.0.11","5.0.6","5.0.7","5.0.8","5.0.9","5.1.0","5.1.1","5.10.0","5.10.1","5.11.0","5.11.1","5.11.2","5.11.3","5.12.0","5.13.0","5.14.0","5.14.1","5.14.2","5.15.0","5.15.1","5.15.2","5.16.0","5.16.1","5.16.2","5.17.0","5.17.1","5.18.0","5.19.0","5.2.0","5.20.0","5.3.0","5.4.0","5.4.1","5.4.2","5.4.3.pre.beta0","5.5.0","5.5.0.pre.beta0","5.5.1","5.5.2","5.5.2.pre.beta0","5.6.0","5.6.1","5.7.0","5.7.2","5.8.0","5.8.1","5.9.0","5.9.1","6.0.0","6.0.1","6.0.2","6.1.0","6.10.0","6.10.1","6.10.2","6.10.3","6.10.4","6.2.0","6.2.1","6.3.0","6.4.0","6.4.1","6.4.2","6.5.0","6.5.1","6.6.0","6.7.0","6.8.0","6.8.1","6.9.0","6.9.1","6.9.2"]},{"source":"osv","ecosystem":"RubyGems","package":"openc3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.0.0.pre.rc1"},{"fixed":"7.0.0-rc3"}]}],"versions":["7.0.0","7.0.0.pre.rc1","7.0.0.pre.rc2","7.0.0.pre.rc3","7.0.1","7.1.0","7.1.1","7.2.0","7.2.1","7.3.0"]},{"source":"osv","ecosystem":"PyPI","package":"openc3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.10.5"}]}],"versions":["0.1.0","5.10.0","5.10.1","5.11.0","5.11.1","5.11.2","5.11.3","5.12.0","5.13.0","5.14.0","5.14.1","5.14.2","5.15.0","5.15.1","5.15.2","5.16.0","5.16.1","5.16.2","5.17.0","5.17.1","5.18.0","5.19.0","5.20.0","5.9.2b0","6.0.0","6.0.1","6.0.2","6.1.0","6.10.0","6.10.1","6.10.2","6.10.3","6.10.4","6.2.0","6.2.1","6.3.0","6.4.0","6.4.1","6.4.2","6.5.0","6.5.1","6.6.0","6.7.0","6.8.0","6.8.1","6.9.0","6.9.1","6.9.2"]}],"products":[{"vendor":"openc3","product":"cosmos"}],"references":[{"url":"https://github.com/OpenC3/cosmos/security/advisories/GHSA-wgx6-g857-jjf7","tags":["x_refsource_CONFIRM","exploit","Exploit","Vendor Advisory","advisory","web","evidence"]},{"url":"https://github.com/OpenC3/cosmos/commit/2e623714e3426d5ae81b6f8239d4a2a6937ef776","tags":["x_refsource_MISC","Patch","fix","web"]},{"url":"https://github.com/OpenC3/cosmos/releases/tag/v6.10.5","tags":["x_refsource_MISC","Release Notes","web","advisory"]},{"url":"https://github.com/OpenC3/cosmos/releases/tag/v7.0.0-rc3","tags":["x_refsource_MISC","Release Notes","web","advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-42084","tags":["advisory"]},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/openc3/CVE-2026-42084.yml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-wgx6-g857-jjf7"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/42xxx/CVE-2026-42084.json","tags":["advisory"]},{"url":"https://github.com/OpenC3/cosmos","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-42084","title":"OpenC3 COSMOS: Hijacked session token can be used to reset password for persistence","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.","status":"published","published":"2026-05-04T17:11:31.853Z","modified":"2026-05-06T13:39:58.104Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high","assessor":"cna"}],"cwes":["CWE-620"],"updated_at":"2026-11-02T13:40:23.731501Z"}],"euvd":[{"id":"EUVD-2026-27057","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.","status":"published","published":"2026-05-04T17:11:31Z","modified":"2026-05-06T13:39:58Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T19:05:16.683147Z"}],"ghsa":[{"id":"GHSA-wgx6-g857-jjf7","title":"OpenC3 COSMOS: Hijacked session token can be used to reset password for persistence","description":"### Summary\nThe 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.\n\n### Details\nThe design flaw in authentication model ([authentication.rb](https://github.com/OpenC3/cosmos/blob/397abec0d57972881a2e8dc10902d0dce9c27f42/openc3/lib/openc3/utilities/authentication.rb)) allows for interchangeable use of password and session tokens for user authentication As old tokens are not revoked upon password reset, an attacker who has obtained a valid session token can continue to authenticate and change the account’s password even after the victim resets it, thereby maintaining persistent control over the compromised account.\n\n### PoC\n1. Attacker is logged in user account with hijacked valid session token, but not knowing the actual password\n2. Legitimate user, as preventive action, changes his password (_password123_) using old password (_password_), that he knows, then establishes new session\n3. Attacker issues another password change request (in web proxy like Burp) supplying his still valid token as _old_password_, changing it to attacker-password, from this point preventing any other legitimate users from accessing account\n\u003cimg width=\"912\" height=\"479\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d27b5980-0326-40f8-bb39-657d7b1c95a0\" /\u003e\n\u003cimg width=\"923\" height=\"423\" alt=\"image\" src=\"https://github.com/user-attachments/assets/060d9fe1-637e-4a2d-9142-76612984ea28\" /\u003e\n\n### Impact\nPersistence of an attacker who obtained valid session token and preventing legitimate users from account access","status":"published","published":"2026-04-22T22:13:10Z","modified":"2026-05-29T21:45:06Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"cwes":["CWE-620"],"updated_at":"2026-11-02T14:40:15.638885Z"}],"nvd":[{"id":"CVE-2026-42084","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.","status":"published","published":"2026-05-04T18:16:30.357Z","modified":"2026-10-26T19:10:00.163Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high","assessor":"secondary"}],"cwes":["CWE-620"],"updated_at":"2026-11-02T14:12:17.022502Z"}],"osv":[{"id":"CVE-2026-42084","title":"OpenC3 COSMOS: Hijacked session token can be used to reset password for persistence","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.","status":"published","published":"2026-05-04T17:11:31.853Z","modified":"2026-10-28T02:30:43.74909483Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"cwes":["CWE-620"],"updated_at":"2026-11-02T15:45:04.117819Z"},{"id":"GHSA-wgx6-g857-jjf7","title":"OpenC3 COSMOS: Hijacked session token can be used to reset password for persistence","description":"### Summary\nThe 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.\n\n### Details\nThe design flaw in authentication model ([authentication.rb](https://github.com/OpenC3/cosmos/blob/397abec0d57972881a2e8dc10902d0dce9c27f42/openc3/lib/openc3/utilities/authentication.rb)) allows for interchangeable use of password and session tokens for user authentication As old tokens are not revoked upon password reset, an attacker who has obtained a valid session token can continue to authenticate and change the account’s password even after the victim resets it, thereby maintaining persistent control over the compromised account.\n\n### PoC\n1. Attacker is logged in user account with hijacked valid session token, but not knowing the actual password\n2. Legitimate user, as preventive action, changes his password (_password123_) using old password (_password_), that he knows, then establishes new session\n3. Attacker issues another password change request (in web proxy like Burp) supplying his still valid token as _old_password_, changing it to attacker-password, from this point preventing any other legitimate users from accessing account\n\u003cimg width=\"912\" height=\"479\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d27b5980-0326-40f8-bb39-657d7b1c95a0\" /\u003e\n\u003cimg width=\"923\" height=\"423\" alt=\"image\" src=\"https://github.com/user-attachments/assets/060d9fe1-637e-4a2d-9142-76612984ea28\" /\u003e\n\n### Impact\nPersistence of an attacker who obtained valid session token and preventing legitimate users from account access","status":"published","published":"2026-04-22T22:13:10Z","modified":"2026-09-10T03:51:03.78781585Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"cwes":["CWE-620"],"updated_at":"2026-11-02T15:46:58.767335Z"},{"id":"PYSEC-2026-2242","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.","status":"published","published":"2026-05-04T18:16:30.357Z","modified":"2026-07-13T07:15:38.673576423Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T15:52:55.537808Z"}]}}
