Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
mcpshield — Drop-in-Fix für die ungepatchte MCP STDIO Command-Injection-Schwachstelle (CVE-2026-30623-Familie) | Kitploit
Tools/GitHubGitHub/csinexus/mcpshield
SchwachstellenanalyseCode-AnalyseAPI-SicherheitstestsDevSecOpsCommand and ControlFehlkonfiguration
GitHubcsinexus/mcpshield

mcpshield

Drop-in-Fix für die ungepatchte MCP STDIO Command-Injection-Schwachstelle (CVE-2026-30623-Familie)

Repository anzeigen
15vor 2 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

mcpshield

Python 3.10+ License: MIT

Ein Drop-in-Fix für die nicht gepatchte MCP-STDIO-Befehlsinjektionslücke (die CVE-2026-30623-Familie, von OX Security im April 2026 als "by design" offengelegt – es kommt kein SDK-Patch). Importieren Sie eine Zeile, und jeder stdio MCP-Server, den Ihre Python-Anwendung startet, erhält eine Validierung von Befehl/Argumenten/Umgebung, bevor das Betriebssystem überhaupt einen Prozess erzeugt.

Wenn Sie neu hier sind, lesen Sie zuerst Geltungsbereich, dann werden Installation und Erste Schritte Sie in unter zwei Minuten schützen.

Inhaltsverzeichnis

  • Projektstatus
  • Geltungsbereich
  • Installation
  • Erste Schritte
    • Option A: der Autopatch (Python-MCP-Hosts)
    • Option B: statische Prüfung (beliebige Sprache, keine Ausführung)
    • Option C: Startüberwachung (Nicht-Python-Hosts)
  • Was wird blockiert vs. was wird gewarnt
  • Die Notluken
  • CLI-Referenz
  • Bekannte Einschränkungen
  • Projektstruktur
  • Entwicklung

Projektstatus

Vor 1.0, aktiv entwickelt.

  • Validierungs-Engine, Autopatch und CLI (check/launch/rules) sind implementiert und werden von einer automatisierten Testsuite abgedeckt, die gegen die echten, auf dem Testrechner installierten Binärprogramme (python, node, npx) läuft – keine Mocks – einschließlich eines echten End-to-End-MCP-Handshakes durch eine echte gestartete Server-Fixtur und eines echten Subprozess-Tests von launch.
  • Noch nicht auf PyPI – siehe Installation.
  • Siehe SECURITY.md für genau das, was abgedeckt ist und was nicht.

Geltungsbereich

Im Geltungsbereich: Validieren des Starts eines stdio MCP-Servers (Befehl + Argumente + Umgebung), bevor er die Betriebssystem-Prozessstartebene erreicht, um insbesondere den Befehls-/Argument-Injektionspfad zu schließen, der in SECURITY.md beschrieben ist.

Ausdrücklich ausgeschlossen: Scannen der deklarierten Werkzeuge eines Servers auf riskante Fähigkeiten (das ist ein anderes Problem – siehe AgentGuard), Sandboxing des gestarteten Prozesses und Nicht-STDIO-Transporte (SSE/HTTP) für MCP.

Installation

git clone <this-repo>
cd mcpshield
pip install -e .          # Kern-CLI: click + rich only
pip install -e ".[mcp]"   # falls Sie auch den Python-Autopatch möchten (benötigt das `mcp`-SDK)

Überprüfen, ob es funktioniert hat:

mcpshield --version
mcpshield --help

Erste Schritte

Option A: der Autopatch (Python-MCP-Hosts)

Wenn Ihre Anwendung in Python geschrieben ist und StdioServerParameters erstellt / mcp.client.stdio.stdio_client selbst aufruft, fügen Sie ganz oben in Ihrem Einstiegspunkt einen Import hinzu – bevor irgendetwas anderes mcp.client.stdio importiert:

import mcpshield.autopatch  # Seitenwirkungsimport; muss als erstes kommen

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
# ... verwenden Sie stdio_client genau wie zuvor – es ist jetzt validiert

