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 з впровадженням ШІ всюди, не викликає теплих, пухнастих відчуттів щодо майбутнього, але, безсумнівно, займе персонал служби безпеки (або ШІ-агентів, які їх замінять).
Інформація підготовлена на основі матеріалів: arstechnica.com
