44 lines
16 KiB
Markdown
44 lines
16 KiB
Markdown
# Индивидуальное задание
|
||
|
||
Разработка инструментария для тестирования безопасности ИИ-агентов: стенда для воспроизведения атак на основе непрямых инъекций промта (Indirect Prompt Injection) и защитного фильтра входящей электронной почты.
|
||
|
||
# План выполнения
|
||
|
||
| **№ п/п** | **Место проведения** | **Тема** | **Период выполнения** |
|
||
| --- | --- | --- | --- |
|
||
| 1 | ООО «ГК «Иннотех» | Инструктаж. | 20.01.2026–20.01.2026 |
|
||
| 2 | ООО «ГК «Иннотех» | Изучение ИИ-ассистентов и принципов атак типа «непрямая инъекция промта»; анализ архитектур и уязвимостей. | 21.01.2026–20.02.2026 |
|
||
| 3 | ООО «ГК «Иннотех» | Разработка стенда для тестирования ИИ-агентов на уязвимость к непрямым инъекциям промта (prompt-injection-stand). | 21.02.2026–10.04.2026 |
|
||
| 4 | ООО «ГК «Иннотех» | Проведение экспериментов v1–v3. Документирование результатов. | 11.04.2026–24.04.2026 |
|
||
| 5 | ООО «ГК «Иннотех» | Разработка защитного почтового фильтра MailGuard. | 25.04.2026–20.05.2026 |
|
||
| 6 | ООО «ГК «Иннотех» | Тестирование решений. Анализ результатов. Оформление отчёта. Подведение итогов. | 21.05.2026–01.06.2026 |
|
||
|
||
# Отзыв руководителя
|
||
|
||
Обучающийся группы М8О-101БВ-25 Пьянзин Михаил Андреевич проходил ознакомительную практику в ООО «Группа компаний «Иннотех». За время практики студент изучил принципы работы современных ИИ-ассистентов с открытым исходным кодом, исследовал архитектурные особенности агентных систем, выявил характерные векторы атак класса «непрямая инъекция промта» (Indirect Prompt Injection) и проанализировал их потенциальные последствия для информационной безопасности. В соответствии с индивидуальным заданием разработаны два взаимодополняющих программных решения: стенд для воспроизведения IPI-атак на ИИ-агентов (prompt-injection-stand) и защитный почтовый фильтр MailGuard, снижающий риск успешной эксплуатации выявленных уязвимостей.
|
||
|
||
За время прохождения практики практикант проявил высокий уровень самостоятельности, системное аналитическое мышление и умение последовательно выстраивать исследовательскую работу: от изучения предметной области и проведения серий воспроизводимых экспериментов до разработки средств защиты и документирования результатов. Студент продемонстрировал ответственное отношение к работе, способность аргументированно обосновывать принятые технические решения и предлагать направления дальнейшего развития проектов. В ходе практики были показаны уверенные навыки программирования на Python, работы с SMTP и почтовыми протоколами, проектирования модульной архитектуры, применения методов обнаружения обфускации во входных данных, а также глубокое понимание вопросов практической безопасности ИИ-агентов.
|
||
|
||
Рекомендуемая оценка «Отлично». Материалы, изложенные в отчёте обучающегося, полностью соответствуют индивидуальному заданию.
|
||
|
||
# Отчёт обучающегося по практике
|
||
|
||
Одной из ключевых задач при внедрении ИИ-агентов в корпоративную среду является проверка их устойчивости к атакам, направленным не на саму модель, а на данные, которые она обрабатывает. Именно такую проверку выполняет команда Red Team: она моделирует реальные сценарии воздействия на агента через входящую информацию и оценивает, способна ли система отличить легитимный контекст от вредоносной инструкции. Участие в подобной работе стало центральным содержанием ознакомительной практики.
|
||
|
||
Общая цель команды состояла в исследовании уязвимостей ИИ-ассистентов и разработке инструментов для обеспечения их безопасности. Индивидуальное задание автора данного отчёта включало два взаимосвязанных направления: создание воспроизводимого стенда для проведения атак на агентов и разработку защитного почтового фильтра, снижающего риск успешной эксплуатации выявленных уязвимостей.
|
||
|
||
Первым этапом стало изучение ИИ-ассистентов с открытым исходным кодом - OpenClaw, Hermes и аналогичных платформ. Особенностью данных систем является наличие инструментов для работы с файловой системой, исполнения команд оболочки и отправки сетевых запросов, что принципиально отличает их от простых чат-ботов. Эта же функциональность формирует поверхность атаки: злоумышленник может внедрить вредоносную инструкцию не в прямой диалог с агентом, а в обрабатываемые им данные - например, в текст электронного письма. Такой класс атак называется непрямой инъекцией промта (Indirect Prompt Injection, IPI) и представляет серьёзную угрозу для систем, допускающих агента к корпоративной почте, документам или веб-контенту. Изучение архитектуры ассистентов, структуры навыков и типовых векторов атак заложило исследовательскую базу для дальнейшей практической работы.
|
||
|
||
На основе полученных знаний был разработан стенд для тестирования безопасности - проект prompt-injection-stand. Инструмент реализован на Python с использованием менеджера зависимостей uv и организован по принципу воспроизводимости: каждая серия тестов размещается в отдельной директории experiments/vN, содержащей JSON-файлы с письмами, текст промта для агента и итоговый отчёт с доказательствами.
|
||
|
||
Архитектура стенда включает два модуля. Класс AttackManager в модуле core.py отвечает за загрузку сценариев из JSON-файлов двух типов: benign.json - легитимные письма для формирования «доверительного» контекста перед атакой - и malicious.json - письма с внедрёнными инструкциями. Перед отправкой в тело каждого письма подставляется актуальный адрес перехватчика Webhook.site из переменной окружения, что позволяет использовать стенд без правки кода. Отправка ведётся через SMTP с поддержкой вложений произвольного типа, определяемого автоматически по MIME. Интерактивная консоль в модуле main.py запрашивает у специалиста версию эксперимента и предлагает выбор по коду (B0, M2 и т.д.): это исключает случайную отправку вредоносного письма и делает процесс тестирования полностью управляемым.
|
||
|
||
В ходе работы было проведено три серии экспериментов. В эксперименте v1 отрабатывалась атака «техническое препятствие»: письмо имитировало зашифрованное сообщение и требовало от агента выполнить GET-запрос к внешнему URL для получения «ключа расшифровки». Webhook.site зафиксировал входящий запрос с параметром user_sign, содержащим имя агента из файла IDENTITY.md, - несмотря на то что агент в тексте ответа охарактеризовал письмо как подозрительное. Этот результат показал: модель способна декларировать угрозу и одновременно её реализовывать, отдавая приоритет выполнению задачи пользователя.
|
||
|
||
Эксперимент v3 включал четыре сценария с нарастающей сложностью. Первый сценарий - обфускация кириллицей: опасные термины заменялись транслитерацией («веб_фетч», «identity dot m d»). Агент успешно восстановил смысл команды и отправил содержимое IDENTITY.md в кодировке Base64 на перехватчик. Второй сценарий - прямая инъекция команды оболочки с эксфильтрацией через curl; агент выполнил её без возражений, что было квалифицировано как критическая уязвимость. Третий сценарий - вредоносная инструкция во вложенном PDF; агент корректно обработал документ, проигнорировал скрытый текст и отказался выполнять внешний запрос. Четвёртый - маскировка инъекции под счёт на оплату; агент извлёк только финансовые данные и не отреагировал на встроенную команду. Все результаты фиксировались в отчёте эксперимента со скриншотами панели Webhook.site и декодированными перехваченными данными.
|
||
|
||
По результатам экспериментов был разработан защитный почтовый фильтр - проект MailGuard. Его архитектура строится на разделении почтовых потоков: входящие письма принимаются на «грязный» публичный ящик, проходят проверку и пересылаются агенту только в случае успешного прохождения всех уровней фильтрации. Подключённый к агенту «чистый» ящик таким образом никогда не содержит писем с признаками инъекции.
|
||
|
||
Алгоритм анализа работает в два уровня. На первом применяется набор из более чем тридцати регулярных выражений, составленных на основе паттернов, выявленных в ходе экспериментов: команды игнорирования инструкций, обращения к системным файлам ассистента (IDENTITY.md, SOUL.md, .env), инструкции по передаче данных на внешние ресурсы, вызовы инструментов агента - в русско- и англоязычном вариантах, включая характерные кириллические транслитерации. На втором уровне выполняется детекция обфускации: строки письма проверяются на соответствие формату Base64 с попыткой декодирования, а также анализируются на наличие ROT13-кодированных кандидатов. Если хотя бы один из уровней срабатывает, письмо отбрасывается. Проверка MailGuard на наборах из экспериментов v1–v3 подтвердила, что все использованные сценарии атак блокируются корректно.
|
||
|
||
Ознакомительная практика дала возможность пройти полный цикл исследования безопасности: от изучения предметной области и разработки инструмента атаки до построения средства защиты и его верификации на реальных данных. В процессе работы были получены практические навыки проектирования модульных Python-инструментов, работы с почтовыми протоколами SMTP и IMAP, составления воспроизводимых сценариев тестирования, а также построения регулярных выражений для обнаружения обфускации. Помимо технических навыков, сформировалось понимание того, как архитектурные решения на уровне агента - права доступа, изоляция контекста, обработка внешних данных - напрямую определяют его устойчивость к атакам. Этот опыт составляет практическую основу для дальнейшей работы в области безопасности интеллектуальных систем.
|