Правила обнаружения
Каждое правило с демонстрацией, которую можно запустить.
Все 54 правил. Выберите одно, чтобы увидеть файл, который его вызывает, важную его часть и результат работы сканера. Результаты получены при запуске настоящего сканера, а не написаны вручную.
Для интерактивных демонстраций нужен JavaScript. А пока — список всех правил.
Безопасность агента
- Полезная нагрузка prompt injection — Инструкции, нацеленные на агента, скрытые в тексте, который агент всё равно прочитает.
- Описание не соответствует возможностям — Инструмент, называющий себя доступным только для чтения, хотя его параметры говорят об обратном.
- Невидимый Unicode — Символы, которые ничем не отображаются, но всё равно доходят до модели.
- Слабо ограниченная схема параметра — Рискованный параметр, например URL или путь к файлу, принимающий абсолютно что угодно.
- Скрытая инструкция — Команда, скрытая в части файла, которую отрендеренный вывод никогда не показывает.
- Инъекция в схему — Инструкция, скрытая в описании параметра, на уровень ниже описания самого инструмента.
- Контрабанда через символы Unicode Tag — Текст, написанный символами Unicode Tag, которые вообще никак не отображаются.
- Затенение инструмента — Инструмент, дающий инструкции о том, как должен вести себя другой инструмент.
- Запрос на повышение прав — Просит снизить защиту не машину, а человека.
- Маячок в изображении markdown — Изображение markdown, чей адрес выносит данные наружу при отображении ответа.
- Подделанный результат инструмента — Текст, оформленный как результат работы инструмента, который на самом деле не запускался.
- Отравление памяти — Записывает инструкции в файл, который агент читает в начале каждой сессии.
- Отложенный триггер — Сначала ведёт себя обычно, затем начинает делать что-то другое.
- Инъекция в цепочку агентов — Инструкция, адресованная следующему агенту в цепочке, а не пользователю.
- Проблема «смущённого заместителя» — Инструмент без особых прав, побуждающий агента использовать другой, у которого эти права есть.
- Извлечение системного промпта — Просит агента раскрыть собственные инструкции и инструменты.
- Доступ к истории переписки — Запрашивает историю переписки, при этом описание не объясняет зачем.
- Инструкция в сообщении об ошибке — Инструкция, скрытая в ошибке, где её читают в момент, когда никто не присматривается внимательно.
Эксфильтрация
- Паттерн эксфильтрации — Инструмент, который работает с секретами и при этом может отправлять данные наружу.
- Приёмник webhook — Жёстко прописанный адрес, единственное назначение которого — собирать всё, что на него отправляют.
- DNS-эксфильтрация — Данные, закодированные в именах DNS-запросов.
- Токсичный поток возможностей — Один инструмент, который читает приватные данные и при этом может публиковать их куда-то наружу.
- Сетевой запрос в «офлайн»-инструменте — Заявляет, что никогда не использует сеть. Использует сеть.
Учётные данные
- Жёстко прописанный секрет — Учётные данные, записанные прямо в файл.
- Доступ к хранилищу учётных данных — Читает файл, единственное назначение которого — хранить учётные данные.
- Доступ к метаданным облака — Запрашивает у облачного хоста учётные данные, которые тот выдаёт любому, кто спросит.
- Доступ к истории команд оболочки — Читает журнал команд, введённых в терминал.
- Учётные данные в конфиге MCP — Действующий токен, вставленный в файл конфигурации MCP.
- Секрет, записанный в журнал — Учётные данные, выведенные туда, где они пролежат гораздо дольше, чем следует.
- Неверная настройка OAuth — OAuth, настроенный так, что снимает ту самую защиту, ради которой был добавлен.
Цепочка поставок
- Установка из недоверенного внешнего источника — Инструкции по установке, требующие что-то скачать и запустить.
- Незакреплённый MCP-сервер — Сервер, который может стать другим программным обеспечением без каких-либо действий с вашей стороны.
- MCP-сервер с известной уязвимостью — Закреплённая версия с опубликованным сообщением об уязвимости.
- Выдача пакета MCP за другой — Имя пакета, отличающееся на один символ от того, что вы имели в виду.
- Хук установочного скрипта — Команда из интернета, выполняющаяся в момент установки пакета.
- Подмена зависимости — Публичный пакет с именем, как у одного из ваших приватных.
- Уязвимая зависимость — Объявленная зависимость, попадающая в диапазон уязвимых версий из опубликованного сообщения.
- Отсутствие проверки происхождения — Загрузка, устанавливаемая без проверки подлинности файла.
- Имя инструмента с омоглифом — Два имени инструмента, выглядящие на экране одинаково, но не являющиеся одним и тем же текстом.
- Дублирующееся имя инструмента — Одно и то же имя инструмента объявлено в двух разных файлах.
- Теневой MCP-сервер — MCP-серверы, доступные вашему агенту, но не объявленные в конфиге проекта.
- Мутация набора инструментов — Инструмент, который вы уже видели, теперь поставляется из другого файла и изменён.
- Изменение манифеста — Инструмент, который вы уже проверили, но который затем незаметно изменился.
Исполнение
- Избыточные разрешения — Инструмент, запрашивающий доступ, намного превышающий то, что реально нужно для его задачи.
- Динамическое исполнение — Код, собранный во время выполнения из того, что передали агенту.
- Непрозрачная полезная нагрузка — Нечто, поставляемое вместе со скиллом и нечитаемое никем — в данном случае программа, замаскированная под обычный файл.
- Автоодобрение MCP — MCP-сервер, настроенный запускать любой инструмент без запроса подтверждения.
- Избыточно широкая команда запуска MCP — Команда запуска, дающая серверу больше, чем ему нужно.
- Поверхность для инъекции через STDIO MCP — Сервер на транспорте STDIO MCP, где значения конфигурации становятся командой, которую выполняет хост.
- Механизм закрепления в системе — Записывает себя туда, что переживает перезагрузку.
- Побег из песочницы — Ссылается на способ выбраться из контейнера, в котором работает.
- Пересборка строки — Собирает опасное слово из фрагментов, чтобы поиск по нему ничего не находил.
- Поверхность для инъекции команд — Команда оболочки, собранная путём подстановки значения, полученного во время выполнения.
- Слишком разрешительный CORS — HTTP-сервер, который позволяет вызывать себя любому сайту.
OWASP MCP Top 10
Покрытие всех десяти категорий.
Каждое правило относится минимум к одной категории OWASP MCP Top 10, который пока в бета-версии. Некоторые правила покрывают несколько категорий, поэтому сумма превышает число правил. Категории «недостаток аудита и телеметрии» соответствует одно правило, и это оправданно: логирование — проблема, на которую сканер может указать, но не может решить.
| Категория | Имя | Правила | Относительное покрытие |
|---|---|---|---|
| MCP01 | Неправильное управление токенами и раскрытие секретов | 7 | |
| MCP02 | Повышение привилегий через расползание области доступа | 7 | |
| MCP03 | Отравление инструментов | 13 | |
| MCP04 | Атаки на цепочку поставок ПО и вмешательство в зависимости | 13 | |
| MCP05 | Инъекция и исполнение команд | 8 | |
| MCP06 | Подмена потока намерений | 10 | |
| MCP07 | Недостаточная аутентификация и авторизация | 3 | |
| MCP08 | Недостаток аудита и телеметрии | 1 | |
| MCP09 | Теневые MCP-серверы | 1 | |
| MCP10 | Инъекция контекста и избыточное раскрытие | 9 |
Запустите все правила на своих файлах.
Бесплатный тариф включает все 54 правил и 20 сканирований в месяц.