mcp-security-audit
mcp-security-audit — проверяемый статический workflow для ревью конфигурации MCP-серверов в файле .mcp.json. Его задача — найти типовые признаки небезопасной настройки до того, как конфигурация попадёт в рабочее окружение: секреты в аргументах и переменных окружения, опасные shell-конструкции, плавающие версии пакетов и серверы, которые не входят в разрешённый список. Источник описывает MCP-сервер как компонент, дающий агенту доступ к внешним инструментам, поэтому ошибка в конфиге может раскрыть учётные данные, разрешить нежелательное выполнение команд или подключить недоверенный сервер. Навык не подменяет решение владельца проекта: он собирает находки, уровень серьёзности и исправление, а не автоматически переписывает .mcp.json. Первая группа проверок ищет захардкоженные секреты во всей JSON-конфигурации. Встроенные регулярные выражения распознают ключи, токены, секреты, пароли и credentials, если рядом находится значение достаточной длины; отдельно проверяются Bearer-токены, GitHub-токены с префиксами ghp_, gho_, ghu_, ghs_ и ghr_, ключи OpenAI с префиксом sk-, AWS access key с префиксом AKIA и блоки приватных ключей RSA. Для такого результата отчёт использует уровень CRITICAL и предлагает ссылаться на переменную окружения, например ${ENV_VAR_NAME}, вместо хранения значения в args или env. Показательный безопасный вариант передаёт ${MY_API_KEY} и ${DATABASE_URL}; пример с реальным ключом или паролем в командной строке считается плохой практикой. Вторая группа проверяет аргументы конкретного сервера на признаки shell injection. Навык отмечает подстановку команд через $(...), обратные кавычки, цепочки с точкой с запятой, pipe, && и ||, вызовы eval, bash -c и sh -c, TCP-перенаправление в /dev/tcp и конструкцию curl с передачей результата в ba/sh. Для этих находок отчёт использует уровень HIGH и предлагает прямой запуск команды без shell-интерполяции. Это именно паттерн-проверка строки аргументов: наличие совпадения означает повод для ревью, а не доказательство того, что конкретный сервер уже выполнил атаку или что вся конфигурация безопасна после удаления одного фрагмента. Третья группа смотрит на воспроизводимость зависимостей. Указание @latest помечается как MEDIUM и заменяется рекомендацией закрепить конкретную версию пакета. Для команды npx без флага -y добавляется LOW-находка, потому что интерактивный запрос может остановить запуск в CI. Полный runner сначала читает файл, возвращает ошибку, если путь не существует, затем перебирает только словари серверов в mcpServers. В результате сохраняются имя файла, список серверов, команда, находки и сводка: число серверов, общее число находок, разбивка по severity и признак passed. Если в конфиге нет находок, passed равен true; если находки есть, вывод содержит их check, сообщение и конкретный fix. Практически навык подходит для проверки нового .mcp.json, подключения MCP-сервера, pre-commit ревью изменений и инвентаризации серверов в монорепозитории или marketplace. Он полезен как короткий контрольный слой перед публикацией конфигурации: сначала читается JSON, затем для всего файла выполняется проверка секретов, а для каждого серверного объекта — shell-паттерны и версии. Ограничение следует из реализации: проверки основаны на заданных регулярных выражениях и списках, поэтому они не заменяют полноценный анализ кода сервера, сетевой политики, разрешений, поведения зависимостей или организационного процесса допуска. Результат следует перечитать и принять решение по каждому пункту, сохраняя секреты вне отчёта и не превращая отметку passed в гарантию безопасности всей интеграции.
Для чего подходит
- Ревью .mcp.json
- Проверка переменных окружения MCP
- Проверка закрепления версий MCP-зависимостей
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/github/awesome-copilot/tree/main/skills/mcp-security-audit