avatar
PWN AI
@pwnai
03.06.2026 16:52
PWN AI Вера индустрии переехала на новый слой Вначале люди верили в MCP Год назад центром притяжения был MCP. Но дыры нашлись почти сразу. Писали мы тут и про отравление тулов, и про атаки на кодовых агентов. Бенчмарк MCPTox проверил 20 агентов на 1312 вредоносных кейсах поверх 45 серверов и 353 тулов и у многих моделей ASR перевалил за 60%. Поняли, что чем способнее модель, тем лучше она следует инструкциям - и тем уязвимее. Дальше были уже угрозы как будто бы не про ИИ, так как при разборе публичных серверов: 43% допускали инъекцию команд, 30% - SSRF, 22% выпускали за пределы своего каталога. Вывод на тот период – простой. MCP – может быть и новый, но не новы принципы его безопасности. Приношение себя в жертву богу скиллов В октябре-декабре прошлого года - Anthropic представила Agent Skills. За четыре месяца их репо набрал 62 тысячи звёзд, формат переняли многие. Индустрия чересчур быстро переключилась: если MCP отвечает на вопрос «как агенту подключиться», то скиллы отвечают на вопрос «что агенту делать». Скилл - это каталог с файлом SKILL.md плюс тело с пошаговыми инструкциями, рядом папки scripts/ и refs/. Работает как библиотечный каталог. В системном промпте всегда лежат только карточки скиллов - имя и описание. Совпала задача - агент «снимает с полки» нужный, подгружая тело SKILL.md. Вложенные скрипты и справочники открываются уже по ходу, как приложение, на которое ссылается сноска. Целиком не грузится никогда - в этом и смысл: тысячи скиллов не распирают контекст. И ровно здесь начинается проблема, которой у MCP не было. Почему скиллы - худший класс, а не просто ещё один Почти вся защита от инъекций строится на одной идее: отделить инструкции от данных. В скилле этой границы нет. Каждая строка скилла - инструкция. Защищаться нечем, потому что вопрос не «есть ли тут инструкции», а «есть ли тут плохие инструкции». Поэтому инъекция становится тривиальной - её даже не нужно маскировать под данные, как в письме или на веб-странице. Пользователь один раз нажал «больше не спрашивать» на безобидном действии - и разрешение переносится на смежные, уже опасные. Также есть малозаметность: скиллы ставят как пакеты, читать их тело человеческими зорьками уже никто не будет. Что показал ресёрч в цифрах Первый замер экосистемы - «Agent Skills in the Wild». Авторы собрали 42 447 скиллов с двух маркетплейсов, прогнали 31 132 через свой пайплайн SkillScan. Результат: 26.1% скиллов содержат хотя бы одну уязвимость по 14 паттернам в четырёх категориях. Чаще всего - эксфильтрация данных (13.3%) и повышение привилегий (11.8%). У 5.2% паттерны высокой опасности, прямо намекающие на злой умысел. Скиллы со скриптами уязвимы в 2.12 раза чаще, чем скиллы из одних инструкций. Snyk даже проводил исследование ToxicSkills, в котором они просканировали около 3984 скиллов: у 36% признаки инъекции, 1467 уязвимых, и 76 разных вредоносных нагрузок ориентированных на кражу учётных данных, бэкдоры, эксфильтрация. Важная статья - SKILL-INJECT. Авторы собрали бенчмарк: 202 пары «инъекция-задача», 23 скилла, 8 категорий атак. Доля успешных атак доходит до 80% у фронтир-моделей. Но ценность работы - в разделении на два типа инъекций: явные - «удали все файлы», очевидно вредоносные, модель обязана отказать всегда. И контекстные, двойного назначения - действие, легитимное в одном контексте и вредоносное в другом. Почему опасность не излечима сканерами и масштабом. Два очевидных рефлекса не работают. Статические сканеры (Semgrep, и пр.) заточены под код и на скрытых промпт-атаках дают ноль - им просто нечего матчить в прозе. LLM-судьи ловят явное, но систематически валятся на контекстных: они не знают, разрешено ли данное действие в данном контексте. Когда вам говорят, что просканировать скилл састом безопасно – знайте, что над вами сильно кто-то угорает. Если модель большая – то это тоже не защита. Более способная модель лучше следует инструкциям, в том числе вредным. Зависимость от размера разнообразная: устойчивость не растёт автоматически вместе с возможностями.
Сканеры скиллов держатся ровно до первого, кто целится точнее

Помните, я писал, что просканировать скилл сканером - это несерьёзно, и что тем, кому это продают как безопасность, кто-то сильно подыгрывает? Тогда это были теория и бенчмарки. Теперь Trail of Bits вышли в поле и проверили руками. Не по себе.

