У корпоративній документації знайдено 227 команд для встановлення програмного забезпечення, які вказують на код, що нікому не належить.
Файли документації на понад 100 вебсайтах містять потенційно небезпечний виконуваний вміст, який автоматично встановлюється під час відвідування багатьма ШІ-агентами. Кілька десятків компаній, зокрема деякі з Fortune 500, серед тих, хто виконав код із доведеним принципом дії. Принаймні один неправильно налаштований сайт спрямовує відвідувачів, людей чи ШІ, на активне шкідливе програмне забезпечення.
Потенційно небезпечний вміст міститься у файлах `llms.txt` та `llms-full.txt`. Це новий стандарт, який вебсайти використовують для надання машиночитних зведень контенту сайту та його загальної структури. Ці файли є ШІ-еквівалентом стандарту `robots.txt`, який інструктує пошукові системи, як індексувати контент сайту. Google Lighthouse, інструмент для розробників вебсайтів, має більше інформації тут. Правильно налаштовані файли `llms.txt` та `llms-full.txt` для Cloudflare доступні тут та тут.
Як дослідники виявили проблему
Дослідники із секретного стартапу в Ізраїлі просканували 6 214 активних доменів, що належать підрядникам оборонної промисловості, компаніям зі списку Fortune 500 та великим технологічним компаніям. З 8 265 файлів `llms.txt` та `llms-full.txt`, які вони знайшли (багато сайтів розміщували як `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]». Зловмисник може потім зареєструвати сайт і розмістити на ньому шкідливі інструкції.
Як демонструє 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`, розміщених на вебсайтах. Інструкції, як неявні, так і явні, присутні майже скрізь, де переміщається агент. Ця руйнуюча межа, у поєднанні з прагненням великих технологічних компаній впровадити ШІ всюди, не викликає теплих почуттів щодо майбутнього, але, безумовно, займе роботу співробітників служби безпеки (або ШІ-агентів, які їх замінять).
Джерело новини: arstechnica.com
