CVE-2024-47529: OpenC3 COSMOS cleartext password storage in browser localStorage

CVE-2024-47529 · Severity: low · CVSS 3.1 · Published 2024-10-02

OpenC3 COSMOS is a web-based satellite control and equipment testing platform. The application stores user passwords unencrypted in the browser's LocalStorage, making them vulnerable to theft if an attacker can execute JavaScript in the user's session (via cross-site scripting). This could allow attackers to harvest user credentials or hijack sessions, particularly dangerous given that the platform is used to control critical infrastructure like satellites.

Technologies: Openc3 Cosmos, openc3 (PyPI), openc3 (RubyGems). Vendors: npm, Openc3, PyPI, RubyGems.

Quick answers

Is CVE-2024-47529 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2024-47529 being exploited in the wild.
How severe is CVE-2024-47529?
Low severity, with a CVSS score of 3.1, published 2 October 2024.
Which products and versions are affected?
@openc3/tool-common (npm) SEMVER:introduced=0,fixed=5.19.0; Openc3 Cosmos < 5.19.0; openc3 (PyPI) GIT:introduced=0,fixed=b5ab34fe7fa54c0c8171c4aa3caf4e03d6f63bd7|ECOSYSTEM:introduced=0,fixed=5.19.0; openc3 (RubyGems) ECOSYSTEM:introduced=0,fixed=5.19.0.
Is there a fix for CVE-2024-47529?
Yes. @openc3/tool-common (npm): upgrade to 5.19.0 or later; openc3 (PyPI): upgrade to 5.19.0 or later; openc3 (RubyGems): upgrade to 5.19.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2024-47529 attacked?
It is attacked over the network, in a web application.
Am I affected by CVE-2024-47529?
Check whether you run @openc3/tool-common (npm), Openc3 Cosmos, openc3 (PyPI) or one of the others listed at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • @openc3/tool-common (npm): upgrade to 5.19.0 or later
    npm install @openc3/tool-common@5.19.0
  • openc3 (PyPI): upgrade to 5.19.0 or later
    pip install "openc3>=5.19.0"
  • openc3 (RubyGems): upgrade to 5.19.0 or later
    bundle update openc3

Technical details

OpenC3 COSMOS stores user authentication passwords as cleartext in the web browser's LocalStorage, violating secure credential storage practices (CWE-312, CWE-522). When combined with XSS vulnerabilities (GHSL-2024-128), an attacker can inject malicious JavaScript into a victim's session to directly read `localStorage.openc3Token` or the password field, then exfiltrate these credentials. The attack requires the victim to access a malicious redirect parameter on the login page; no special privileges are needed beyond network access to the COSMOS instance. The vulnerability was fixed in version 5.19.0 by switching to session token-based authentication instead of storing passwords client-side.

Affected products

  • OpenC3 COSMOS < 5.19.0
  • OpenC3 openc3 (RubyGems) 5.0.6 through 5.18.0
  • OpenC3 @openc3/tool-common (npm) < 5.19.0
  • OpenC3 openc3 (PyPI) 0.1.0, 5.9.2b0 through 5.18.0

Identifiers

  • CVE-2024-47529
  • GHSA-4xqv-47rm-37mm
  • PYSEC-2024-121

Timeline

  • 2024-07-01: disclosed: Vulnerabilities reported via GitHub private vulnerability reporting
  • 2024-10-02: patched: OpenC3 COSMOS v5.19.0 released with fixes
  • 2024-10-02: advisory: GHSA-4xqv-47rm-37mm, CVE-2024-47529, PYSEC-2024-121 published

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.