// interactive security workshop

AI Injection Defense Lab

От беззащитного бота до крепости. Четыре уровня защиты MAS — атакуй, наблюдай, понимай.

// chapter 01

Что такое Prompt Injection?

Атака, при которой злоумышленник внедряет инструкции в контекст LLM, заставляя модель выполнять непредусмотренные действия. SQL-инъекция, но для нейросетей.

Direct Injection

Пользователь явно просит модель сменить поведение: Ignore all previous instructions, role hijacking, запрос системного промпта.

Indirect Injection

Вредоносные инструкции скрыты в данных, которые модель читает: документы, email, web-страницы. Агент выполняет инъекцию, не зная об этом.

Multi-Step Attack

Серия безобидных запросов, каждый сам по себе безопасен, но в комбинации они готовят и эксплуатируют уязвимость. Трудно детектировать.

Data Exfiltration

Извлечение конфиденциальных данных: системные промпты, API-ключи, персональные данные клиентов, внутренняя конфигурация системы.

Почему это критично для банка?

Утечка данных

Персональные данные клиентов, условия NDA, внутренние регламенты — всё, что есть в контексте LLM, может быть извлечено.

Репутационный ущерб

Бот рекомендует конкурента, оскорбляет клиента или выдаёт фейковую информацию о продуктах. Скриншот в соцсетях — и готов скандал.

Обход бизнес-логики

Агент одобряет операцию, которую не должен. В банковском контексте это может означать прямые финансовые потери.

// chapter 02

Уровень 1: Наивный агент

PROTECTION: NONE

Простейшая архитектура — один вызов LLM. Системный промпт, сырые документы в контексте, сообщение пользователя. Без какой-либо фильтрации. Документы содержат скрытую инъекцию, которая активируется при обращении к данным о пенсионном вкладе.

User Input raw, unfiltered DeepSeek V3 system prompt + raw docs (с инъекцией) NO PROTECTION Response unverified
Interactive Console — Level 1 deepseek-v3
Execution Trace
> awaiting input_
Preset Attacks
// chapter 03

Уровень 2: Цепочка агентов

PROTECTION: BASIC

Добавляем Sanitizer на входе и Output Guard на выходе. Прямые инъекции теперь блокируются. Но indirect injection через документы проходит — sanitizer проверяет только user input, а не содержимое документов.

User input Sanitizer pattern detection direct injection filter Main Agent DeepSeek V3 + raw docs docs bypass sanitizer! Output Guard leak detection role change check Response verified
Interactive Console — Level 2 deepseek-v3 x3 agents
Execution Trace
> awaiting input_
Preset Attacks
// chapter 04

Уровень 3: Инспектор документов

PROTECTION: ADVANCED

Ключевая идея — изоляция контекстов. Doc Checker получает ТОЛЬКО документы, без user input. Он не знает, что спросил пользователь, поэтому его нельзя обмануть через input. Любой текст, который выглядит как инструкция в банковском документе — аномалия.

Doc Checker isolated from user input clean docs User input Sanitizer input filter Main Agent verified docs only Output Guard leak check Response verified
Interactive Console — Level 3 deepseek-v3 x4 agents
Execution Trace
> awaiting input_
Preset Attacks
// chapter 05

Уровень 4: Крепость

PROTECTION: MAXIMUM

Радикальный подход: LLM никогда не видит сырые документы. Данные заранее извлечены в структурированный JSON — «light assets». В JSON нет места для инструкций. Дополнительно — Qwen 3 30B с thinking-режимом, которая рассуждает перед ответом.

Data Extractor offline, pre-processing JSON facts {"rate":"12.9%", "term":"5 лет"} no raw text = no injection User Sanitizer Qwen 3 30B Qwen 3 30B JSON facts only thinking mode Guard output check OK
Interactive Console — Level 4 qwen-3-30b + light assets
Execution Trace
> awaiting input_
Preset Attacks
// summary

Сравнительный анализ

Lv.1 Naive Lv.2 Chain Lv.3 Inspector Lv.4 Fortress
МодельDeepSeek V3DeepSeek V3DeepSeek V3Qwen 3 30B
Агенты1343 + offline
Direct injectionVulnerableBlockedBlockedBlocked
Indirect injectionVulnerableVulnerableDetectedImpossible
Data exfiltrationVulnerablePartialBlockedBlocked
ДанныеRaw docsRaw docsCleaned docsJSON facts
LLM вызовов1343

Чеклист внедрения