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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
mcp-stdio-shellguard — Defense-in-depth-Bundle für MCP-stdio-Server: Drop-in-Wrapper für guardExec/guardSpawn, AST-Audit-CLI, Referenz-MCP-Server. Schließt die von Ox-Security identifizierte stdio-RCE-Klasse, von der 200.000 Server betroffen sind (LiteLLM CVE-2025-69256). MIT, TypeScript, Node >= 20. | Kitploit
Tools/GitHubGitHub/studiomeyer-io/mcp-stdio-shellguard
Statische AnalyseSchwachstellenscannerCode-AnalyseScripting & AutomatisierungDevSecOpsDienstprogramme & FrameworksLieferkettensicherheitAPI-Sicherheit
GitHub
studiomeyer-io/mcp-stdio-shellguard

mcp-stdio-shellguard

Defense-in-depth-Bundle für MCP-stdio-Server: Drop-in-Wrapper für guardExec/guardSpawn, AST-Audit-CLI, Referenz-MCP-Server. Schließt die von Ox-Security identifizierte stdio-RCE-Klasse, von der 200.000 Server betroffen sind (LiteLLM CVE-2025-69256). MIT, TypeScript, Node >= 20.

Repository anzeigen
34vor 14h 32mNoch 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

Teil des StudioMeyer MCP Stack — Gebaut auf Mallorca 🌴 · ⭐ wenn du es nutzt

mcp-stdio-shellguard

npm version npm downloads License Last commit GitHub stars

Defense-in-depth-Bundle für MCP-stdio-Server. Umschließt `child_process.exec/spawn`

mit Allowlist + Sandbox + Replay-Erkennung, plus eine AST-Audit-CLI (mcp-shellguard-audit), die MCP-Server-Quellen nach unbereinigten Shell-Aufrufen durchsucht. Schließt die Ox-Security MCP-stdio-RCE-Klasse (200k anfällige Server, Offenlegung Mai 2026).

  • MCP-Spezifikation: 2025-06-18
  • SDK: @modelcontextprotocol/sdk ^1.29.0
  • Node: >= 20
  • Lizenz: MIT
  • Autor: Matthias Meyer (StudioMeyer)

Installation

npm install mcp-stdio-shellguard

Oder führen Sie die Audit-CLI direkt ohne Installation aus:

npx -y -p mcp-stdio-shellguard mcp-shellguard-audit scan ./src

Was es dir bietet

