{"id":"GHSA-wgx6-g857-jjf7","summary":"OpenC3 COSMOS: Hijacked session token can be used to reset password for persistence","details":"### 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","aliases":["CVE-2026-42084","PYSEC-2026-2242"],"modified":"2026-09-10T03:51:03.787815850Z","published":"2026-04-22T22:13:10Z","database_specific":{"cwe_ids":["CWE-620"],"severity":"HIGH","github_reviewed":true,"github_reviewed_at":"2026-04-22T22:13:10Z","nvd_published_at":"2026-05-04T18:16:30Z"},"references":[{"type":"WEB","url":"https://github.com/OpenC3/cosmos/security/advisories/GHSA-wgx6-g857-jjf7"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-42084"},{"type":"WEB","url":"https://github.com/OpenC3/cosmos/commit/2e623714e3426d5ae81b6f8239d4a2a6937ef776"},{"type":"PACKAGE","url":"https://github.com/OpenC3/cosmos"},{"type":"WEB","url":"https://github.com/OpenC3/cosmos/releases/tag/v6.10.5"},{"type":"WEB","url":"https://github.com/OpenC3/cosmos/releases/tag/v7.0.0-rc3"},{"type":"WEB","url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/openc3/CVE-2026-42084.yml"}],"affected":[{"package":{"name":"openc3","ecosystem":"RubyGems","purl":"pkg:gem/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"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-wgx6-g857-jjf7/GHSA-wgx6-g857-jjf7.json"}},{"package":{"name":"openc3","ecosystem":"RubyGems","purl":"pkg:gem/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"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-wgx6-g857-jjf7/GHSA-wgx6-g857-jjf7.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N"}]}