<?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>Mon, 05 Oct 2026 23:05:07 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-22813 — Malicious website can execute commands on the local system through XSS in the OpenCode web UI</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-22813</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; anomalyco opencode&lt;/p&gt;
&lt;p&gt;OpenCode is an open source AI coding agent. The markdown renderer used for LLM responses will insert arbitrary HTML into the DOM. There is no sanitization with DOMPurify or even a CSP on the web interface to prevent JavaScript execution via HTML injection. This means controlling the LLM response for a chat session gets JavaScript execution on the http://localhost:4096 origin. This vulnerability is fixed in 1.1.10.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; anomalyco opencode&lt;/p&gt;
&lt;p&gt;OpenCode is an open source AI coding agent. The markdown renderer used for LLM responses will insert arbitrary HTML into the DOM. There is no sanitization with DOMPurify or even a CSP on the web interface to prevent JavaScript execution via HTML injection. This means controlling the LLM response for a chat session gets JavaScript execution on the http://localhost:4096 origin. This vulnerability is fixed in 1.1.10.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-22813</guid>
    </item>
    <item>
      <title>GHSA-c83v-7274-4vgp — Malicious website can execute commands on the local system through XSS in the OpenCode web UI</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-c83v-7274-4vgp</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: opencode-ai&lt;/p&gt;
&lt;p&gt;### Summary
A malicious website can abuse the server URL override feature of the OpenCode web UI to achieve cross-site scripting on `http://localhost:4096`. From there, it is possible to run arbitrary commands on the local system using the `/pty/` endpoints provided by the OpenCode API.&lt;/p&gt;
&lt;p&gt;### Code execution via OpenCode API&lt;/p&gt;
&lt;p&gt;- The OpenCode API has `/pty/` endpoints that allow spawning arbitrary processes on the local machine.
- When you run `opencode` in your terminal, OpenCode automatically starts an HTTP server on `localhost:4096` that exposes the API along with a web interface.
- JavaScript can make arbitrary same-origin `fetch()` requests to the `/pty/` API endpoints. Therefore, JavaScript execution on `http://localhost:4096` gets you code execution on local the machine.&lt;/p&gt;
&lt;p&gt;### JavaScript execution on localhost:4096&lt;/p&gt;
&lt;p&gt;The markdown renderer used for LLM responses will insert arbitrary HTML into the DOM. There is no sanitization with DOMPurify or even a CSP on the web interface to prevent JavaScript execution via HTML injection.&lt;/p&gt;
&lt;p&gt;This means controlling the LLM response for a chat session gets you JavaScript execution on the `http://localhost:4096` origin. This alone would not be enough for a 1-click exploit, but there&amp;#39;s functionality in `packages/app/src/app.tsx` to allow specifying a custom server URL in a `?url=...` parameter:&lt;/p&gt;
&lt;p&gt;```javascript
// packages/app/src/app.tsx
const defaultServerUrl = iife(() =&amp;gt; {
  const param = new URLSearchParams(document.location.search).get(…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: opencode-ai&lt;/p&gt;
&lt;p&gt;### Summary
A malicious website can abuse the server URL override feature of the OpenCode web UI to achieve cross-site scripting on `http://localhost:4096`. From there, it is possible to run arbitrary commands on the local system using the `/pty/` endpoints provided by the OpenCode API.&lt;/p&gt;
&lt;p&gt;### Code execution via OpenCode API&lt;/p&gt;
&lt;p&gt;- The OpenCode API has `/pty/` endpoints that allow spawning arbitrary processes on the local machine.
- When you run `opencode` in your terminal, OpenCode automatically starts an HTTP server on `localhost:4096` that exposes the API along with a web interface.
- JavaScript can make arbitrary same-origin `fetch()` requests to the `/pty/` API endpoints. Therefore, JavaScript execution on `http://localhost:4096` gets you code execution on local the machine.&lt;/p&gt;
&lt;p&gt;### JavaScript execution on localhost:4096&lt;/p&gt;
&lt;p&gt;The markdown renderer used for LLM responses will insert arbitrary HTML into the DOM. There is no sanitization with DOMPurify or even a CSP on the web interface to prevent JavaScript execution via HTML injection.&lt;/p&gt;
&lt;p&gt;This means controlling the LLM response for a chat session gets you JavaScript execution on the `http://localhost:4096` origin. This alone would not be enough for a 1-click exploit, but there&amp;#39;s functionality in `packages/app/src/app.tsx` to allow specifying a custom server URL in a `?url=...` parameter:&lt;/p&gt;
&lt;p&gt;```javascript
// packages/app/src/app.tsx
const defaultServerUrl = iife(() =&amp;gt; {
  const param = new URLSearchParams(document.location.search).get(…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-c83v-7274-4vgp</guid>
    </item>
  </channel>
</rss>
