<?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>Sat, 03 Oct 2026 20:40:20 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-55582</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-55582</link>
      <description>&lt;p&gt;mcp-shell is an MCP server for running shell commands securely, auditably, and on demand. Prior to 0.6.0, the default security.yaml allows /usr/bin/git, while security.go omits ! from containsShellMetacharacters and containsDangerousShellConstructs and applies no per-executable argument policy. A caller of the shell_exec MCP tool can provide the command argument /usr/bin/git -c alias.pwn=!&amp;lt;arbitrary-command&amp;gt;, causing Git to create a shell alias and execute arbitrary OS commands as the mcp-shell process user. The default Docker image runs as mcpuser with Git installed and secure mode enabled, so the bypass is exploitable in the default deployment without additional authentication beyond MCP connectivity. This issue is fixed in version 0.6.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;mcp-shell is an MCP server for running shell commands securely, auditably, and on demand. Prior to 0.6.0, the default security.yaml allows /usr/bin/git, while security.go omits ! from containsShellMetacharacters and containsDangerousShellConstructs and applies no per-executable argument policy. A caller of the shell_exec MCP tool can provide the command argument /usr/bin/git -c alias.pwn=!&amp;lt;arbitrary-command&amp;gt;, causing Git to create a shell alias and execute arbitrary OS commands as the mcp-shell process user. The default Docker image runs as mcpuser with Git installed and secure mode enabled, so the bypass is exploitable in the default deployment without additional authentication beyond MCP connectivity. This issue is fixed in version 0.6.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-55582</guid>
    </item>
    <item>
      <title>GHSA-74hp-mggr-hv58 — mcp-shell has a Secure Mode Allowlist Bypass via Git Shell Alias</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-74hp-mggr-hv58</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/sonirico/mcp-shell&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`mcp-shell`&amp;#39;s &amp;#34;secure mode&amp;#34; is designed to restrict command execution to an allowlist of executables defined in `security.yaml`. The default configuration includes `/usr/bin/git`. The security validator in `security.go` blocks common shell metacharacters (`|&amp;amp;;&amp;lt;&amp;gt;(){}[]$\``) but omits `!`, which is the prefix Git uses to execute shell aliases (`alias.NAME=!CMD`). An attacker who can invoke the `shell_exec` MCP tool can pass `/usr/bin/git -c alias.pwn=!&amp;lt;arbitrary-command&amp;gt;` as the command argument, bypassing all validation and achieving arbitrary OS command execution as the `mcp-shell` process user. The default Docker image runs as `mcpuser` (UID 1000) with Git installed and secure mode enabled, making this exploitable in the default deployment with no authentication required.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The vulnerability is a classic OS Command Injection (CWE-78) in the `shell_exec` MCP tool handler. The data flow from attacker input to shell execution is:&lt;/p&gt;
&lt;p&gt;1. **`main.go:89-91`** — The MCP tool schema exposes a required string parameter `command` with no server-side type constraints.
2. **`main.go:102`** — `shell_exec` is bound to `shellHandler.handle`.
3. **`handler.go:34`** — The handler reads the attacker-controlled value: `command, err := request.RequireString(&amp;#34;command&amp;#34;)`.
4. **`handler.go:49`** — The command string is passed to `h.validator.validateCommand(command)`.
5. **`security.go:136`** — `containsShellMetacharacters` checks for `|&amp;amp;;&amp;lt;&amp;gt;(){}[]$\`` but `!` is absent from…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/sonirico/mcp-shell&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`mcp-shell`&amp;#39;s &amp;#34;secure mode&amp;#34; is designed to restrict command execution to an allowlist of executables defined in `security.yaml`. The default configuration includes `/usr/bin/git`. The security validator in `security.go` blocks common shell metacharacters (`|&amp;amp;;&amp;lt;&amp;gt;(){}[]$\``) but omits `!`, which is the prefix Git uses to execute shell aliases (`alias.NAME=!CMD`). An attacker who can invoke the `shell_exec` MCP tool can pass `/usr/bin/git -c alias.pwn=!&amp;lt;arbitrary-command&amp;gt;` as the command argument, bypassing all validation and achieving arbitrary OS command execution as the `mcp-shell` process user. The default Docker image runs as `mcpuser` (UID 1000) with Git installed and secure mode enabled, making this exploitable in the default deployment with no authentication required.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The vulnerability is a classic OS Command Injection (CWE-78) in the `shell_exec` MCP tool handler. The data flow from attacker input to shell execution is:&lt;/p&gt;
&lt;p&gt;1. **`main.go:89-91`** — The MCP tool schema exposes a required string parameter `command` with no server-side type constraints.
2. **`main.go:102`** — `shell_exec` is bound to `shellHandler.handle`.
3. **`handler.go:34`** — The handler reads the attacker-controlled value: `command, err := request.RequireString(&amp;#34;command&amp;#34;)`.
4. **`handler.go:49`** — The command string is passed to `h.validator.validateCommand(command)`.
5. **`security.go:136`** — `containsShellMetacharacters` checks for `|&amp;amp;;&amp;lt;&amp;gt;(){}[]$\`` but `!` is absent from…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-74hp-mggr-hv58</guid>
    </item>
  </channel>
</rss>