Ein unsicherer Start löst nun mcpshield.core.errors.UnsafeConfigurationError (eine ValueError-Unterklasse) aus, anstatt jemals einen Prozess zu starten.

Option B: statische Prüfung (beliebige Sprache, keine Ausführung)

Auditieren Sie eine mcpServers-Konfigurationsdatei, ohne etwas auszuführen:

mcpshield check claude_desktop_config.json
+---------------------------------------------------------------+
| Server           | Status  | Befehl | Detail                 |
|------------------+---------+--------+------------------------|
| filesystem       | OK      | npx    | -                      |
| evil-server      | BLOCKED | npx    | Argument '...' enthält |
|                  |         |        | Shell-Metazeichen     |
+---------------------------------------------------------------+

  1 ok, 0 gewarnt, 1 blockiert

Beendet sich mit einem Nicht-Null-Exitcode, wenn etwas BLOCKED ist (fügen Sie --strict hinzu, um auch bei WARN zu scheitern) – setzen Sie es direkt in CI ein.

Option C: Startüberwachung (Nicht-Python-Hosts)

Für einen MCP-Client (Node, Java, Rust, …), der den Python-Autopatch nicht verwenden kann, konfigurieren Sie ihn so, dass er auf mcpshield verweist anstatt auf den eigentlichen Befehl:

{
  "command": "mcpshield",
  "args": ["launch", "--", "npx", "-y", "some-mcp-server"]
}

launch validiert und führt dann den eigentlichen Befehl mit dem gleichen stdio aus, das Ihr MCP-Client erwartet (transparente Durchleitung) – oder lehnt mit einer klaren Fehlermeldung ab, wenn der Start unsicher ist.

Was wird blockiert vs. was wird gewarnt

PrüfungNatives Binärprogramm (z. B. python.exe)Shell-interpretierbar (.cmd/.bat/Shebang-Skript)
Shell-Metazeichen (&, |, ;, Backtick, $(...), …) in einem ArgumentErlaubtBlockiert
NUL-Byte / Zeilenumbruch in einem ArgumentBlockiertBlockiert
Befehl wird über relativen Pfad-Traversal aufgelöst (..)BlockiertBlockiert
Befehl wird nicht zu einer echten Datei aufgelöstBlockiertBlockiert
LD_PRELOAD / NODE_OPTIONS / usw. in der UmgebungEntfernt (Warnung)Entfernt (Warnung)
PYTHONPATH in der UmgebungGekennzeichnet (Warnung), nicht entferntGekennzeichnet (Warnung), nicht entfernt

Native Binärprogramme erhalten lockerere Argumentprüfungen, da sie direkt exec ausführen – es gibt keine Shell, die die Argumentliste neu parst. Shell-interpretierbare Befehle (am häufigsten npx.cmd/npx.bat unter Windows) erhalten strenge Prüfungen, da dies genau der Mechanismus ist, den die zugrunde liegende CVE ausnutzt.

Die Notluken

Beides sind bewusste, wertbezogene Opt-ins – niemals ein pauschales "Checks deaktivieren"-Flag:

  • allow_raw_args=["--some-value-with-a-pipe"] (Bibliothek) befreit bestimmte Argument-Werte, die Sie überprüft haben und denen Sie vertrauen.
  • allow_env=["SOME_VAR"] erlaubt einer normalerweise entfernten Umgebungsvariablen, unverändert durchgelassen zu werden.

CLI-Referenz

BefehlWas er tut
mcpshield check <config> [--format table|json] [--strict]Statische Prüfung einer mcpServers-Konfiguration. Führt nie etwas aus. Nicht-Null-Exit bei jedem BLOCKED (oder auch bei WARN, mit --strict).
mcpshield launch -- <command> [args...]Validiert, führt dann den eigentlichen Befehl mit Durchleitungs-stdio aus.
mcpshield rules listZeigt die aktive Shell-Metazeichen-Blocklist, Umgebungsvariablenlisten und bekannte sichere Launcher-Binärprogramme an.

Bekannte Einschränkungen

Tool herunterladen