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, OpenAI Codex та Hermes від Nous Research. Anthropic, OpenAI та Nous Research не відповіли на запити про коментар до моменту публікації.
«Модель довіри зруйнована», — написав в інтерв’ю один із дослідників, Алон Герц. «Агенти сприймають документацію постачальників як істину в останній інстанції і не сумніваються в ній — так само, як і люди, що їх контролюють. Використання агентного ШІ вибухово зростає, і агенти поширюються по всіх рівнях — SaaS, хмари, кінцеві точки. З їхнім примноженням зростає і поверхня ланцюга поставок, а сьогоднішні засоби захисту її не охоплюють».
Файли налаштовані неправильно, оскільки вони містять неіснуючі пакети з PyPI, npm та інших реєстрів разом з інструкціями щодо їх встановлення. Наприклад, один файл містив запит: «Installation: pip install [вилучено на прохання дослідників]». В іншому файлі було: «npm install [вилучено]». Оскільки назви пакетів незареєстровані, зловмисник може зареєструвати одну з них і використовувати її для розміщення програм-вимагачів або будь-якого іншого типу шкідливого пакета. Вразливість виникає, коли кодовий агент, який має дозвіл на виконання команд оболонки, розглядає файл як авторитетну документацію з налаштування. Деякі ШІ-агенти тоді завантажують і запускають пакет. В інших випадках файли LLM вказують на неіснуючі доменні імена. В одному випадку було: «Як приклад написання інтеграційних тестів для [вилучено] додатків, ви можете використовувати фреймворк тестування [Citrus]». Зловмисник може тоді зареєструвати сайт і розмістити на ньому шкідливі інструкції.
Як демонструє PoC дослідників, кодові агенти зробили саме це, включаючи деякі, що працювали всередині найпотужніших компаній світу. Це не просто теоретична загроза, щонайменше одна активна атака вже експлуатує цю плутанину. Дослідники знайшли файл 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 із впровадженням ШІ всюди, не викликає теплих і пухнастих почуттів щодо майбутнього, але, безумовно, змусить фахівців з безпеки (або ШІ-агентів, які їх замінять) бути зайнятими.
Подробиці можна знайти на сайті: arstechnica.com