Drei Ebenen, optional und stückweise:

  1. Library-API — direkt einsetzbare guardExec / guardSpawn, die du aus deinem eigenen MCP-Server aufrufst. Default-Deny-Allowlist, Sandbox-Profile, Replay-Fenster.
  2. Audit-CLI — mcp-shellguard-audit scan <path> durchläuft den AST und meldet 12 Anti-Patterns von LOW (no timeout) bis CRITICAL (exec(\...${userInput}...`)`).
  3. Referenz-MCP-Server — mcp-stdio-shellguard-demo stellt 8 Tools bereit, sodass der MCP Inspector / Claude Desktop das Bundle direkt steuern kann.

Tools (Referenz-Server)

ToolTypZweck
guard_execdestruktivAbgesichertes child_process.exec. Erzwingt args[]-Vektor, Allowlist + Sandbox + Replay. Gibt stdout, stderr, exitCode, canonicalHash, isReplay, trustTier zurück.
guard_spawndestruktivAbgesichertes child_process.spawn. Gibt SHA-256-Hashes von stdout/stderr statt vollständiger Inhalte zurück. Lehnt shell:true strikt ab.
register_allowlistmutierendRegistriert einen Tool-Namen mit Executable + Args-Regex. Ohne Registrierung greift Default-Deny.
audit_sourceschreibgeschütztDurchsucht einen TS/JS-Pfad nach Shell-Injection-Anti-Patterns. Gibt AuditFinding[] + Zusammenfassung zurück.
audit_reportschreibgeschütztFormatiert ein Audit-Ergebnis als markdown / json / SARIF 2.1.0.
replay_checkschreibgeschütztBerechnet den kanonischen SHA-256-Hash für einen Aufruf und meldet, ob er bereits im Replay-Fenster liegt.
sandbox_statusschreibgeschütztMeldet aktives Sandbox-Profil + konkrete Limits + cgroup-v2-Aktivierungsflag.
trust_tierschreibgeschütztLeitet die Stufe LOW/MEDIUM/HIGH/CRITICAL für ein registriertes Tool ab, plus Verbesserungshinweise.

Sandbox-Profile

ProfilTimeoutMax. stdoutMax. stderrFD-Budgetcgroup-v2
strict5 s1 MB256 KB32ja (cpu/memory)
standard (Standard)30 s10 MB1 MB256ja
permissive5 min100 MB10 MB1024nein

Der Aufrufer kann pro Aufruf über timeoutMs / fdBudget verschärfen. Der Aufrufer kann nicht über das Profil hinaus erweitern.

Trust-Stufen

StufeBedingung
LOWTool nicht registriert (Default-Deny)
MEDIUMregistriert, aber argsPatterns leer (beliebige Args erlaubt)
HIGHargsPatterns gesetzt, aber Sandbox oder Replay-Tracker inaktiv
CRITICALargsPatterns + Sandbox + Replay alle aktiv

Anhebung von LOW → CRITICAL durch Registrieren des Tools + Setzen von argsPatterns + Ausführen über guardExec/guardSpawn (die immer Sandbox + Replay aktivieren).

Library-Schnellstart

import {
  AllowlistRegistry,
  ReplayWindow,
  guardExec,
} from "mcp-stdio-shellguard";

const registry = new AllowlistRegistry();
const replay = new ReplayWindow();

registry.register({
  toolName: "git-log",
  executable: "/usr/bin/git",
  argsPatterns: ["^log$", "^--oneline$", "^-n$", "^\\d+$"],
  sandboxProfile: "strict",
});

const result = await guardExec(
  {
    toolName: "git-log",
    command: "/usr/bin/git",
    args: ["log", "--oneline", "-n", "10"],
  },
  { registry, replay },
);

console.log(result.stdout); // → commit lines
console.log(result.trustTier); // → "CRITICAL"
console.log(result.canonicalHash); // → 64-char SHA-256

Audit-CLI

mcp-shellguard-audit scan ./src
mcp-shellguard-audit scan ./src --format sarif --output audit.sarif
mcp-shellguard-audit scan ./src --severity-floor HIGH    # CI gate

Exit-Codes:

  • 0 sauber (keine Befunde auf oder über der Schwelle)
  • 1 Befunde vorhanden
  • 2 Parse-/IO-Fehler

Benutzerdefinierte ignoreGlobs, die an scanPath oder das MCP-Tool audit_source übergeben werden, akzeptieren höchstens 128 Strings. Jeder String ist auf 1024 UTF-16-Codeeinheiten und 16 nicht-escapte öffnende Gruppierungszeichen ((, {, [) begrenzt. Eingaben über diesen Budgets lösen vor dem Matching einen kontrollierten Fehler aus.

Anti-Pattern-Bibliothek (12 Regeln)

IDSchweregradLöst aus bei
exec_template_literal_with_inputCRITICALchild_process.exec(\ls ${x}`)`
exec_dynamic_stringCRITICALchild_process.exec(cmd)
exec_sync_dynamic_stringCRITICALchild_process.execSync(cmd)
eval_near_child_processCRITICALeval(...)
function_constructor_near_child_processCRITICALnew Function(...)
spawn_dynamic_file_argsHIGHspawn(bin, userArgs)
exec_file_dynamicHIGHexecFile(bin, ...)
shell_true_optionHIGH{ shell: true }
os_system_equivalentHIGHDeno.run / Bun.spawn
spawn_literal_dynamic_argsMEDIUMspawn('git', userArgs)
unbounded_bufferLOWexec ohne maxBuffer
missing_timeoutLOWexec/spawn ohne timeout

Der Scanner löst umbenannte child_process-Bindings vor dem Matching auf, sodass die unten stehenden gefährlichen Formen auch dann erkannt werden, wenn der Aufruf über einen Alias statt über ein literales child_process.exec erfolgt:

  • const execAsync = promisify(exec); execAsync(...${x})
  • import cp from "node:child_process"; cp.exec(...${x})
  • const { exec: sh } = require("child_process"); sh(...${x})
  • import { exec as run } from "node:child_process"; run(...)

Synchrone Varianten (spawnSync, execFileSync) teilen ihre Async-Regeln, und shell_true_option löst auch bei einer String-Shell ({ shell: "/bin/sh" }) oder einem dynamischen Shell-Wert aus — nicht nur beim literalen { shell: true }. Ein promisify einer Nicht-child_process-Funktion, ein Destructure aus einem anderen Modul und { shell: false } bleiben sauber (keine False Positives).

Pragmas

  • // shellguard:ignore-next-line — unterdrückt einen Befund
  • // shellguard:ignore-file — unterdrückt die ganze Datei (selten; pro Zeile bevorzugen)

Warum es das gibt

Tool herunterladen