<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 30 Sep 2026 21:46:53 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-77394</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-77394</link>
      <description>&lt;p&gt;OpenC3 COSMOS provides the functionality needed to send commands to and receive data from one or more embedded systems. From 5.0.6 until 7.3.0, an authenticated actor with system_set permission can store a shared screen through POST /openc3-api/screen whose BUTTON widget action is evaluated by openc3-cosmos-init/plugins/packages/openc3-vue-common/src/widgets/ButtonWidget.vue in another operator&amp;#39;s browser session when the button is activated. The stored script runs in the COSMOS origin and can read localStorage.openc3Token, allowing theft of the victim&amp;#39;s bearer token, account takeover, and actions with the victim&amp;#39;s privileges. The permissive content security policy contributes to execution but is not the primary root cause. This issue is fixed in version 7.3.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;OpenC3 COSMOS provides the functionality needed to send commands to and receive data from one or more embedded systems. From 5.0.6 until 7.3.0, an authenticated actor with system_set permission can store a shared screen through POST /openc3-api/screen whose BUTTON widget action is evaluated by openc3-cosmos-init/plugins/packages/openc3-vue-common/src/widgets/ButtonWidget.vue in another operator&amp;#39;s browser session when the button is activated. The stored script runs in the COSMOS origin and can read localStorage.openc3Token, allowing theft of the victim&amp;#39;s bearer token, account takeover, and actions with the victim&amp;#39;s privileges. The permissive content security policy contributes to execution but is not the primary root cause. This issue is fixed in version 7.3.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-77394</guid>
    </item>
    <item>
      <title>GHSA-gvf2-2rh5-mpgf — OpenC3 COSMOS: Stored, cross-user XSS via Telemetry screen BUTTON widget</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-gvf2-2rh5-mpgf</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: @openc3/vue-common&lt;/p&gt;
&lt;p&gt;## Summary
A user who can save a telemetry **screen** (permission `system_set`) can embed JavaScript in a screen `BUTTON` widget. The `BUTTON` widget **`eval()`s the stored button text in the browser** when the button is activated, and screens are **shared content rendered to other users in the scope**. As a result, an attacker&amp;#39;s stored JavaScript executes **in a different operator&amp;#39;s authenticated session** — a **stored, cross-user XSS** (not self-XSS). The payload runs in the COSMOS origin and can read `localStorage.openc3Token` (the victim&amp;#39;s session token), enabling **session/account takeover** and, via the victim&amp;#39;s privileges, a path to server-side code execution through the Script Runner.&lt;/p&gt;
&lt;p&gt;The site&amp;#39;s Content-Security-Policy permits `&amp;#39;unsafe-inline&amp;#39;`/`&amp;#39;unsafe-eval&amp;#39;` (see &amp;#34;Contributing factor&amp;#34;), so the injected script runs unimpeded.&lt;/p&gt;
&lt;p&gt;- **Product:** OpenC3 COSMOS (Core; likely Enterprise — see scoping note)
- **Affected version:** confirmed **7.2.0** (latest, tested 2026-06-25); the code path is present on `main`. Lower bound for maintainer to confirm.
- **Reporter:** _Arpit Kubadia_&lt;/p&gt;
&lt;p&gt;## Description &amp;amp; root cause
1. **Screen save (the store):** `POST /openc3-api/screen` → `ScreensController#create` (`openc3-cosmos-cmd-tlm-api/app/controllers/screens_controller.rb:35-43`) persists the raw screen text after `authorization(&amp;#39;system_set&amp;#39;)`. No sanitization of the screen body.
2. **The sink (the execution):** the `BUTTON` widget stores the button&amp;#39;s action as its second parameter…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: @openc3/vue-common&lt;/p&gt;
&lt;p&gt;## Summary
A user who can save a telemetry **screen** (permission `system_set`) can embed JavaScript in a screen `BUTTON` widget. The `BUTTON` widget **`eval()`s the stored button text in the browser** when the button is activated, and screens are **shared content rendered to other users in the scope**. As a result, an attacker&amp;#39;s stored JavaScript executes **in a different operator&amp;#39;s authenticated session** — a **stored, cross-user XSS** (not self-XSS). The payload runs in the COSMOS origin and can read `localStorage.openc3Token` (the victim&amp;#39;s session token), enabling **session/account takeover** and, via the victim&amp;#39;s privileges, a path to server-side code execution through the Script Runner.&lt;/p&gt;
&lt;p&gt;The site&amp;#39;s Content-Security-Policy permits `&amp;#39;unsafe-inline&amp;#39;`/`&amp;#39;unsafe-eval&amp;#39;` (see &amp;#34;Contributing factor&amp;#34;), so the injected script runs unimpeded.&lt;/p&gt;
&lt;p&gt;- **Product:** OpenC3 COSMOS (Core; likely Enterprise — see scoping note)
- **Affected version:** confirmed **7.2.0** (latest, tested 2026-06-25); the code path is present on `main`. Lower bound for maintainer to confirm.
- **Reporter:** _Arpit Kubadia_&lt;/p&gt;
&lt;p&gt;## Description &amp;amp; root cause
1. **Screen save (the store):** `POST /openc3-api/screen` → `ScreensController#create` (`openc3-cosmos-cmd-tlm-api/app/controllers/screens_controller.rb:35-43`) persists the raw screen text after `authorization(&amp;#39;system_set&amp;#39;)`. No sanitization of the screen body.
2. **The sink (the execution):** the `BUTTON` widget stores the button&amp;#39;s action as its second parameter…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-gvf2-2rh5-mpgf</guid>
    </item>
  </channel>
</rss>
