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

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

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

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

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

Категории

Все категории
Loading categories
mcp-doorman — Легковесный mcp для предотвращения отравления CVE (CVE-2025-54136), исследователи, захватывающие Claude Code/Copilot/Gemini через prompt injection, и сотни MCP-серверов, доступных без аутентификации, этот mcp защищает ноутбук отдельного разработчика, где на самом деле работает большинство MCP-серверов. | Kitploit
Инструменты/GitHubGitHub/sushank05/mcp-doorman
Оборонительные ИнструментыСканеры уязвимостейОбнаружение СекретовРазведка угрозНеправильная КонфигурацияОбучение и ОбразованиеБезопасность APIБезопасность ИИ
GitHubsushank05/mcp-doorman

mcp-doorman

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

Популярное

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

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

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

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

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

Описание

Легковесный 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 секунд)

    root@kitploit:~
    # 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:

    root@kitploit:~
    // ДО — каждый сервер общается напрямую с моделью
    {
      "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", "..."].

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

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

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

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

    root@kitploit:~
    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-файле. Полный пример со всеми опциями:

    root@kitploit:~
    {
      "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"
    }
    

    Состояние фиксации и журнал аудита по умолчанию находятся в <config-name>.pins.json / <config-name>.audit.jsonl рядом с файлом конфигурации.

    CLI

    КомандаЧто делает
    mcp-doorman run --config <path>Запустить шлюз через stdio (команда по умолчанию)
    mcp-doorman pin --config <path>Подключиться ко всем вышестоящим серверам и зафиксировать (довериться) их текущие определения инструментов
    mcp-doorman initЗаписать стартовую конфигурацию с разумными значениями по умолчанию

    Честные ограничения

    Инструменты безопасности, которые преувеличивают, хуже, чем их отсутствие. Прочтите эту часть.

    • Эвристики обходятся. Шаблоны инъекций выявляют задокументированные, распространённые формы атак. Мотивированный злоумышленник может сформулировать запрос в обход любого регулярного выражения. Используйте политики deny/approve как жёсткую границу; сканирование — это защита в глубину.
    • Редактирование выполняется по возможности. Известные форматы токенов выявляются надёжно; случайный шестнадцатеричный секрет без контекста — нет. Не направляйте агентов в хранилища учётных данных.
    • Это не песочница. Вышестоящие серверы по-прежнему запускаются как дочерние процессы с привилегиями вашего пользователя. Doorman защищает протокол; объединяйте его с контейнерами (в стиле ToolHive), чтобы защитить процесс.
    • TOFU доверяет первому взгляду. Фиксация обнаруживает изменения, а не инструменты, которые были вредоносными с первого дня — для этого нужны сканер описаний и ваша собственная проверка.
    • Шлюзы одобрения требуют elicitation. Клиенты без поддержки elicitation используют approval.fallback (по умолчанию deny).

    Дорожная карта — нужна помощь 🙌

    • Проксирование resources/* и prompts/* (сейчас только инструменты)
    • Сквозная передача для семплирования и корней
    • Пакеты правил сообщества (doorman-rules-finance, doorman-rules-healthcare…)
    • Режим обучения: наблюдать неделю, предложить политику минимальных привилегий
    • Бэкенды политик OPA / Cedar
    • Подкоманда mcp-doorman audit: красивая печать и запросы к JSONL-журналу
    • Веб-панель для визуализации аудита
    • Энтропийное обнаружение секретов общего назначения

    Возьмитесь за что-нибудь из этого или начните с [first good issue](https://github.com/YOUR_GITHUB_USERNAME/mcp-doorman/labels/good%20first issue). Новые правила обнаружения — самый лёгкий вклад: одно регулярное выражение + два теста. См. CONTRIBUTING.md и docs/detection-rules.md.

    Разработка

    root@kitploit:~
    npm install
    npm test          # 69 тестов: модульные + полные сквозные stdio
    npm run build
    npm run demo      # смотрите, как защитники срабатывают вживую
    

    Лицензия

    Apache-2.0 — бесплатно для любого использования, с явной патентной оговоркой.

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