Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
mcp-stdio-shellguard — Комплексная защита для MCP stdio серверов: готовые обёртки guardExec/guardSpawn, CLI для аудита AST, эталонный MCP сервер. Закрывает класс уязвимостей stdio-RCE в 200k серверах от Ox-Security (LiteLLM CVE-2025-69256). MIT, TypeScript, Node >= 20. | Kitploit
Инструменты/GitHubGitHub/studiomeyer-io/mcp-stdio-shellguard
Статический анализСканеры уязвимостейАнализ КодаСкриптинг и автоматизацияDevSecOpsУтилиты и фреймворкиБезопасность Цепочки ПоставокБезопасность API
GitHub
studiomeyer-io/mcp-stdio-shellguard

mcp-stdio-shellguard

Комплексная защита для MCP stdio серверов: готовые обёртки guardExec/guardSpawn, CLI для аудита AST, эталонный MCP сервер. Закрывает класс уязвимостей stdio-RCE в 200k серверах от Ox-Security (LiteLLM CVE-2025-69256). MIT, TypeScript, Node >= 20.

Репозиторий
3412 ч 27 мин назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Часть StudioMeyer MCP Stack — Создано на Майорке 🌴 · ⭐ если вы это используете

mcp-stdio-shellguard

npm version npm downloads License Last commit GitHub stars

Комплекс многоуровневой защиты для MCP stdio-серверов. Оборачивает `child_process.exec/spawn`

с помощью allowlist + sandbox + обнаружения повторов, а также включает CLI-аудит на основе AST (mcp-shellguard-audit), который сканирует исходники MCP-серверов на наличие несанитизированных вызовов оболочки. Закрывает класс уязвимостей MCP stdio-RCE, описанный Ox-Security (200 тыс. уязвимых серверов, раскрытие в мае 2026 г.).

  • Спецификация MCP: 2025-06-18
  • SDK: @modelcontextprotocol/sdk ^1.29.0
  • Node: >= 20
  • Лицензия: MIT
  • Автор: Matthias Meyer (StudioMeyer)

Установка

npm install mcp-stdio-shellguard

Или запустите CLI аудита напрямую без установки:

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

Что это даёт

Три уровня, подключаемые по частям:

  1. Library API — готовые к использованию guardExec / guardSpawn, которые вы вызываете из собственного MCP-сервера. Allowlist с запретом по умолчанию, профили песочницы, окно повтора.
  2. Audit CLI — mcp-shellguard-audit scan <path> обходит AST и сообщает о 12 антипаттернах от LOW (no timeout) до CRITICAL (exec(\...${userInput}...`)`).
  3. Reference MCP server — mcp-stdio-shellguard-demo предоставляет 8 инструментов, чтобы MCP Inspector / Claude Desktop могли напрямую управлять набором.

Инструменты (reference server)

ИнструментТипНазначение
guard_execdestructiveЗащищённый child_process.exec. Принудительно использует вектор args[], allowlist + песочницу + повтор. Возвращает stdout, stderr, exitCode, canonicalHash, isReplay, trustTier.
guard_spawndestructiveЗащищённый child_process.spawn. Возвращает SHA-256-хэши stdout/stderr вместо полных тел. Жёстко отклоняет shell:true.
register_allowlistmutatingРегистрирует имя инструмента с исполняемым файлом + regex аргументов. Без регистрации действует запрет по умолчанию.
audit_sourceread-onlyСканирует путь TS/JS на антипаттерны shell-инъекций. Возвращает AuditFinding[] + сводку.
audit_reportread-onlyФорматирует результат аудита как markdown / json / SARIF 2.1.0.
replay_checkread-onlyВычисляет канонический SHA-256-хэш для вызова и сообщает, находится ли он уже в окне повтора.
sandbox_statusread-onlyСообщает активный профиль песочницы + конкретные лимиты + флаг активности cgroup-v2.
trust_tierread-onlyВыводит уровень LOW/MEDIUM/HIGH/CRITICAL для зарегистрированного инструмента плюс подсказки по улучшению.

Профили песочницы

ПрофильТаймаутМакс. stdoutМакс. stderrБюджет FDcgroup-v2
strict5 с1 МБ256 КБ32да (cpu/memory)
standard (по умолчанию)30 с10 МБ1 МБ256да
permissive5 мин100 МБ10 МБ1024нет

Вызывающая сторона может ужесточить через timeoutMs / fdBudget для каждого вызова. Вызывающая сторона не может расширить за пределы профиля.

Уровни доверия

УровеньУсловие
LOWинструмент не зарегистрирован (запрет по умолчанию)
MEDIUMзарегистрирован, но argsPatterns пуст (разрешены любые аргументы)
HIGHargsPatterns задан, но песочница или трекер повторов неактивны
CRITICALargsPatterns + песочница + повтор все активны

Повышение LOW → CRITICAL достигается регистрацией инструмента + заданием argsPatterns + запуском через guardExec/guardSpawn (которые всегда активируют песочницу + повтор).

Быстрый старт с библиотекой

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

Коды выхода:

  • 0 — чисто (нет находок на уровне порога или выше)
  • 1 — есть находки
  • 2 — ошибки разбора / ввода-вывода

Пользовательские ignoreGlobs, передаваемые в scanPath или в MCP-инструмент audit_source, принимают не более 128 строк. Каждая строка ограничена 1024 кодовыми единицами UTF-16 и 16 неэкранированными открывающими группирующими символами ((, {, [). Входные данные, превышающие эти лимиты, вызывают контролируемую ошибку до начала сопоставления.

Библиотека антипаттернов (12 правил)

IDУровень серьёзностиСрабатывает на
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 без maxBuffer
missing_timeoutLOWexec/spawn без timeout

Сканер разрешает переименованные привязки child_process перед сопоставлением, поэтому опасные конструкции ниже перехватываются даже тогда, когда вызов идёт через псевдоним, а не через литеральный child_process.exec:

  • 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(...)

Синхронные варианты (spawnSync, execFileSync) используют те же правила, что и их асинхронные аналоги, а shell_true_option также срабатывает на строковом shell ({ shell: "/bin/sh" }) или динамическом значении shell — не только на литерале { shell: true }. promisify от функции, не относящейся к child_process, деструктуризация из другого модуля и { shell: false } остаются чистыми (без ложных срабатываний).

Прагмы

  • // shellguard:ignore-next-line — подавить одну находку
  • // shellguard:ignore-file — подавить весь файл (редко; предпочтительнее построчно)

Зачем это нужно

Скачать инструмент