{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","favicon":"https://feed.craftedsignal.io/favicon-32x32.png","feed_url":"https://feed.craftedsignal.io/products/openc3--5.12.0--7.2.1/feed.json","home_page_url":"https://feed.craftedsignal.io/","icon":"https://feed.craftedsignal.io/apple-touch-icon.png","items":[{"_cs_actors":[],"_cs_cpes":["cpe:2.3:a:openc3:openc3:*:*:*:*:*:*:*:*"],"_cs_cves":[{"cvss":8.8,"id":"CVE-2026-77601"}],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["openc3 (\u003e= 5.12.0, \u003c= 7.2.1)"],"_cs_severities":["high"],"_cs_tags":["remote-code-execution","command-injection","cve-2026-77601"],"_cs_type":"advisory","_cs_vendors":["OpenC3"],"content_html":"\u003cp\u003eOpenC3 COSMOS, specifically the \u003ccode\u003eopenc3-cosmos-cmd-tlm-api\u003c/code\u003e service, is vulnerable to authenticated OS command injection via the \u003ccode\u003epypi_url\u003c/code\u003e setting. An attacker can use the JSON-RPC method \u003ccode\u003eset_setting\u003c/code\u003e to update this configuration with a string containing shell metacharacters. During the plugin installation process, the application incorrectly uses Ruby backticks to invoke \u003ccode\u003e/openc3/bin/pipinstall\u003c/code\u003e, passing the unsanitized \u003ccode\u003epypi_url\u003c/code\u003e directly to \u003ccode\u003e/bin/sh\u003c/code\u003e. This behavior impacts OpenC3 versions 5.12.0 through 7.2.1. In the open-source edition, the vulnerability is accessible to any authenticated user due to improper authorization checks in \u003ccode\u003eopenc3/lib/openc3/utilities/authorization.rb\u003c/code\u003e. Successful exploitation results in command execution as the \u003ccode\u003eopenc3\u003c/code\u003e service user (uid 1001) within the application container, granting access to sensitive credentials, Redis/Valkey secrets, and bucket storage.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAttacker authenticates to the \u003ccode\u003ePOST /openc3-api/auth/verify\u003c/code\u003e endpoint to obtain a valid session token.\u003c/li\u003e\n\u003cli\u003eAttacker invokes the \u003ccode\u003eset_setting\u003c/code\u003e JSON-RPC method via \u003ccode\u003ePOST /openc3-api/api\u003c/code\u003e to set the \u003ccode\u003epypi_url\u003c/code\u003e parameter to a malicious payload (e.g., \u003ccode\u003ehttps://pypi.org ; \u0026lt;command\u0026gt; ; #\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAttacker prepares a malicious plugin gem containing a \u003ccode\u003erequirements.txt\u003c/code\u003e or \u003ccode\u003epyproject.toml\u003c/code\u003e file to trigger the Python installation logic.\u003c/li\u003e\n\u003cli\u003eAttacker uploads the malicious plugin via \u003ccode\u003ePOST /openc3-api/plugins\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAttacker triggers the plugin installation using the hash obtained from the upload via \u003ccode\u003ePOST /openc3-api/plugins/install/\u0026lt;id\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eopenc3/lib/openc3/models/plugin_model.rb\u003c/code\u003e script executes the injected payload through the Ruby backtick operator, which spawns \u003ccode\u003e/bin/sh -c\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe operating system executes the malicious command with the privileges of the \u003ccode\u003eopenc3\u003c/code\u003e service user.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eSuccessful exploitation allows for full control of the \u003ccode\u003eopenc3\u003c/code\u003e service account inside the container. This leads to the exfiltration or modification of telemetry and commanding data, compromise of cloud storage (S3) credentials, and access to internal Redis/Valkey configuration passwords. This vulnerability enables lateral movement or deeper persistence within the scope of the affected container.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eUpgrade OpenC3 to a patched version once available; monitor vendor security advisories for the specific release addressing CVE-2026-77601.\u003c/li\u003e\n\u003cli\u003eApply the code-level mitigation by replacing the Ruby backtick execution in \u003ccode\u003eplugin_model.rb\u003c/code\u003e with an \u003ccode\u003eOpenC3::ProcessManager.spawn\u003c/code\u003e call using an argument array to prevent shell interpretation.\u003c/li\u003e\n\u003cli\u003eImplement input validation on the \u003ccode\u003epypi_url\u003c/code\u003e setting to restrict values to legitimate HTTP or HTTPS URLs.\u003c/li\u003e\n\u003cli\u003eReview audit logs for anomalous \u003ccode\u003eset_setting\u003c/code\u003e calls involving JSON-RPC where the parameter values contain shell metacharacters like \u003ccode\u003e;\u003c/code\u003e, \u003ccode\u003e\u0026amp;\u003c/code\u003e, \u003ccode\u003e|\u003c/code\u003e, or backticks.\u003c/li\u003e\n\u003c/ol\u003e\n","date_modified":"2026-09-23T19:57:20Z","date_published":"2026-09-23T19:57:20Z","id":"https://feed.craftedsignal.io/briefs/2026-09-openc3-rce/","summary":"Authenticated users can achieve arbitrary OS command execution in the OpenC3 COSMOS API via shell metacharacter injection in the pypi_url configuration setting during plugin installation.","title":"Authenticated OS Command Injection in OpenC3 COSMOS","url":"https://feed.craftedsignal.io/briefs/2026-09-openc3-rce/"}],"language":"en","title":"CraftedSignal Threat Feed - Openc3 (\u003e= 5.12.0, \u003c= 7.2.1)","version":"https://jsonfeed.org/version/1.1"}