Скенерите, предназначени да засичат зловредни допълнителни „умения“ (skills) за ИИ агенти за програмиране, могат да бъдат измамени с няколко прости промени, които оставят зловредния софтуер работещ, според ново проучване на изследователи от Хонконгския университет за наука и технологии.
Техният най-силен трик е преминал успешно покрай всеки тестван скенер в над 90% од случаите, а същият екип е разработил инструмент за проверка по време на изпълнение (runtime checker), който улавя повечето от маскираните умения, пропуснати от скенерите.
Уменията са малки пакети, обикновено състоящи се от файл с инструкции в Markdown формат и няколко скрипта, които агенти като Claude Code, OpenAI Codex и OpenClaw зареждат, за да придобият нова функционалност. Тъй като умението е просто пакет от файлове, едно и също умение може да работи на различни агенти. При това то се изпълнява с нивата на достъп на самия агент: вашите файлове, вашия терминал, вашите запазени пароли.
Зловредно умение може да открадне идентификационни данни, да копира изходен код или да инсталира задна вратичка (backdoor). По-голямата част от съдържанието в публичните среди за споделяне се качва от непознати с минимална предварителна проверка.
Основната защита досега беше скенерът за умения, който чете файловете на дадено умение преди инсталирането му и блокира всичко, което изглежда опасно. Научният труд, озаглавен „Cloak and Detonate“, изследва дали това наистина работи. Отговорът е не. Заобикалянето на скенерите обаче не е нещо ново.
Медията The Hacker News вече е отразявала случаи на изследователи, прокарали фалшиво умение през всеки скенер, пред който е било изправено, достигайки по данни на самата компания до десетки хиляди агенти. Това, което този научен труд добавя, е метод за систематичното му прилагане в голям мащаб, както и защита, която продължава да работи дори когато това се случи.
Как маскираните умения преминават защитите
Инструментът на изследователите, SKILLCLOAK, пренаписва зловредното умение така, че да изглежда чисто, докато се държи по абсолютно същия начин. Той работи по два начина.
По-лекият метод пренаписва специфичните байтове, по които скенерът прави разпознаване, използвайки собствени оператори: замяна на символ с подобно изглеждащ от друга азбука или разделяне на флага на команда през нов ред, така че моделът на скенера вече да не съвпада, но командата все пак да се изпълнява.
По-тежкият метод, наречен саморазархивиращо се пакетиране (self-extracting packing), премества целия зловреден код в директория, която скенерът прескача (например .git/), зад привидно безопасен декодер, който възстановява умението едва когато агентът го стартира. Скенерите пропускат подобни директории, за да пестят време и да намалят фалшивите сигнали, което е точно сляпото петно, експлоатирано от този трик.
Срещу осем скенера и 1613 реални зловредни умения, изтеглени от публичната платформа ClawHub, трикът с пакетирането е заобиколил всеки от осемте скенера в над 90% от случаите, а при повечето от тях – в над 99% от случаите.
По-лекото пренаписване е преодоляло защитите в над 80% от случаите при повечето скенери и 96% при един от тях. Маскировката не струва почти нищо на атакуващия: при Claude Code и OpenAI Codex прикритите умения са работили също толкова добре, колкото и оригиналните.
Наблюдение на това какво прави умението, а не как изглежда
Тъй като външният вид може да бъде фалшифициран, изследователите предлагат вместо това да се проверява поведението чрез инструмент, който наричат SKILLDETONATE. Той стартира умението в изолирана среда (sandbox) и наблюдава действията му на ниво операционна система: какво чете, какво пише и накъде изпраща данни.
Две идеи правят този инструмент ефективен за ИИ агенти. Той проследява чувствителните данни според посоката на техния поток, а не според външния им вид, така че кодирането в base64 или криптирането не го подвеждат. Освен това той изпълнява инструкциите на умението само по време на работа (runtime), което е точно мястото, където пакетиращият трик крие своя зловреден код.
При контролиран тест инструментът за проверка е уловил 97% от атаките, като същевременно е категоризирал погрешно като опасни едва 2% от безопасните умения – по-нисък процент на фалшиви тревоги от скенерите, които побеждава. Тези резултати са останали стабилни и при маскирани умения. При реални зловредни умения той е засякъл 87% от тях.
Скенерът на Cisco, който е бил най-силният тестван скенер, е показал противоположни резултати: уловил е 99% от реалните умения преди маскирането и едва около 10% след него.
Недостатъкът на новия метод е скоростта – процесът отнема няколко минути за всяко умение в сравнение с няколкото секунди за традиционен скенер, въпреки че проверката се извършва еднократно, преди умението да бъде активирано. Разработката е предпечатна публикация (preprint) и все още не е преминала през партньорска проверка; изследователите са публикували кода си публично.
Нищо от това не е хипотетично. Публичните пазари вече са пълни със зловредни умения, които скенерите не успяват да спрат: Bitdefender установи, че приблизително 17% от проверените умения в една платформа съдържат скрит зловреден код, а Koi Security преброи 341 в рамките на една кампания, наречена ClawHavoc (както съобщи THN), като по-късно броят им нарасна до 824 с разрастването на платформата.
Някои от тях използват същите трикове, описани в научния труд. От пет заобикалящи защитите умения, които Unit 42 откри активни в ClawHub въпреки вграденото сканиране, едно (omnicogg) е допълнило своя README файл с 22 MB излишни данни, за да премине лимита за размер на скенера – същият оператор за запълване на размер, който изследователите тестват. Други две умения са доставяли софтуер за кражба на пароли за Mac, а останалите две са компрометирали финансовите съвети на агента, за да рекламират партньорски линкове и да манипулират пускането на меме-койни.
Пропуските при проверките в реално време се наблюдават и извън пазарите за умения. Чисто изглеждащо хранилище в GitHub наскоро накара Claude Code да отвори обратна обвивка (reverse shell) на машината на самия разработчик, осигурявайки отдалечен контрол на атакуващия. Зловредният код никога не е бил в хранилището; инсталационният скрипт го е изтеглил по време на изпълнение от DNS запис, така че статичното сканиране не е имало какво да засече.