Статичні сканери, призначені виявляти шкідливі додаткові «скіли» (skills) для ІІ-агентів програмування, таких як Claude Code, OpenAI Codex і OpenClaw, систематично обходять за допомогою простих технік маскування. Згідно з препринтом Cloak and Detonate дослідників з Гонконзького університету науки і технологій, найефективніший прийом — саморозпаковувальне пакування — долає кожен із восьми протестованих сканерів більш ніж у 90% випадків. Команди, які використовують ІІ-агенти для розробки, мають усвідомлювати: позначка «пройшов сканування» на маркетплейсі скілів не гарантує безпеку, а реальний захист потребує контролю поведінки скіла під час виконання.
Що таке скіли і чому вони небезпечні
Скіли — це невеликі пакети, зазвичай складені з файла інструкцій у форматі Markdown і кількох скриптів. Агенти завантажують їх, щоб отримати нові можливості. Оскільки скiл є набором файлів, один і той самий пакет може працювати на різних агентах, наслідуючи їхній рівень доступу: до файлової системи, термінала та збережених облікових даних. За даними дослідників, шкідливий скіл здатен викрадати облікові дані, копіювати вихідний код або встановлювати бекдор. При цьому більшість скілів на публічних маркетплейсах завантажується сторонніми користувачами з мінімальною перевіркою.
Як SKILLCLOAK обходить сканери
Дослідники створили інструмент SKILLCLOAK, який переписує шкідливий скіл так, щоб він виглядав безпечним, зберігаючи вихідну поведінку. Застосовують два підходи.
Легка перезапис модифікує характерні байти, на які реагує сканер: підміна символів візуально ідентичними символами з іншого алфавіту (гомогліфи) або розбиття позначеної команди переносом рядка. Патерн сканера перестає спрацьовувати, але команда й надалі виконується. За даними авторів, цей метод долає понад 80% сканерів, а на одному з них — 96%.
Саморозпаковувальне пакування — радикальніший прийом. Корисне навантаження переносять у директорію, яку сканери пропускають (наприклад, .git/), і ховають за нешкідливим декодером, що відновлює скіл лише під час запуску агентом. Сканери ігнорують такі директорії заради економії часу та зниження хибних спрацювань — саме цю сліпу зону й експлуатує атака.
У тестах на 1 613 реальних шкідливих скілах з маркетплейса ClawHub пакування обійшло кожен із восьми сканерів більш ніж у 90% випадків, а більшість — більш ніж у 99%. На агентах Claude Code і OpenAI Codex замасковані скіли, за повідомленням авторів, працювали так само ефективно, як оригінальні. Сканер Cisco, що продемонстрував найкращий результат серед статичних рішень, виявляв 99% шкідливих скілів до маскування і лише близько 10% — після.
SKILLDETONATE: захист через аналіз поведінки
Оскільки зовнішній вигляд скіла легко підробити, дослідники запропонували інструмент SKILLDETONATE, який перевіряє поведінку. Скіл запускається в ізольованому середовищі (пісочниці), де відстежуються дії на рівні операційної системи: читання й запис файлів, мережеві з’єднання та напрями передавання даних.
Два ключові принципи роблять підхід ефективним для агентних середовищ. По-перше, відстеження чутливих даних ведеться за потоками, а не за вмістом, тому кодування в Base64 чи шифрування не допомагають ухилитися. По-друге, інструкції, які скіл формує лише під час запуску, виконуються саме в момент виконання — там, де пакування приховує корисне навантаження.
У контрольованих тестах SKILLDETONATE, за даними авторів, виявив 97% атак за рівня хибних спрацювань 2% — нижче, ніж у статичних сканерів. На реальних шкідливих скілах показник виявлення становив 87%. Результати залишалися стабільними і після маскування скілів. Компроміс — швидкість: перевірка одного скіла займає кілька хвилин проти кількох секунд у сканера, однак виконується одноразово, до розгортання.
Важливе застереження: робота є препринтом, не пройшла рецензування, а всі кількісні результати отримані однією дослідницькою групою. Конкретні цифри варто сприймати як попередні.
Загрози вже реалізуються на практиці
Проблема не є суто теоретичною. За даними Bitdefender, приблизно 17% перевірених скілів на одному з маркетплейсів містили прихований шкідливий код. Koi Security виявила 341 шкідливий скіл у межах кампанії ClawHavoc.
Деякі реальні атаки використовують прийоми, описані в дослідженні. Згідно з Unit 42, на ClawHub було знайдено п’ять шкідливих скілів, які пройшли вбудоване сканування. Один із них — omnicogg — доповнив файл README 22 МБ сміттєвих даних, щоб перевищити ліміт розміру сканера. Два інших доставляли програми для викрадення паролів на macOS, ще два маніпулювали фінансовими рекомендаціями агента для просування партнерських посилань і схем з мем-токенами.
Розрив між статичною перевіркою та поведінкою під час виконання проявляється і поза межами маркетплейсів скілів. Команда Mozilla 0DIN задокументувала випадок, коли зовні безпечний репозиторій на GitHub змусив Claude Code відкрити зворотну оболонку (reverse shell) на машині розробника. Шкідливий код був відсутній у репозиторії — скрипт встановлення завантажував його під час виконання з DNS-запису, тож статичному сканеру не було чого виявляти.
Microsoft попередив про суміжний вектор: отруєний опис інструмента в Model Context Protocol, змінений після схвалення, змусив фінансового агента передавати дані про неоплачені рахунки. Механізм відрізняється, але порушене припущення одне й те саме: те, що пройшло перевірку, — це те, що виконується.
Водночас слід зазначити: жодне джерело в доступних матеріалах не підтверджує, що саме техніки SKILLCLOAK вже застосовуються атакувальниками у значних масштабах. Реальні випадки — це суміжні методи ухилення, а не точне відтворення описаного інструментарію.
Практичні рекомендації
Для команд, які використовують ІІ-агенти в розробці, дослідження формулює конкретні індикатори, на які варто звертати увагу навіть за успішного проходження скілом сканування:
- Великі файли або файли з високою ентропією в директоріях, які сканери зазвичай пропускають (
.git/,build/). - Скіли, що розпаковують або збирають код лише під час запуску, а не постачають його у відкритому вигляді.
- Файли, доповнені даними значно понад розумний розмір — прийом для обходу лімітів сканера.
Окрім індикаторів, автори пропонують конкретні заходи захисту:
- Хешування скіла під час сканування і повторна перевірка хеша перед кожним запуском — для виявлення корисних навантажень, що розпаковуються після перевірки.
- Моніторинг поведінки під час виконання: які файли скіл читає й модифікує, які команди запускає, куди надсилає дані.
- Принцип мінімальних привілеїв: агентам слід надавати лише той доступ, який необхідний для конкретного завдання.
- Ізоляція середовища: не запускати агентів на машинах, що містять критичні секрети — ключі API, токени доступу, приватні ключі.
- Встановлювати скіли лише з перевірених джерел, не покладаючись на публічні маркетплейси як на єдиний фільтр.
Статичне сканування залишається корисним як базова гігієна, але це дослідження — разом із реальними інцидентами від Unit 42, Bitdefender і Mozilla 0DIN — демонструє його фундаментальне обмеження: сканер оцінює скіл у момент завантаження, тоді як шкідлива поведінка проявляється під час виконання. Для організацій, які інтегрують ІІ-агенти в робочі процеси розробки, пріоритетом має стати перехід від довіри до результатів статичного сканування до контролю поведінки скілів у середовищі виконання — через пісочниці, моніторинг системних викликів і відстеження потоків даних.