Skip to content
Heist/ feed
Back to feed
High

mcp-shell: Secure Mode Allowlist Bypass via Default `/bin/bash` Executable

Type: advisorySources: OSV

mcp-shell is an MCP server for running shell commands securely, auditably, and on demand. Prior to 0.6.0, the default Docker security.yaml includes /bin/bash in allowed_executables, while security.go validates only the first token and checkBlockedPatternsAndCommands does not reject the shell command-mode flag -c. A caller of the shell_exec MCP tool can provide the command argument `/bin/bash -c `, which passes validation and reaches executor.go, where parseCommand and exec.CommandContext execute the arbitrary command as mcpuser outside the intended allowlist. This issue is fixed in version 0.6.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-55581
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 18:02 UTC · Revision 1

Source evidence

mcp-shell: Secure Mode Allowlist Bypass via Default `/bin/bash` Executable

core-osv · Original source

Published 25 Aug 2026, 15:40 UTC

mcp-shell is an MCP server for running shell commands securely, auditably, and on demand. Prior to 0.6.0, the default Docker security.yaml includes /bin/bash in allowed_executables, while security.go validates only the first token and checkBlockedPatternsAndCommands does not reject the shell command-mode flag -c. A caller of the shell_exec MCP tool can provide the command argument `/bin/bash -c `, which passes validation and reaches executor.go, where parseCommand and exec.CommandContext execute the arbitrary command as mcpuser outside the intended allowlist. This issue is fixed in version 0.6.0.

osv:CVE-2026-55581
Complete source record
{
  "id": "507a64bbccb2461647cde95809570b67611e9dcc42357c70acee50a31f2d260f",
  "url": "https://osv.dev/vulnerability/CVE-2026-55581",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "mcp-shell: Secure Mode Allowlist Bypass via Default `/bin/bash` Executable",
    "summary": "mcp-shell is an MCP server for running shell commands securely, auditably, and on demand. Prior to 0.6.0, the default Docker security.yaml includes /bin/bash in allowed_executables, while security.go validates only the first token and checkBlockedPatternsAndCommands does not reject the shell command-mode flag -c. A caller of the shell_exec MCP tool can provide the command argument `/bin/bash -c `, which passes validation and reaches executor.go, where parseCommand and exec.CommandContext execute the arbitrary command as mcpuser outside the intended allowlist. This issue is fixed in version 0.6.0.",
    "evidence": "osv:CVE-2026-55581",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-55581",
      "aliases": [
        "CVE-2026-55581",
        "GHSA-3x77-wg38-92r3",
        "GO-2026-6290"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/sonirico/mcp-shell",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "df02c8c74044a950d5c085626da8de49c7551cd5"
                },
                {
                  "fixed": "f31377fce6ec31114e5a4398c0e5270552bce09f"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.6.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "f31377fce6ec31114e5a4398c0e5270552bce09f"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "df02c8c74044a950d5c085626da8de49c7551cd5"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v0.6.0"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v0.5.0",
            "v0.4.0",
            "v0.3.1",
            "v0.3.0",
            "v0.2.2",
            "v0.2.0",
            "v0.1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-55581.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:31.015804497Z",
      "provider": "osv",
      "references": [
        "https://github.com/sonirico/mcp-shell/releases/tag/v0.6.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/55xxx/CVE-2026-55581.json",
        "https://github.com/sonirico/mcp-shell/security/advisories/GHSA-3x77-wg38-92r3",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-55581",
        "https://github.com/sonirico/mcp-shell/commit/f31377fce6ec31114e5a4398c0e5270552bce09f",
        "https://github.com/sonirico/mcp-shell/pull/16"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-1188",
          "CWE-183",
          "CWE-78"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/55xxx/CVE-2026-55581.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-55581",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 498125,
  "published_at": "2026-08-25T15:40:10.992+00:00"
}