Когда вы подключаете к кодинг-агенту (Claude Code, Cursor, Windsurf или терминальному CLI) сторонние инструменты через протокол MCP (Model Context Protocol) или загружаете пользовательские инструкции (Agent Skills), агент перестаёт быть изолированной песочницей. Он получает доступ к выполнению shell-команд, чтению файлов, отправке сетевых запросов и управлению базой данных. В этот момент критической точкой отказа становится доверие к метаданным: вредоносная инструкция, спрятанная в описании инструмента или в теле скила SKILL.md, способна перехватить контекст модели, обойти системные ограничения или незаметно слить конфиденциальные данные.
Для решения этой проблемы компания Snyk выпустила специализированный инструмент — Snyk Agent Scan. Это локальный сканер безопасности, сфокусированный исключительно на экосистеме автономных агентов. Он автоматически находит установленные среды выполнения (harnesses), конфигурации MCP-серверов и файлы скилов, анализирует их на скрытые prompt-инъекции, проверяет эндпоинты на уязвимости и выдаёт взвешенную оценку рисков.
Сравнение: ручной аудит против классических SAST и Snyk Agent Scan
Обычные анализаторы кода (SAST) и сканеры зависимостей не понимают семантику промптов и структуру взаимодействия LLM с инструментами. Snyk Agent Scan закрывает именно эту специфическую нишу:
| Параметр | Ручной аудит конфигов | Классический SAST/DAST | Snyk Agent Scan |
|---|---|---|---|
| Поиск prompt-инъекций | Трудоёмко, легко пропустить завуалированные фразы | Не поддерживается (проверяет только синтаксис кода) | Специализированный анализ: находит скрытые инструкции в промптах и описаниях тулов |
| Дискавери компонентов | Требует ручного поиска всех mcp.json и папок скилов |
Ограничено стандартными путями исходного кода | Автоматическое: находит Claude Desktop, Cursor, VS Code, Gemini CLI, Windsurf |
| Аудит Agent Skills | Чтение каждого SKILL.md вручную |
Игнорирует Markdown как неисполняемый текст | Глубокий разбор: проверка системных промптов, ссылок и шелл-шаблонов в скилах |
| Безопасность запуска MCP | Высокий риск случайного выполнения при тестах | Не запускает и не эмулирует протокол MCP | Интерактивный контроль: блокировка SSRF, запрет cloud-metadata и запрос согласия |
| Скоринг и автоматизация | Субъективные оценки без метрик | CVSS-метрики уязвимостей в пакетах | Шкала рисков 0–1000: гранулярные индикаторы и машиночитаемый JSON для CI/CD |
Архитектура и механизмы обнаружения угроз
1. Автоматический дискавери рабочего окружения
При запуске сканер опрашивает стандартные пути конфигураций установленных агентов и редакторов. Поддерживаются:
- Claude Code и Claude Desktop: глобальные и локальные конфигурации, а также каталоги
~/.claude/skills. - Cursor и VS Code: конфигурационные файлы
~/.vscode/mcp.jsonи настройки расширений. - Gemini CLI и Windsurf: манифесты инструментов и подключенные провайдеры контекста.
- Локальные директории проектов: поиск файлов
SKILL.mdи изолированных манифестов.
2. Модель оценки рисков: переход на шкалу 0–1000
Начиная с версии v0.6, инструмент перешёл с устаревших кодов ошибок на динамическую модель индикаторов риска (API 2026-07-10). Каждый компонент получает числовой скор от 0 до 1000:
- Low (100): незначительные предупреждения, информационные поля.
- Medium (300): потенциальные точки риска, требующие внимания при деплое.
- High (600): высокая вероятность эксплуатации или нежелательного поведения агента.
- Critical (1000): прямые prompt-инъекции, попытки побега из песочницы или компрометации данных.
3. Ключевые категории выявляемых рисков
Анализатор разбирает семантику каждого обнаруженного компонента:
prompt_injection_tool_desc: обнаружение инъекций в описании инструментов. Злоумышленник может внедрить в docstring инструмента директиву, заставляющую LLM игнорировать пользовательский промпт.untrusted_content: обработка внешних невалидированных каналов (тикеты, почта, веб-страницы), открывающих вектор косвенной инъекции (Indirect Prompt Injection).private_data: доступ к чувствительным хранилищам, секретам или базам данных без должной изоляции.- Риски скилов: внедрение скрытых bash-команд, передача параметров на внешние серверы сбора телеметрии и обход согласований.
4. Песочница и защита от SSRF при проверке MCP
Для сбора описаний инструментов сканеру необходимо опросить MCP-сервер. Для stdio-серверов это означает запуск процесса, а для remote-серверов — выполнение сетевого запроса. В Snyk Agent Scan встроены строгие защитные механизмы:
- Запрос интерактивного согласия: перед стартом каждого локального бинарника или подключением к удалённому URL утилита запрашивает подтверждение разработчика (y/n).
- Блокировка cloud-metadata и link-local адресов: сканер на уровне сети отклоняет запросы к диапазонам
169.254.0.0/16,fe80::/10и метаданным облачных провайдеров (AWS/GCP/Azure), исключая атаку типа SSRF. - Запрет автоматических редиректов: HTTP-редиректы не отрабатываются вслепую, что защищает от атак с подменой DNS (DNS-rebinding).
Пошаговый гайд: установка, запуск аудита и интеграция в CI/CD
Шаг 1. Подготовка окружения и получение токена
Для работы анализатора требуется бесплатный API-токен платформы Snyk. Зарегистрируйтесь на сайте и экспортируйте переменную окружения:
export SNYK_TOKEN="ваш_токен_snyk"
Шаг 2. Запуск полного аудита системы через uvx
Утилиту не требуется компилировать или устанавливать глобально — достаточно запустить её через пакетный менеджер uvx:
# Полное сканирование всех найденных агентов, MCP-серверов и скилов
uvx snyk-agent-scan@latest
В терминале отобразится интерактивный отчёт со списком обнаруженных компонентов, найденными рисками и цветовой шкалой опасности.
Шаг 3. Точечный аудит конкретного MCP-сервера или скила
Если вы разрабатываете собственный MCP-сервер или скачиваете чужой набор скилов из репозитория, проверьте конкретный путь:
# Сканирование отдельного файла конфигурации MCP
uvx snyk-agent-scan@latest ~/.vscode/mcp.json
# Проверка одного скила
uvx snyk-agent-scan@latest ./my-agent-skills/deploy/SKILL.md
# Сканирование каталога скилов Claude Code
uvx snyk-agent-scan@latest ~/.claude/skills
# Аудит только MCP-компонентов без проверки текстовых скилов
uvx snyk-agent-scan@latest --no-skills
Шаг 4. Настройка автоматической проверки в CI/CD пайплайне
Чтобы заблокировать попадание уязвимых скилов и небезопасных MCP-серверов в рабочий репозиторий, добавьте шаг проверки в GitHub Actions. Для автоматического режима используйте флаг выгрузки JSON и игнорирование допустимых рисков:
# Запуск проверки в CI с выводом в JSON
uvx snyk-agent-scan@latest --json > scan-results.json
# Игнорирование ожидаемых предупреждений в доверенном окружении
uvx snyk-agent-scan@latest --ignore-risks "untrusted_content"
Резюме
Snyk Agent Scan решает назревшую проблему безопасности в экосистеме кодинг-агентов. По мере того как разработчики всё активнее наделяют LLM доступом к терминалу и инфраструктуре через MCP и Agent Skills, ручной проверки конфигов становится недостаточно. Локальный аудит, блокировка SSRF и строгий скоринг prompt-инъекций позволяют внедрять агентов в рабочие процессы без риска скомпрометировать кодовую базу и секреты проекта.