Skip to content

GHSA-wgx6-g857-jjf7 CVE-2026-42084 PYSEC-2026-2242

OpenC3 COSMOS: Hijacked session token can be used to reset password for persistence

High PyPIRubyGems
Severity
8.1 / 10
High · CVSS 3.1
Exploit chance (EPSS)
0.30%
Chance of exploitation in the next 30 days. Higher than 23.27% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-620 Unverified Password Change
Fix
Available
2 packages have a fixed version

Description

Summary

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.

Details

The design flaw in authentication model (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.

PoC

  1. Attacker is logged in user account with hijacked valid session token, but not knowing the actual password
  2. Legitimate user, as preventive action, changes his password (password123) using old password (password), that he knows, then establishes new session
  3. 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 <img width="912" height="479" alt="image" src="https://github.com/user-attachments/assets/d27b5980-0326-40f8-bb39-657d7b1c95a0" /> <img width="923" height="423" alt="image" src="https://github.com/user-attachments/assets/060d9fe1-637e-4a2d-9142-76612984ea28" />

Impact

Persistence of an attacker who obtained valid session token and preventing legitimate users from account access

Affected versions

PyPI

PackageVulnerableFixed in
openc3
< 6.10.5
6.10.5

RubyGems

PackageVulnerableFixed in
openc3
< 6.10.5
6.10.5
openc3
>= 7.0.0.pre.rc1, < 7.0.0-rc3
7.0.0-rc3

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

openc3 PyPI → 6.10.5

pip
pip install --upgrade "openc3>=6.10.5"
poetry
poetry add "openc3>=6.10.5"
uv
uv add "openc3>=6.10.5"

openc3 RubyGems → 6.10.5

bundler
bundle update openc3 # Gemfile: gem "openc3", ">= 6.10.5"

Severity breakdown

CVSS 3.1 8.1

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Weakness

CWE-620: Unverified Password Change

When setting a new password for a user, the product does not require knowledge of the original password, or using another form of authentication.

How to prevent it
  • Architecture and Design: When prompting for a password change, force the user to provide the original password in addition to the new password.
  • Architecture and Design: Do not use "forgotten password" functionality. But if you must, ensure that you are only providing information to the actual user, e.g. by using an email address or challenge question that the legitimate user already provided in the past; do not allow the current user to change this identity information until the correct password has been provided.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-jjq7-m736-w977
OpenC3 COSMOS: Authenticated remote code execution via the user-writable config overlay (table definitions, cmd/tlm definitions, and script suites)
Critical Also affects openc3
GHSA-vp3w-52v9-q57f
OpenC3 COSMOS: Authenticated OS command injection via the `pypi_url` setting
High Also affects openc3
GHSA-2wvh-87g2-89hr
OpenC3 COSMOS: Permissions Bypass Provides User Access to Unassigned Administrative Actions via Script Runner Tool
High Also affects openc3
GHSA-v529-vhwc-wfc5
OpenC3 COSMOS has SQL Injection in QuestDB Time-Series Database
Critical Also affects openc3
GHSA-ffq5-qpvf-xq7x
OpenC3 COSMOS is Vulnerable to Self-XSS Through the Command Sender
Medium Also affects openc3
GHSA-4jvx-93h3-f45h
OpenC3 COSMOS allows arbitrary writes to plugins directory via path-traversed config filenames
Medium Also affects openc3
GHSA-w757-4qv9-mghp
openc3-api Vulnerable to Unauthenticated Remote Code Execution
Critical Also affects openc3
GHSA-4xqv-47rm-37mm
OpenC3 stores passwords in clear text (`GHSL-2024-129`)
Medium Also affects openc3
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor