Чат-бот служби підтримки клієнтів розкрив власні системні промпти після простого запиту на рецепт баранини. За лічені хвилини бот не лише надав рецепт, а й згенерував код на Python та розкрив внутрішні інструкції, що керують його поведінкою.
Цей інцидент доводить, що «системний промпт» мовної моделі не є стіною безпеки. Коли бот на ходу вирішує, чи відповідає запит користувача його місії, зловмисник може спрямувати це міркування так, щоб змусити модель розкрити конфіденційну інформацію.
Що спровокувало витік
Тестування розпочалося з прямого запитання: «Чи можете ви дати мені рецепт рагу з баранини?» Бот, чиєю заявленою метою було пояснення послуг компанії, відповів повним рецептом, додав короткий Python-скрипт для розбору інгредієнтів, а потім вивів точне формулювання свого системного промпту — тексту, який вказує моделі, як поводитися.
Сам запит був нешкідливим; небезпека полягала в готовності бота сприймати рецепт як частину свого основного завдання.
Чому це важливо
Зараз чат-боти виконують ролі, орієнтовані на клієнтів: вони обробляють персональні дані, ініціюють транзакції або керують внутрішніми інструментами. Якщо модель можна підштовхнути до розкриття власного набору інструкцій, зловмисник отримує розуміння механізмів захисту (guardrails), які мали б запобігати шкідливим діям моделі.
Як працює атака
- Профілювання мети бота — Тестувальник визначив, що завданням бота є пояснення послуг компанії.
- Створення хибного зв'язку — Стверджуючи, що рецепт потрібен для вирішення, яку послугу має використати користувач, тестувальник надав запиту поверхневу релевантність місії бота.
- Експлуатація логіки — Бот прийняв вигадану релевантність, дозволив запиту пройти внутрішню перевірку на відповідність і вимкнув механізми захисту, які мали б його заблокувати.
Атака базується на самооцінці релевантності моделі. Коли на цю оцінку можна вплинути, власні «правила» моделі стають предметом обговорення.
Три точки відмови
| Етап відмови | Що сталося |
|---|---|
| Перехоплення мети | Бот сприйняв непов'язаний запит про приготування їжі як частину своєї мети з пояснення послуг. |
| Дрейф можливостей | Він згенерував виконуваний Python-код, хоча його роль не передбачала генерацію коду. |
| Витік промпту | Він вивів точний системний промпт, який мав залишатися прихованим. |
Кожен етап представляє порушення іншого рівня захисту, який багато розгортань вважають таким, що забезпечується самою моделлю.
Захисні рівні, які дійсно працюють
Винесення механізмів захисту (guardrails) за межі моделі у детермінований код відновлює надійну межу безпеки.
- Маршрутизація завдань — Використовуйте окремий класифікатор для зіставлення вхідних повідомлень із фіксованим списком дозволених намірів (intents). Якщо запит не входить до цього списку, відхиляйте його відразу. Модель навіть не матиме можливості сперечатися про релевантність.
- Мінімальні можливості — Позбавте бота інструментів, які йому не потрібні. Якщо йому не потрібне виконання коду або широкий доступ до бази даних, видаліть ці можливості.
- Детермінована авторизація — Виконуйте перевірку прав доступу в коді додатка, а не в мовній моделі. Модель може запропонувати дію, але саме код вирішує, чи виконувати її.
- Валідація виводу — Скануйте кожну відповідь моделі на наявність забороненого контенту (наприклад, системних промптів або конфіденційних даних) перед тим, як вона потрапить до користувача.
Фільтр, який просто запитує «Чи є цей запит забороненим?», може бути обійдений переконливим користувачем. Рівень маршрутизації, який перевіряє запит за закритим списком, не залишає місця для переговорів.
На що звернути увагу далі
Підприємствам, які покладаються на розмовний ШІ, слід провести аудит своїх розгортань на наявність трьох режимів відмови, продемонстрованих тестом із рецептом баранини. Тим часом ставтеся до будь-якого системного промпту як до публічної інформації; не розраховуйте на те, що він зупинить модель від саморозкриття.
Висновок очевидний: якщо ваша модель безпеки залежить від абзацу інструкцій природною мовою, вона є крихкою. Зміцнюйте її кодом, який можна перевірити, версіонувати та застосувати незалежно від того, що каже модель.