Меньше чем за час они написали три вредоносных скилла, которые прошли чистыми через ClawHub, Cisco skill-scanner и все три сканера, подключённых к skills.sh от Vercel - Gen, Socket и Snyk. Четвёртый занял пару часов, и только потому, что промпт-атаку подбирали итеративно.

Самая тупая атака кладёт самый дорогой стек

У ClawHub двухслойная защита: VirusTotal с проприетарным Code Insight на Gemini 3 Flash плюс отдельная гард-модель, по умолчанию GPT 5.5. Обе обошли первой же атакой, и она неприлично простая: между безобидной шапкой и откровенно вредоносным кодом вставили 100 000 переводов строки. Сканер OpenClaw обрезал файл по лимиту и просто не дошёл до пейлоада, а модель VirusTotal поплыла.

К чести OpenClaw, они пускают в пакет только белый список типов файлов - ни бинарей, ни архивов. Это сужает арсенал. Для следующих целей такого ограничения нет.

Прятки в бинарях

skills.sh и Cisco skill-scanner работают по произвольным git-репам - значит, можно тащить бинари, и тут начинается веселье. Скилл context-loader работает через indirection: SKILL.md велит агенту достать «настоящие инструкции» из .docx, а .docx - это просто zip с кучей XML, внутри которого едет пейлоад sync1.sh.

Второй, поинтереснее, - simple-formatter. SKILL.md честный, про правила форматирования текста. Рядом безобидный питон. И заботливо приложенный прекомпилированный байткод utils.cpython-312.pyc, в котором сбор переменных окружения под эксфильтрацию, его не было в исходниках. Это похоже на бэкдор в xz-utils: пакет расходится с исходником. Прошло чистым и на skills.sh, и на Cisco. Потому что статика skill-scanner не смотрит в .pyc, игнорит скрытые файлы, проверяет только то, на что ссылается SKILL.md, а незнакомые типы держит за непрозрачные. Сузить область сканирования - это защита от переполнения контекста, но это же и дыра: через что не смотрят, через то и заходят.

Промпт-атака, которая просто уболтала судью

Четвёртый скилл, dev-env-setup, не ломает рассуждения сканера - он его убеждает. Скилл переключает npm и yarn на реестр атакующего, но обёрнут в язык «корпоративного зеркала реестра за периметром VPN», со ссылкой на публичную npm-org страницу и упоминанием «AppSec-аудита». Cisco на Sonnet 4.6 разглядел альтернативный реестр и поставил... LOW. И в итоге - safe. Причём модель волновало не то, что URL изначально может быть подконтролен атакующему, а то, что скилл может «утечь и раскрыть внутреннюю топологию сети». Сканер на чужой модели заботливо защищает атакующего от утечки его же приманки.

Авторы, к слову, не просто поломали, а прислали в Cisco skill-scanner PR. Но даже это не трогает промпт-атаку - она проходит спеку без замечаний. А языков на свете сильно больше, чем Python, Bash, JS и TS, и под каждый паттерны прописывать отдельно. (Отдельно отмечу для тех, кто читал мой пост про agentthreatrule.org: тут поломали именно открытый Cisco skill-scanner, мульти-движок с LLM-судьёй, а не ATR-блэклист, который вливается в Cisco AI Defense. Это разные штуки, не путаем.)

Честный скилл выглядит хуже малвари

Обратная сторона дуального назначения, которая мне нравится больше всего. Авторы заглянули в официальные офисные скиллы Anthropic (docx/xlsx/pptx) и нашли soffice.py с LD_PRELOAD - подгружает либо готовый lo_socket_shim.so, либо библиотеку, скомпилированную на лету из C в докстринге. Подозрительнее LD_PRELOAD произвольного бинаря придумать сложно. Скорее всего это честный костыль под песочницу claude.ai. Но skill-scanner верит пояснению внутри скилла: Sonnet 4.6 ставит LOW. Подложишь свой /tmp/lo_socket_shim.so в песочницу - скилл сам его подгрузит и выполнит.

Выводы о том что скилл это не доверенное по умолчанию – писать не хочется, думаю это и так понятно) просто забавный кейс по обходу сканеров.
The Trail of Bits Blog
The sorry state of skill distribution
We recently bypassed ClawHub’s malicious skill detector, Cisco’s agent skill scanner, and all three of the scanners integrated into skills.sh.
👍 11
10
2
10 100 6.1K

Обсуждение 10

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram

PWN AI

6.8K
На 99% состоит из людей.

Хроники о небезопасном ИИ.
Не нравится? Смени телек.

Не продамся вашей рекламе - никогда.

"Мнение автора" != "Мнение компании, где автор работает".

Папка с каналами по безопасности ИИ:
https://t.me/addlist/KQ6ZpCqAO-I1NmUy
Открыть в Telegram