У корпоративній документації знайдено 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
