Cryptographic Context Injection — черговий спосіб обійти захисні бар’єри великих мовних моделей.
На початку цього тижня дослідники описали атаку, яка використовувала прихований ввід від Microsoft 365 Copilot для підприємств, щоб змусити ШІ-асистента викрасти пароль із поштової скриньки користувача. Тепер окрема команда розробила подібну атаку проти Grok. Новий злом для викрадення даних використовує просту хитрість, щоб змусити велику мовну модель, що належить Ілону Маску, викрадати чати користувачів та іншу особисту інформацію. На момент публікації цього матеріалу асистент продовжував видавати дані, попри те, що xAI було повідомлено про це ще в червні.
Висновок з обох цьоготижневих епізодів — і незліченних інших, що передували їм — полягає в тому, що великі мовні моделі (LLM) не здатні вирішити першопричини впровадження підказок (prompt injections), найсерйозніших класів вразливостей, до яких вони найчастіше схильні. Це не залишає розробникам ШІ іншого вибору, окрім як створити захисний бар’єр, який відводить модель від шкідливих дій. Як я зазначив у вівторковій статті, такий підхід еквівалентний тому, як інженер з безпеки дорожнього руху встановлює захисну рейку навколо небезпечного повороту, замість того, щоб нахилити сам поворот.
Cryptographic Context Injection
Впровадження підказок використовує навчання LLM, щоб за будь-якої можливості виконувати запити користувачів. Зловмисники можуть скористатися цією схильністю, підставляючи шкідливі інструкції в електронні листи або веб-сторінки, які асистенту доручено підсумувати. Оскільки LLM не можуть надійно розрізнити вміст електронного листа, надісланого ненадійним відправником, та інструкції користувача, введені безпосередньо в підказку, надмірно старанний LLM сумлінно їх виконує. На сьогоднішній день єдиним виходом для Grok та інших LLM є створення захисних бар’єрів, які позначають підозрілі інструкції та забороняють їх виконання.
Роні Утевський, дослідник компанії Adversa, нещодавно виявив простий спосіб повністю обійти це обмеження. Замість того, щоб складати шкідливу інструкцію у вигляді звичайного тексту, хакер шифрує її. Веб-сайт, що розміщує зашифрований текст, також містить інструкції звичайним текстом для розшифровки зашифрованого вмісту разом із ключем розшифровки. Використовуючи цю просту послідовність, Grok виконує команду, щойно користувач дає асистентові вказівку підсумувати сторінку. Попередження немає, і підтвердження не вимагається.
Розшифровані інструкції наказують LLM створити те, що видається ключем розшифровки. Насправді це щось зовсім інше. Значенням фальшивого ключа є ім’я користувача, місцезнаходження та історія чатів. Це значення потім використовується як параметр, доданий до URL-адреси, що веде на сайт зловмисника. Як тільки Grok відкриває посилання, дані потрапляють до логів сервера зловмисника.
Adversa не може з упевненістю сказати, чому Grok відмовляється виконувати однакові інструкції у звичайному тексті, але виконує зашифровані. Основна теорія полягає в тому, що фільтр Grok перевіряє текст, який надходить до моделі та виходить з неї, але не вивід результатів виконання власного коду. Інструкції щодо обробки зашифрованого тексту за допомогою PBKDF2 та AES-256-GCM проходять фільтр як звичайний запит, оскільки класифікатор може їх прочитати, але не може визначити, що вони розблоковують. Після розшифровки додаткових інструкцій вони надходять до моделі як власний вивід інструменту, і модель діє на їх основі, без будь-якої перевірки захисними бар’єрами.
«Статичні захисні бар’єри класифікують вводи як текст; вони їх не виконують», — написав Утевський у четвер. «Зловмисник надсилає зашифрований текст разом із матеріалом ключа та інструкцією для його розшифровки, а модель виконує цю розшифровку всередині власного середовища виконання коду. Все, що потрібно сканеру захисного бар’єру, є прямо на сторінці, але відновлення звичайного тексту означає виконання PBKDF2 та AES-256-GCM, чого жоден класифікатор вмісту не робить під час перевірки».
У електронному листі дослідник зазначив, що такі захисні бар’єри називаються статичними, «оскільки вони лише читають вміст як текст. Вони не виконують код і нічого не розшифровують. Це прогалина, яку ми використовуємо. Справжні інструкції зашифровані, тому захисний бар’єр бачить лише безглуздий зашифрований текст і пропускає його».
Adversa використовувала подібну техніку в атаці на Gemini, щоб змусити мовну модель Google ігнорувати свої внутрішні правила безпеки. Тут зашифрований текст було розшифровано до того, що виглядало як трасування стека (traceback). Розшифрований текст містив одне правило: якщо код не працює, прочитати повідомлення про помилку і діяти відповідно. Звичайний текст впроваджував підказку, яка зрештою змусила Gemini порушити свої правила безпеки.
«Ця техніка створила приклад забороненого вмісту з кількох абзаців, який фільтри безпеки Gemini зазвичай приховують (створення запальної зброї)», — заявила Adversa. «З модифікованим корисним навантаженням той самий вектор відтворив системні інструкції Gemini, включаючи директиву, що забороняє їх розголошення».
Adversa не повідомила про цю поведінку Google, оскільки виявлення таких вразливостей (jailbreaks) не входить до сфери дії програми компанії з розкриття вразливостей. Однак протягом останніх кількох тижнів Gemini стає дедалі стійкішим до цієї атаки. «Ми не можемо визначити причину зміни — це можуть бути оновлення фільтрів, зміни версії моделі або обидва фактори», — зазначили в компанії. Дослідники компанії називають цю техніку “Cryptographic Context Injection” (впровадження криптографічного контексту).
«Cryptographic Context Injection є одним із прикладів ширшого зсуву: атаки, які маніпулюють не лише підказкою, а й ширшим контекстом, який LLM розглядає як власний, наприклад, виводи інструментів, результати виконання в реальному часі та проміжний стан», — заявила Adversa. «Ця поверхня атаки значно більша, ніж те, що традиційно називають «вводами моделі», і наступне покоління атак з’явиться саме там».
Cryptographic Context Injection — це лише останній приклад недоліку, з яким стикаються захисники LLM. Щоразу, коли вони створюють новий, одноразовий захисний бар’єр, зловмисник знаходить новий вектор, який дозволяє автомобілю знову злетіти з дороги. Цикл триває: намилити, промити та повторити.
Джерело новини: arstechnica.com
