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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/sushank05/mcp-doorman
Оборонительные ИнструментыСканеры уязвимостейОбнаружение СекретовРазведка угрозНеправильная КонфигурацияОбучение и ОбразованиеБезопасность APIБезопасность ИИ
GitHubsushank05/mcp-doorman

mcp-doorman

Репозиторий
298 дней назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →

Описание

Легковесный mcp для предотвращения отравления CVE (CVE-2025-54136), исследователи, захватывающие Claude Code/Copilot/Gemini через prompt injection, и сотни MCP-серверов, доступных без аутентификации, этот mcp защищает ноутбук отдельного разработчика, где на самом деле работает большинство MCP-серверов.

Поделиться

mcp-doorman

Шлюз безопасности для MCP-серверов — каждый вызов инструмента проверяется на входе.

CI npm License: Apache-2.0 PR приветствуются

mcp-doorman — это прокси, который встраивается между вашим AI-агентом (Claude Desktop, Claude Code, Cursor, VS Code, любой MCP-клиент) и используемыми MCP-серверами. Одна команда, нулевая инфраструктура, и каждый вызов tools/list и tools/call проходит через цепочку защиты:

  • 🛂 Политика — правила разрешения/запрета/требования одобрения для каждого инструмента, с glob-сопоставлением
  • 🕵️ Редактирование секретов — ключи AWS, токены GitHub/Slack/Stripe/OpenAI/Anthropic, приватные ключи, JWT, номера карт (с проверкой Луна)… удаляются из результатов инструментов до того, как они попадут в модель
  • 💉 Проверка на инъекции подсказок — помечает или блокирует результаты инструментов (и их описания — отравление инструментов), которые пытаются дать указания модели
  • 📌 Обнаружение подмены — определения инструментов хэшируются и фиксируются при первом использовании; если сервер незаметно меняет описание, инструмент блокируется до повторной фиксации человеком
  • 🚦 Ограничение частоты — токен-ведра для каждого инструмента ограничивают радиус поражения вышедшего из-под контроля цикла агента
  • 🙋 Шлюзы одобрения человеком — чувствительные инструменты вызывают интерактивный запрос на одобрение через MCP elicitation прямо в вашем клиенте
  • 🧾 Журнал аудита — каждый вызов, отказ, редактирование и пометка записываются в файл JSONL с дополнением

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

Каждый находится в одном npx some-random-mcp-server от передачи непроверенному процессу своих API-ключей и прямого доступа в контекстное окно модели. Задокументированные классы атак реальны, а не гипотетичны:

АтакаКак это работает
Отравление инструментовВредоносные инструкции, спрятанные в описании инструмента, невидимые в большинстве интерфейсов клиента
ПодменаСервер в первый день показывает безобидные инструменты, а после утверждения меняет их определения
Косвенная инъекция подсказокВеб-страница/задача/письмо, полученные легитимным инструментом, содержат инструкции, нацеленные на модель
Эксфильтрация секретовУтекшие учётные данные в одном результате инструмента + одна внедрённая инструкция = ваш ключ на чужом сервере
Неуправляемые циклыСпутанный или захваченный агент массово удаляет, массово рассылает, массово парсит

Корпоративные MCP-шлюзы существуют для платформенных команд с кластерами Kubernetes. Ничего лёгкого не защищает ноутбук отдельного разработчика — то место, где на самом деле работают 99% MCP-серверов. Этот пробел и заполняет данный проект.

Быстрый старт (60 секунд)

# 1. Создайте конфигурацию
npx -y mcp-doorman init

# 2. Отредактируйте doorman.config.json — вставьте свои реальные серверы

# 3. Зафиксируйте текущие определения инструментов (доверие при первом использовании)
npx -y mcp-doorman pin --config doorman.config.json

Затем укажите вашему клиенту на шлюз вместо ваших серверов. Claude Desktop / Claude Code / Cursor:

// ДО — каждый сервер общается напрямую с моделью
{
  "mcpServers": {
    "github":     { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] },
    "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/repos"] }
  }
}

// ПОСЛЕ — один doorman охраняет их всех
{
  "mcpServers": {
    "doorman": {
      "command": "npx",
      "args": ["-y", "mcp-doorman", "run", "--config", "/absolute/path/to/doorman.config.json"]
    }
  }
}

Инструменты отображаются с пространством имён, например github__create_issue, filesystem__read_file и т.д., а также два встроенных: doorman__status и doorman__recent_events (спросите агента «что недавно заблокировал doorman?»).

Примечание для Windows: если запись сервера использует npx напрямую, запускайте её через cmd: "command": "cmd", "args": ["/c", "npx", "-y", "..."].

Посмотрите, как это работает

git clone https://github.com/Sushank05/mcp-doorman && cd mcp-doorman
npm install
npm run demo

Демонстрация подключает шлюз к намеренно некорректному серверу (examples/demo-server.mjs), который раскрывает поддельные учётные данные, отправляет полезную нагрузку инъекции подсказок и предлагает деструктивный инструмент — и показывает, как каждый защитник ловит это.

Как это работает

flowchart LR
    A["MCP-клиент\n(Claude Desktop, Cursor, ...)"] -- stdio --> D
    subgraph D [mcp-doorman]
        direction TB
        P[политика] --> R[ограничение частоты] --> AP[одобрение] --> RD[редактирование] --> I[сканирование инъекций] --> AU[(журнал аудита)]
    end
    D -- stdio --> S1[сервер github]
    D -- stdio --> S2[сервер filesystem]
    D -- streamable HTTP --> S3[удалённый сервер]

Шлюз является MCP сервером для вашего клиента и MCP клиентом для каждого вышестоящего сервера (дочерние процессы stdio или конечные точки streamable-HTTP), объединяя их за одним подключением. Он построен на официальном TypeScript SDK.

Конфигурация

Всё находится в одном JSON-файле. Полный пример со всеми опциями:

{
  "servers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}" }   // ${VAR} = читать из окружения шлюза
    },
    "remote": { "url": "https://mcp.example.com/mcp", "headers": { "Authorization": "Bearer ${MCP_TOKEN}" } }
  },

  "policy": {
    "defaultAction": "allow",                    // "allow" | "deny" | "approve"
    "rules": [                                   // первое совпадение выигрывает, оценка сверху вниз
      { "match": "*__delete*",  "action": "deny",    "reason": "нет деструктивных инструментов" },
      { "match": ["github__create_*", "*__send_*"], "action": "approve" },
      { "match": "filesystem__*", "action": "allow" }
    ]
  },

  "redaction": {
    "enabled": true,
    "disable": [],                               // названия встроенных правил для отключения
    "enableOptIn": ["email"],                    // опции добровольного включения: "email", "us-ssn", "ipv4"
    "custom": [{ "name": "acme-id", "pattern": "ACME-[0-9]{6}" }],
    "redactArguments": false                     // также очищать аргументы, предоставленные моделью
  },

  "injection": {
    "action": "flag",                            // "flag" (предупредить модель) | "block" | "off"
    "scanToolDescriptions": true,                // проверка на отравление инструментов при tools/list
    "custom": []
  },

  "pinning": {
    "enabled": true,
    "onNewTool": "pin",                          // "pin" (TOFU) | "block" (до `mcp-doorman pin`)
    "onChangedTool": "block"                     // "block" | "warn"
  },

  "rateLimit": { "perMinute": 120, "perTool": { "*__send_*": 5 } },

  "approval": { "fallback": "deny", "timeoutMs": 120000 },  // fallback, если у клиента нет elicitation

  "audit": { "enabled": true, "includeArguments": true, "includeResults": false },

  "logLevel": "info"
}
Скачать инструмент