<?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://cve.radiocsirt.org</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>Tue, 06 Oct 2026 16:54:11 +0000</lastBuildDate>
    <item>
      <title>BREW-claude-code-templates-CVE-2026-73222 — Claude Code Templates: Unauthenticated OS command injection (RCE) in Claude Code Studio server (--studio)</title>
      <link>https://cve.radiocsirt.org/vuln/brew-claude-code-templates-cve-2026-73222</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: claude-code-templates&lt;/p&gt;
&lt;p&gt;### Summary
`npx claude-code-templates --studio` launches &amp;#34;Claude Code Studio&amp;#34;, an Express HTTP server (`cli-tool/src/sandbox-server.js`, default port 3444) that binds to **all interfaces** (`0.0.0.0`), sets `Access-Control-Allow-Origin: *`, and requires **no authentication**. Two POST endpoints pass attacker-controlled request-body fields into `child_process.spawn(..., { shell: true })`. Because `shell: true` makes Node join the argv array into a single `sh -c` string, the fields are parsed by the shell and metacharacters execute. Any unauthenticated attacker who can reach the port — a malicious web page the developer visits, or anyone on the same LAN — can execute arbitrary OS commands on the developer&amp;#39;s machine.&lt;/p&gt;
&lt;p&gt;### Details
In `cli-tool/src/sandbox-server.js`:&lt;/p&gt;
&lt;p&gt;- `app.listen(PORT, ...)` is called with no host argument, so the server listens on `0.0.0.0` / `::` (reachable from the LAN, not just localhost).
- The CORS middleware sends `Access-Control-Allow-Origin: *` and answers the preflight `OPTIONS` for any origin, so a browser will deliver cross-origin POSTs to it.
- There is no authentication on any endpoint.&lt;/p&gt;
&lt;p&gt;The vulnerable sinks:&lt;/p&gt;
&lt;p&gt;1. `POST /api/execute` — the `prompt` body field flows into `executeLocalTask()`:
   ```js
   const child = spawn(&amp;#39;claude&amp;#39;, [finalPrompt], { /* ... */ shell: true });
   The only validation on prompt is a length check (&amp;gt;= 10 chars). With shell: true, finalPrompt is interpreted by the shell.&lt;/p&gt;
&lt;p&gt;2. POST /api/install-agent — the agentName body…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: claude-code-templates&lt;/p&gt;
&lt;p&gt;### Summary
`npx claude-code-templates --studio` launches &amp;#34;Claude Code Studio&amp;#34;, an Express HTTP server (`cli-tool/src/sandbox-server.js`, default port 3444) that binds to **all interfaces** (`0.0.0.0`), sets `Access-Control-Allow-Origin: *`, and requires **no authentication**. Two POST endpoints pass attacker-controlled request-body fields into `child_process.spawn(..., { shell: true })`. Because `shell: true` makes Node join the argv array into a single `sh -c` string, the fields are parsed by the shell and metacharacters execute. Any unauthenticated attacker who can reach the port — a malicious web page the developer visits, or anyone on the same LAN — can execute arbitrary OS commands on the developer&amp;#39;s machine.&lt;/p&gt;
&lt;p&gt;### Details
In `cli-tool/src/sandbox-server.js`:&lt;/p&gt;
&lt;p&gt;- `app.listen(PORT, ...)` is called with no host argument, so the server listens on `0.0.0.0` / `::` (reachable from the LAN, not just localhost).
- The CORS middleware sends `Access-Control-Allow-Origin: *` and answers the preflight `OPTIONS` for any origin, so a browser will deliver cross-origin POSTs to it.
- There is no authentication on any endpoint.&lt;/p&gt;
&lt;p&gt;The vulnerable sinks:&lt;/p&gt;
&lt;p&gt;1. `POST /api/execute` — the `prompt` body field flows into `executeLocalTask()`:
   ```js
   const child = spawn(&amp;#39;claude&amp;#39;, [finalPrompt], { /* ... */ shell: true });
   The only validation on prompt is a length check (&amp;gt;= 10 chars). With shell: true, finalPrompt is interpreted by the shell.&lt;/p&gt;
&lt;p&gt;2. POST /api/install-agent — the agentName body…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/brew-claude-code-templates-cve-2026-73222</guid>
    </item>
    <item>
      <title>EUVD-2026-351970</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-351970</link>
      <description>EUVD-2026-351970</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-351970</guid>
    </item>
    <item>
      <title>fkie_cve-2026-73222</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-73222</link>
      <description>&lt;p&gt;Claude Code Templates is a CLI tool for configuring and monitoring Claude Code. Prior to 1.29.4, the Claude Code Studio server launched by the --studio option in cli-tool/src/sandbox-server.js binds to all interfaces on port 3444, permits cross-origin requests, and requires no authentication. The POST /api/execute endpoint passes the prompt request-body field to executeLocalTask(), and POST /api/install-agent passes the agentName request-body field to a child process. The same unsafe agent field path is reachable from /api/execute through checkAndInstallAgent(). These attacker-controlled values reach child_process.spawn() with shell execution enabled, causing Node.js to construct a shell command in which metacharacters are interpreted. An attacker who can reach the port directly, or who convinces a developer running Studio to visit a malicious website, can execute arbitrary operating-system commands with the developer&amp;#39;s privileges and compromise source code, credentials, and local data. This issue is fixed in version 1.29.4.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Claude Code Templates is a CLI tool for configuring and monitoring Claude Code. Prior to 1.29.4, the Claude Code Studio server launched by the --studio option in cli-tool/src/sandbox-server.js binds to all interfaces on port 3444, permits cross-origin requests, and requires no authentication. The POST /api/execute endpoint passes the prompt request-body field to executeLocalTask(), and POST /api/install-agent passes the agentName request-body field to a child process. The same unsafe agent field path is reachable from /api/execute through checkAndInstallAgent(). These attacker-controlled values reach child_process.spawn() with shell execution enabled, causing Node.js to construct a shell command in which metacharacters are interpreted. An attacker who can reach the port directly, or who convinces a developer running Studio to visit a malicious website, can execute arbitrary operating-system commands with the developer&amp;#39;s privileges and compromise source code, credentials, and local data. This issue is fixed in version 1.29.4.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-73222</guid>
    </item>
    <item>
      <title>GHSA-79wm-x847-7cvg — Claude Code Templates: Unauthenticated OS command injection (RCE) in Claude Code Studio server (--studio)</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-79wm-x847-7cvg</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: claude-code-templates&lt;/p&gt;
&lt;p&gt;### Summary
`npx claude-code-templates --studio` launches &amp;#34;Claude Code Studio&amp;#34;, an Express HTTP server (`cli-tool/src/sandbox-server.js`, default port 3444) that binds to **all interfaces** (`0.0.0.0`), sets `Access-Control-Allow-Origin: *`, and requires **no authentication**. Two POST endpoints pass attacker-controlled request-body fields into `child_process.spawn(..., { shell: true })`. Because `shell: true` makes Node join the argv array into a single `sh -c` string, the fields are parsed by the shell and metacharacters execute. Any unauthenticated attacker who can reach the port — a malicious web page the developer visits, or anyone on the same LAN — can execute arbitrary OS commands on the developer&amp;#39;s machine.&lt;/p&gt;
&lt;p&gt;### Details
In `cli-tool/src/sandbox-server.js`:&lt;/p&gt;
&lt;p&gt;- `app.listen(PORT, ...)` is called with no host argument, so the server listens on `0.0.0.0` / `::` (reachable from the LAN, not just localhost).
- The CORS middleware sends `Access-Control-Allow-Origin: *` and answers the preflight `OPTIONS` for any origin, so a browser will deliver cross-origin POSTs to it.
- There is no authentication on any endpoint.&lt;/p&gt;
&lt;p&gt;The vulnerable sinks:&lt;/p&gt;
&lt;p&gt;1. `POST /api/execute` — the `prompt` body field flows into `executeLocalTask()`:
   ```js
   const child = spawn(&amp;#39;claude&amp;#39;, [finalPrompt], { /* ... */ shell: true });
   The only validation on prompt is a length check (&amp;gt;= 10 chars). With shell: true, finalPrompt is interpreted by the shell.&lt;/p&gt;
&lt;p&gt;2. POST /api/install-agent — the agentName body…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: claude-code-templates&lt;/p&gt;
&lt;p&gt;### Summary
`npx claude-code-templates --studio` launches &amp;#34;Claude Code Studio&amp;#34;, an Express HTTP server (`cli-tool/src/sandbox-server.js`, default port 3444) that binds to **all interfaces** (`0.0.0.0`), sets `Access-Control-Allow-Origin: *`, and requires **no authentication**. Two POST endpoints pass attacker-controlled request-body fields into `child_process.spawn(..., { shell: true })`. Because `shell: true` makes Node join the argv array into a single `sh -c` string, the fields are parsed by the shell and metacharacters execute. Any unauthenticated attacker who can reach the port — a malicious web page the developer visits, or anyone on the same LAN — can execute arbitrary OS commands on the developer&amp;#39;s machine.&lt;/p&gt;
&lt;p&gt;### Details
In `cli-tool/src/sandbox-server.js`:&lt;/p&gt;
&lt;p&gt;- `app.listen(PORT, ...)` is called with no host argument, so the server listens on `0.0.0.0` / `::` (reachable from the LAN, not just localhost).
- The CORS middleware sends `Access-Control-Allow-Origin: *` and answers the preflight `OPTIONS` for any origin, so a browser will deliver cross-origin POSTs to it.
- There is no authentication on any endpoint.&lt;/p&gt;
&lt;p&gt;The vulnerable sinks:&lt;/p&gt;
&lt;p&gt;1. `POST /api/execute` — the `prompt` body field flows into `executeLocalTask()`:
   ```js
   const child = spawn(&amp;#39;claude&amp;#39;, [finalPrompt], { /* ... */ shell: true });
   The only validation on prompt is a length check (&amp;gt;= 10 chars). With shell: true, finalPrompt is interpreted by the shell.&lt;/p&gt;
&lt;p&gt;2. POST /api/install-agent — the agentName body…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-79wm-x847-7cvg</guid>
    </item>
  </channel>
</rss>
