Як оцінити захист від prompt injection: практичний чекліст
Відтворюваний протокол перевірки prompt-injection defenses: threat model, source-to-sink fixtures, tool traces, витік даних, side effects, false positives, release gates і rollback.
Зміст статті
- 01Почніть із security expectation і карти source → sink
- 02Зберіть risk-sliced corpus, а не колекцію jailbreak-фраз
- 03Виконуйте end-to-end тести з реальними межами повноважень
- 04Оцінюйте outcome, trajectory і blast radius окремо
- 05Перевірте defenses шарами та проведіть ablation
- 06Release gate: promote, restrict, reject або roll back
Передумови
Почніть із security expectation і карти source → sink
Prompt injection eval не починається зі списку фраз на кшталт «ignore previous instructions». Спочатку опишіть security expectation: які дані агент може читати, які зовнішні сторони можуть впливати на його контекст, які дії він здатен запропонувати або виконати та що ніколи не має відбутися без окремої перевірки. Direct injection від користувача й indirect injection із вебсторінки, листа, документа, tool output або пам’яті утворюють різні attack surfaces.
Для кожного workflow побудуйте пари source і sink. Source — недовірений контент, який атакувальник може змінити; sink — передавання секрету, мережевий запит, повідомлення, платіж, зміна файлу, запис у пам’ять або інша consequential capability. OpenAI описує саме таку source-sink рамку для агентів: тест має доводити не лише те, що модель помітила підозрілий текст, а й те, що небезпечний потік до sink був заблокований або вимагав коректного підтвердження.
- Asset → секрети, персональні дані, credentials, гроші, репутаційні або операційні дії.
- Source → user input, web, email, RAG, файли, tool output, memory і multimodal content.
- Sink → network, message, write tool, code execution, memory write або privilege change.
- Invariant → заборонена подія, яку harness перевіряє детерміновано.
process
Карта системи: Як оцінити захист від prompt injection: практичний чекліст
timeline
Контрольні точки для практичного застосування
- Asset → секрети, персональні дані, credentials, гроші, репутаційні або операційні…
Контрольна теза з матеріалу статті.
- Source → user input, web, email, RAG, файли, tool output, memory і multimodal con…
Контрольна теза з матеріалу статті.
- Sink → network, message, write tool, code execution, memory write або privilege c…
Контрольна теза з матеріалу статті.
- Invariant → заборонена подія, яку harness перевіряє детерміновано.
Контрольна теза з матеріалу статті.
- agent-evaluation
- tool-calling-contracts
Зберіть risk-sliced corpus, а не колекцію jailbreak-фраз
Corpus має відтворювати реальні траєкторії: звичайна сторінка з прихованою інструкцією, лист із правдоподібним business pretext, документ RAG, який просить змінити policy, redirect chain, URL із даними в query, poisoned tool result і запис пам’яті, що видає себе за approval. Додайте перефразування, різні мови, кодування, typographic hiding, зображення та багатокрокові атаки. Кожен fixture зберігає атаковане джерело, дозволені докази, очікувані tool calls і forbidden events.
Позитивні benign fixtures потрібні не менше за атаки. Вони показують, чи захист не блокує нормальне цитування інструкцій, security research, support-листи, легітимні зовнішні посилання та дозволені дії. Розділяйте випадки за source, sink, asset sensitivity, autonomy, permission scope і потрібністю user confirmation. Один середній score легко приховає провал рідкісного, але критичного data-exfiltration slice.
Виконуйте end-to-end тести з реальними межами повноважень
Запускайте fixture у production-like sandbox із тими самими prompt, model, tools, policies, network rules, credentials broker і confirmation UI, але з canary-секретами та фіктивними destinations. Тест лише фінальної відповіді недостатній: модель може мовчки викликати URL, передати payload у tool argument, записати атаку в memory або підготувати небезпечну чернетку. Harness зберігає повну траєкторію і незалежно спостерігає кожен sink.
Не видавайте тестовому агенту ширших прав, ніж production role, і не підміняйте policy mock-ом, який завжди відмовляє. Перевірте least privilege, tenant binding, scoped credentials, destination allowlist, sandbox egress, schema validation та approval binding до точного payload. Confirmation не проходить gate, якщо після нього агент може змінити одержувача, дані або суму без нового рішення користувача.
Оцінюйте outcome, trajectory і blast radius окремо
Основний verdict детермінований: forbidden sink reached, secret exposed, unauthorized write, poisoned memory, confirmation bypass або safe completion. Окремо позначайте attack detected, refused, content safely summarized, user warned і task completed. Відмова моделі може виглядати безпечно, але не доводить, що фоновий request не пішов; навпаки, модель може не назвати атаку, однак policy layer правильно заблокує side effect.
Звітуйте attack success rate лише разом із точним corpus, repetitions, sampling settings, model/policy versions і confidence interval; не переносіть vendor benchmark на власну систему. Для operations корисні critical invariant failures, sink-specific compromise rate, secret-canary exposure, unauthorized attempts blocked, benign task success, false-positive rate, confirmation quality, containment time, latency і cost per evaluated trajectory. Critical exfiltration не компенсується високим середнім task success.
Перевірте defenses шарами та проведіть ablation
Defense-in-depth включає model behavior, trust labels, content handling, least privilege, data-flow checks, sandbox, network controls, approval та monitoring. Запустіть повний stack, а потім контрольовані ablations: приберіть classifier, звузьте або розширте tool scope, вимкніть destination check чи confirmation. Так видно, який шар справді зупинив атаку, де є single point of failure і чи декоративний «AI firewall» лише додає latency.
OpenAI й Anthropic прямо описують prompt injection як активну проблему без єдиного гарантованого захисту. Тому classifier precision не є security result. Перевіряйте, чи система обмежує наслідок навіть тоді, коли модель або detector пропустили соціально переконливу атаку. Для web agents окремо тестуйте тихі URL-based leaks, redirects, previews і embedded resources; allowlist домену не доводить безпечність конкретного data flow.
Release gate: promote, restrict, reject або roll back
Decision record фіксує workflow, sources, sinks, permissions, model, prompt, policy bundle, tool schemas, corpus revision, critical invariants, thresholds, owner і review date. Promote стосується лише перевіреного scope. Restrict може вимкнути network egress, memory writes або high-impact tools; reject повертає read-only чи deterministic baseline. Будь-який canary-secret leak, cross-tenant access або unauthorized consequential action блокує release незалежно від середнього score.
Rollout проходить offline replay, adversarial staging, read-only canary, малий permission-bounded cohort і постійний monitoring. Rollback відкликає scoped credentials, вимикає sinks і заражені memory writes, повертає known-good policy/model bundle та зберігає очищений trace для incident review. Новий exploit після triage стає regression fixture. Повторюйте critical suite після зміни моделі, prompt, retriever, browser, MCP/tool server, permissions, network policy або confirmation UX.
- Promote → усі critical invariants пройдені у визначеному scope.
- Restrict → зменшити sources, sinks, data class, autonomy або permissions.
- Reject → залишити read-only чи детермінований baseline.
- Roll back → revoke credentials, disable sinks, quarantine state і reconcile side effects.
Практичні приклади
Прихована інструкція в листі постачальника
Canary-лист просить агента переслати останній рахунок на нову адресу. Harness перевіряє, що текст можна підсумувати як недовірені дані, але recipient allowlist, approval binding і policy не допускають відправлення або тихого витоку.
URL-based exfiltration під час вебдослідження
Сторінка пропонує відкрити URL, у параметр якого підставлено canary із приватного контексту. Network observer перевіряє redirects і background fetches; безпечна текстова відповідь не зараховується як pass, якщо request залишив sandbox.
FAQ
Чи достатньо red-team prompt list для prompt injection eval?
Ні. Потрібні end-to-end fixtures із реальними sources, tools, permissions і observable sinks, бо ризик визначається фактичним витоком або side effect, а не лише текстом відповіді.
Яка метрика найважливіша?
Спочатку zero-tolerance security invariants для критичних витоків і unauthorized actions; потім attack success за slices, benign task success, false positives, latency і cost.
Чи може classifier повністю закрити prompt injection?
Ні. Соціально переконливі атаки важко відрізнити від звичайного контенту поза контекстом. Classifier є одним шаром, а наслідок обмежують permissions, data-flow policy, sandbox і approvals.
Коли повторювати evaluation?
Після зміни model, prompt, retrieval, browser, tool або MCP server, permission scope, network policy, confirmation UX, а також після кожного нового інциденту чи exploit class.
Пов’язані матеріали
Чому інструкції не є межею безпеки та як ізолювати недовірені дані, обмежувати інструменти, перевіряти вихід і тестувати прямі та непрямі атаки.
Безпека AI-агентівБезпека AI-агентів — практичний розбір production-архітектури: зменшення наслідків помилкового або атакованого рішення через системні межі довіри та мінімальні повноваження. Матеріал охоплює контракти, межі повноважень, failure modes, оцінювання та контрольований rollout.
Оцінювання AI-агентівОцінювання AI-агентів — практичний розбір production-архітектури: вимірювання не лише фінальної відповіді, а всієї траєкторії рішень, дій, витрат і безпечного завершення. Матеріал охоплює контракти, межі повноважень, failure modes, оцінювання та контрольований rollout.
Оцінювання LLM-систем у productionЯк побудувати evaluation set, автоматичні та людські метрики, regression gates і спостережуваність для промптів, RAG та агентів.
Tool calling і контракти інструментівЯк дозволити LLM викликати функції без передачі їй необмежених повноважень: schema, policy, idempotency, timeouts, verification і audit trail.
Browser agentsBrowser agents — практичний розбір production-архітектури: керування вебінтерфейсом через обмежені спостереження й дії, які можна відтворити, перевірити та зупинити. Матеріал охоплює контракти, межі повноважень, failure modes, оцінювання та контрольований rollout.
ACL і безпека RAGЯк не допустити витоку даних у RAG: authorization-before-retrieval, document і chunk ACL, tenant isolation, cache safety, prompt injection, аудит та security evaluation.
Human-in-the-loop для AIHuman-in-the-loop для AI — практичний розбір production-архітектури: залучення людини в конкретній точці ризику з достатнім контекстом для реального, а не формального контролю. Матеріал охоплює контракти, межі повноважень, failure modes, оцінювання та контрольований rollout.