CC auditing-mcp-servers-for-tool-poisoning
Проверяет серверы MCP на предмет отравления инструментов, затенения инструментов, мошенничества (rug pulls), SSRF и неаутентифицированного раскрытия с использованием mcp-scan от Invariant Labs для статического/динамического сканирования плюс ручные проверки SSRF/аутентификации и закрепление описаний. Используется перед добавлением нового сервера MCP в стек агентов, при проверке внутреннего сервера MCP, обнаружении мошенничества или расследовании неожиданного поведения агента, вызванного инструментами.
машинный переводПоказать оригиналСкрыть оригинал«Audit MCP servers for tool poisoning, tool shadowing, rug pulls, SSRF,…»
Audit MCP servers for tool poisoning, tool shadowing, rug pulls, SSRF, and unauthenticated exposure using Invariant Labs' mcp-scan for static/runtime scanning plus manual SSRF/auth checks and description pinning. Use before adding a new MCP server to an agent stack, when reviewing an internal MCP server, detecting rug pulls, or investigating an agent's unexpected tool-driven behavior.
Проверяет серверы MCP на предмет отравления инструментов, затенения инструментов, мошенничества (rug pulls), SSRF и неаутентифицированного раскрытия с…
Как процесс C 53/100 · Есть пробелы — слабые места: результат и критерий готовности, когда включается, ошибки и развилки
Чем это грозит
Находки средней серьёзности: скорее всего скилл честный, но прочитайте, что именно насторожило сканер.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
В файлах есть невидимые символы, закодированные команды или спрятанные комментарии для модели. То, что вы читаете, отличается от того, что видит агент.
Уберите невидимые символы (часто они попадают из копипаста) и закодированные строки: их не пропустит ни один каталог. Инструкции для модели должны быть видны и человеку.
Как улучшить
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 5
✓ Критических и высоких находок нет
Средние и низкие: 5
-
средняя Обфускация
uni-bidi-overridescripts/agent.py:34Символы переопределения направления текста (Trojan Source) (2 шт.) (определение детектора / чёрного списка)SMUGGLE = re.compile(r"[␀-␀␀-␀␀-\U000e0000-\U000e007f]")
детектор -
низкая Обфускация
uni-zero-widthscripts/agent.py:34Невидимые символы нулевой ширины (возможен скрытый текст) (3 шт.) (определение детектора / чёрного списка; единичный символ, не последовательность)SMUGGLE = re.compile(r"[␀-␀␀-␀␀-\U000e0000-\U000e007f]")
детекторединичный символ -
низкая Опасные команды
cmd-pipe-to-shell-known-hostscripts/agent.py:70Установщик через pipe в shell с известного хоста (всё равно выполняет удалённый код) (определение детектора / чёрного списка; строковый литерал в коде, не выполняется)"curl -LsSf https://astral.sh/uv/install.sh | sh"}
детекторстрока в коде -
низкая Опасные команды
cmd-pipe-to-shell-known-hostSKILL.md:49Установщик через pipe в shell с известного хоста (всё равно выполняет удалённый код) (документация security-скилла)curl -LsSf https://astral.sh/uv/install.sh | sh # or: pipx install uv
security-скилл
Ещё 1 совпадений отнесены к цитатам в документации скилла по безопасности и не считаются находками.
Просканировано файлов: 5. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- заметка
frontmatter-keyнеизвестное поле фронтматтера "domain" - заметка
frontmatter-keyнеизвестное поле фронтматтера "subdomain" - заметка
frontmatter-keyнеизвестное поле фронтматтера "nist_ai_rmf" - заметка
frontmatter-keyнеизвестное поле фронтматтера "atlas_techniques"
Процессный рейтинг: все десять параметров 53/100
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Ошибки и развилки. Линейный процесс без обработки сбоев
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 30Повторный запуск. Изменяющих операций: 1, без проверки текущего состояния
- 60Инструменты и файлы. Используются инструменты (web, python), но во frontmatter они не объявлены
- 70Входы и предусловия. Входные данные и предусловия перечислены
- 100Шаги. Шагов: 24
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 2499 токенов
- 100Отчётность по ходу. Скилл сообщает о ходе работы
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- -2Ссылки на localhost: у другого пользователя не заработает
- -42 справочных файлов, но SKILL.md на них не ссылается: модель их не откроет
- -31 из 1 скриптов не упомянуты в SKILL.md
- +2Инструкции на одном языке
- +3Длина description 387 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 18 заголовков
- +3Пошаговые инструкции: 24 пунктов
- +4Есть примеры (8 блоков кода)
- +1Лицензия указана
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 73.