227 команд встановлення виявлено в корпоративній документації, які вказують на код, що нікому не належить.
Документація на понад 100 вебсайтах містить потенційно небезпечний виконуваний вміст, який автоматично встановлюється при відвідуванні багатьма ШІ-агентами. Декілька десятків компаній, деякі з них зі списку Fortune 500, серед тих, що виконали доказовий код. Принаймні один неправильно налаштований сайт спрямовує відвідувачів, як людей, так і ШІ, до активного шкідливого програмного забезпечення.
Потенційно небезпечний вміст міститься у файлах llms.txt та llms-full.txt — це нова конвенція, яку вебсайти використовують для надання машиночитних зведень контенту сайту та його загальної структури. Ці файли є аналогом стандарту robots.txt для ШІ, який інструктує пошукові системи, як індексувати контент сайту. Google Lighthouse, інструмент для веброзробників, надає більше інформації тут. Правильно налаштовані файли llms.txt та llms-full.txt для Cloudflare доступні тут і тут.
Як дослідники це виявили
Дослідники з ізраїльського стартапу просканували 6 214 активних доменів, що належать підрядникам оборонної промисловості, компаніям зі списку Fortune 500 та Big Tech. З 8 265 знайдених файлів llms.txt та llms-full.txt (багато сайтів містили обидва файли), 120, кожен на окремому сайті, вказували на один або кілька програмних пакетів чи доменних імен, які не були зареєстровані. Щоб перевірити, що відбувається, коли ШІ-агент обробляє такі файли, дослідники зареєстрували кілька незайнятих імен і розмістили пакети, які змушували будь-яку машину, що їх виконувала, зв’язуватися з їхнім сервером. Протягом години дослідники отримали відповідь від компанії зі списку Fortune 500. Згодом вони отримали ще кілька десятків, деякі від інших компаній зі списку Fortune 500 та стартапів. Їхній маяк також зафіксував ланцюжок батьківських процесів, які запускали кожне встановлення, зрештою виявивши, що в цьому брали участь кодувальні агенти, зокрема Claude, Codex від OpenAI та Hermes від Nous Research. Anthropic, OpenAI та Nous Research не надали коментарів до моменту публікації.
«Модель довіри зламана», — написав один із дослідників, Алон Герц, в інтерв’ю. «Агенти сприймають документацію постачальників як істину в останній інстанції і не ставлять її під сумнів — так само, як і люди, які ними керують. Використання агентів ШІ вибухово зростає, і агенти поширюються по всіх рівнях — SaaS, хмарні сервіси, кінцеві точки. З їхнім множенням зростає і поверхня атаки ланцюжка постачань, а сьогоднішні засоби захисту її не охоплюють».
Файли неправильно налаштовані, оскільки вони містять посилання на неіснуючі пакети з PyPI, npm та інших реєстрів разом з інструкціями щодо їх встановлення. Наприклад, один файл містив запит «Installation: pip install [відредаговано на прохання дослідників]». В іншому файлі було: «npm install [відредаговано]». Оскільки назви пакетів незареєстровані, зловмисник міг би зареєструвати одну з них і використовувати її для розміщення програм-вимагачів або будь-якого іншого типу шкідливих пакетів. Вразливість виникає, коли кодувальний агент, який має дозвіл на виконання команд оболонки, розглядає файл як авторитетну документацію з налаштування. Деякі ШІ-агенти завантажують пакет і запускають його. В інших випадках файли LLM посилаються на неіснуючі доменні імена. В одному випадку було зазначено: «Як приклад написання інтеграційних тестів для [відредаговано] додатків, ви можете використовувати фреймворк тестування [Citrus]». Зловмисник може зареєструвати сайт і розмістити на ньому шкідливі інструкції.
Як демонструє доказ концепції дослідників, кодувальні агенти робили саме це, включаючи деякі, що працювали всередині найпотужніших компаній світу. Це вже не теоретична загроза, а принаймні одна активна атака вже використовує цю плутанину. Дослідники знайшли файл LLM, розміщений на легітимному сайті clerk.com. Він містив ої команди встановлення, npx може завантажити пакет у кеш npm і виконати його доступний бінарний файл, не додаючи його до маніфесту залежностей проєкту. Дослідники невдовзі виявили, що хтось зайняв колись порожнє місце і використав його для розміщення активного шкідливого програмного забезпечення.
Clerk з того часу вирішив проблему. Компанія також зазначила, що якщо агент уже встановив бінарний файл, що міститься в пакеті @clerk/eslint-plugin, загрози не було. В іншому випадку було б встановлено шкідливий пакет. Незрозуміло, чи призвела ця плутанина до фактичних заражень.
Щойно виявлена загроза є лише черговим нагадуванням про фундаментальні обмеження ШІ. LLM не можуть провести надійний розмежування між автентичними інструкціями користувача, введеними безпосередньо в запит, і контентом, знайденим на ненадійних сторонніх джерелах. Інструкції, які моделі зустрічають у отриманому контенті, можуть бути оброблені так само легко, як і будь-що, введене користувачем, якщо належним чином сконструйований захисний бар’єр, встановлений один за одним, його не блокує. Цей поки що нерозв’язний недолік спричиняє ін’єкції запитів.
«Агент не розрізняє сторінку та команду», — написали дослідники в четвер. «Усе, що він читає, є вхідними даними, а кожен вхідний дані — це потенційна інструкція. Це означає, що весь корпус опублікованих даних, які агенти тепер споживають, тихо став поверхнею для виконання — і майже жоден з них не несе гарантій цілісності, які ми застосовуємо до реального коду».
120 неправильно налаштованих файлів, знайдених дослідниками, містили 227 команд для встановлення неіснуючих пакетів або перегляду незайнятих доменів. Незрозуміло, як ці помилкові записи з’явилися. У багатьох випадках записи передували епосі ШІ та спочатку були включені в файли, відмінні від LLM, на вебсайті. Це свідчить про те, що ці помилкові записи були створені вручну людьми. Дослідники підозрюють, що інші були створені ШІ, який або галюцинував, або, як і ШІ-агенти, що переглядали їхні файли, не міг розрізнити законні та незаконні інструкції.
Колапсуюча межа між даними та кодом
У четверговому пості дослідники деталізували:
Засіб безпеки… може не виявити цього, оскільки кожен сигнал, на який покладається система, вказує в неправильному напрямку.
Коли ШІ-агент стикається з файлом llms.txt, він бачить файл, що передається через HTTPS, з офіційного домену компанії, у стандартизованому форматі, призначеному для споживання ШІ, опублікований самою компанією або її довіреним партнером.
У агента немає причин ставити це під сумнів. Файл є авторитетом — це його призначення. Тому, коли файл каже pip install internal-tool, агент не зупиняється, щоб перевірити, чи справді internal-tool належить компанії. Він не перевіряє простір імен на PyPI. Він не помічає, що посилання на документацію веде до домену, термін дії якого закінчився три місяці тому. Він просто робить те, що каже файл.
Ланцюжок довіри також є транзитивним. Файл llms.txt не обов’язково має бути розміщений на власному вебсайті компанії зі списку Fortune 500. Агенти отримують контекст від довірених третіх сторін — документації партнера, посилання на SDK постачальника, посібника з налаштування проєкту спільноти. Якщо агент довіряє цій третій стороні, а файл цієї третьої сторони вказує на незайнятий пакет, ланцюжок працює так само.
І виявлення кінцевих точок не зреагувало. Для будь-якого EDR або проксі це виглядає як розробник, що запускає легітимний менеджер пакетів: pip install з pypi.org — домену, який дозволяє кожен корпоративний проксі — з кодувальним агентом, встановленим компанією навмисно як батьківський процес. Жодної аномалії. Жодного сповіщення. Збій відбувається вище за течією, у проміжку між інструкцією та виконанням. Кінцева точка може не мати шансів, тому що вона ніколи не ставила правильного питання.
Дослідження переконливо доводить, що в епоху ШІ колись чітка межа між даними та виконуваним кодом зникає. Будь-що, що агент може обробити, є потенційною інструкцією, яку він може виконати, якщо йому дозволено запускати команди.
«Випадок з Clerk — це найчіткіший доказ цього», — написали дослідники. «Команда виглядала точно так само, як щось, що постачальник міг би надіслати — тому що це було у файлі інструкцій самого постачальника. Відсутньою була лише назва в реєстрі. Кожен рівень довіри був неушкоджений, окрім того, якого ніхто не думав перевірити».
Джерелом цієї нововиявленої проблеми є те саме, що й основна причина ін’єкцій запитів. Однак ця нова слабкість є ширшою.
«При ін’єкції запиту хтось навмисно вставляє шкідливі інструкції», — пояснив Герц. «Тут сама інструкція може бути абсолютно нешкідливою і надходити з легітимного джерела — власної документації реальної компанії — без участі зловмисника на момент її написання. Небезпека виникає пізніше, коли пакет або домен, на який вона вказує, покинутий, і хтось інший його займе».
Це означає, що проблема виходить далеко за межі файлів llms.txt та llms-full.txt, розміщених на вебсайтах. Інструкції, явні чи неявні, присутні майже скрізь, де переміщується агент. Ця розвалююча межа, в поєднанні з поспіхом Big Tech із впровадженням ШІ всюди, не викликає теплих і пухнастих почуттів щодо майбутнього, але, безумовно, займе персонал безпеки (або ШІ-агентів, які їх замінять).
Ден Гудін
Ден Гудін є головним редактором з питань безпеки в Ars Technica, де він курує висвітлення шкідливих програм, комп’ютерної шпигунства, ботнетів, апаратного злому, шифрування та паролів. У вільний час він захоплюється садівництвом, кулінарією та відвідуванням незалежних музичних заходів. Ден проживає в Сан-Франциско. Слідкуйте за ним тут на Mastodon та тут на Bluesky. Зв’яжіться з ним через Signal за номером DanArs.82.
Подробиці можна знайти на сайті: arstechnica.com
