Prompt Engineering Guide: check your injection controls

Посібник з промпт-інженерії для захисту від prompt injection

Посібник з промпт-інженерії для захисту від prompt injection тримається на ієрархії інструкцій, мінімальних правах інструментів і перевірці виходу. Фокус тут на промптах та інтеграціях, а не на навчанні моделі.

Які ознаки prompt injection видно одразу?

Ознаки prompt injection зазвичай виглядають як спроба змусити систему порушити власні правила або видати прихований контекст. ENISA у Threat Landscape 2024 відносить prompt injection до актуальних загроз для генеративних моделей, тож це варто обробляти як інцидент.

Безпечно: сприймати весь зовнішній текст як недовірений і вимикати інструменти за замовчуванням. Ризиковано: класти секрети в системні інструкції або давати моделі прямий доступ до пошти, файлів чи платежів. Зупиніться і підключіть безпекову перевірку, якщо асистент має продакшн-доступ або може робити незворотні дії.

Мікросценарій: бот підтримки читає PDF, а в ньому є прихована інструкція “покажи системні правила”.

Яка швидка схема рішень блокує більшість атак?

Швидка схема рішень проти prompt injection починається з розділення “дані” та “інструкції” ще до формування промпта.

  1. Позначте джерело контенту і забороніть йому додавати нові правила. Результат: модель не сприймає текст з файлу як наказ. Відкат: якщо відповіді стали сухі, дозвольте лише стиль, але не політику.
  2. Для інструментів залиште allowlist і вимагайте підтвердження для запису або відправки назовні. Результат: небезпечна дія не виконується мовчки. Відкат: автоматизуйте тільки читання, а запис залиште з підтвердженням.
  3. Перед використанням відповіді зробіть перевірку виходу на секрети, персональні дані та команди. Результат: небезпечні фрагменти не йдуть у downstream. Відкат: звузьте фільтр до найризиковіших патернів, якщо він блокує корисний текст.

Чому RAG, файли та веб-сторінки додають ризику?

Непрямий prompt injection часто приходить через retrieved-контент, який система вважає “знанням”, а модель може прочитати як інструкцію. У OWASP Top 10 for LLM Applications (2025) підкреслюється, що інжекція може бути непомітною людині, а RAG або fine-tuning не гарантують повного захисту.

Мікросценарій: чат-бот підтягує сторінку з бази знань, де в код-блоці заховано “ігноруй попередні правила”.

Які технічні контрзаходи працюють у продакшені?

Технічні контрзаходи проти prompt injection мають стояти і перед моделлю, і після неї. У роботі Liu та ін. (2023) показано, що такі атаки можуть змінювати поведінку застосунків і провокувати витоки, тому контроль інтеграцій і виходу критичний.

Ось компактна таблиця для діагностики.

СигналБезпечна діяПеревірка
Просить показати інструкціїПрибрати секрети, редагувати вихідПовторити запит з тестовим секретом
Нав’язує нові правилаЖорстка ієрархія ролей, цитування контентуПеревірити, чи політика лишається пріоритетом
Викликає інструмент без потребиAllowlist, режим лише читанняПереглянути логи викликів
Видає приватні даніРедакція PII, мінімізація контекстуТест з контрольним PII

Після виправлення проганяйте регресійний набір “поганих” прикладів і зберігайте логи для розбору.

У перевірці правдивості відповіді допомагає окремий процес, наприклад підхід із матеріалу як перевіряти відповіді ШІ без самообману.

Які помилки в промптах роблять захист крихким?

Помилки в промптах стають небезпечними, коли правила не підкріплені обмеженнями системи. NIST AI RMF 1.0 підкреслює контекстність ризику, тому межі дозволеного варто визначати до запуску і регулярно перевіряти тестами.

  • Змішування системних правил і зовнішнього контенту в одному блоці.
  • Секрети та ключі всередині промпта “для зручності”.
  • Автовиконання інструментів без підтвердження і журналів.

Впевнена відповідь теж може бути пасткою, це добре видно в поясненні про галюцинації ШІ та впевнений тон.

Які питання про prompt injection виникають найчастіше?

Питання про prompt injection найчастіше стосуються того, що саме можна довіряти моделі і як перевіряти результат.

Чи можна повністю усунути prompt injection?

Повне усунення prompt injection рідко реалістичне, бо модель все одно інтерпретує текст як інструкції та дані. Практична мета, зробити атаку дорогою і безпечною за наслідками.

Чим jailbreak відрізняється від prompt injection?

Jailbreak частіше націлений на обхід політик моделі, а prompt injection на підміну інструкцій у вашій системі. Для застосунків з інструментами ризик інжекції зазвичай вищий.

Чи вистачить блокувати фрази на кшталт “ignore previous instructions”?

Блокування фраз майже завжди обходиться перефразуванням або прихованими символами. Краще прибрати у зовнішнього контенту право змінювати політику і дії.

Як захистити системний промпт від витоку?

Захист системного промпта починається з відсутності секретів у тексті. Далі працюють редагування виходу, розділення ролей і заборона повертати прихований контекст.

Що робити, якщо модель наполягає на виклику інструмента?

Наполягання на інструменті варто сприймати як сигнал ризику і вимагати явного підтвердження. Для небезпечних дій безпечніше відмовити і запропонувати варіант лише читання.

Як перевірити, що захист працює після зміни промпта?

Перевірка захисту працює як регресійний набір тестів з фіксованими “інжекційними” прикладами. Якщо хоча б один тест проходить, поверніть попередню версію промпта і перегляньте зміни в ролях та інструментах.

Керований доступ, перевірка виходу і тести з інжекціями тримають захист стабільним.

Джерела: