Запись архива

Bastiontrace: инструмент криминалистики для AI-агентов, подвергшихся промпт-инъекции

Bastiontrace анализирует JSONL-трейсы вызовов инструментов AI-агента, находит следы промпт-инъекции, определяет точку входа, заражённые вызовы и конечное запрещённое действие. Инструмент не требует LLM или облака, работает как CI-гейт.

Интерфейс анализа трейса AI-агента с обнаруженной промпт-инъекцией
Интерфейс анализа трейса AI-агента с обнаруженной промпт-инъекцией
Journalists Protest against rising violence during march in Mexi | by Knight Foundation | openverse | by-sa

На Hacker News появился анонс Bastiontrace — инструмента для криминалистического анализа AI-агентов, подвергшихся промпт-инъекции. Проект опубликован на GitHub под лицензией MIT и является частью трилогии Bastion, включающей также средства защиты (bastionprobe) и общую базу сигнатур (bastioncorpus).

Как это работает

Bastiontrace анализирует JSONL-трейсы последовательных вызовов инструментов (tool calls) AI-агента. На вход подаётся файл с логом взаимодействия: сообщения пользователя, результаты выполнения инструментов и сами вызовы инструментов. Инструмент ищет в этих данных канареечные токены — маркеры, оставленные системой защиты при симуляции атаки.

При обнаружении инъекции Bastiontrace определяет три ключевых элемента: точку входа (LANDED) — где именно в выводе инструмента появился вредоносный текст; точку приземления (landing) — какой запрещённый инструмент был вызван; и путь распространения — цепочку заражённых вызовов от точки входа до действия.

Вердикты и форматы вывода

Инструмент выдаёт один из трёх вердиктов: LANDED — инъекция привела к запрещённому действию; ATTEMPTED — инъекция обнаружена, но до действия не дошла; CLEAN — чисто. Выходной код возврата ненулевой при обнаружении LANDED, что позволяет использовать Bastiontrace как CI-гейт.

Поддерживаются два формата вывода: человекочитаемый текстовый (по умолчанию) и машинный JSON. Каждый объект JSON содержит заголовок трейса и упорядоченные события.

Интеграция и практическое применение

Ключевая особенность — Bastiontrace не требует LLM или облачных вычислений. Единственная зависимость — bastioncorpus, разделяемая библиотека сигнатур инъекций. Это делает инструмент лёгким и пригодным для прогона в пайплайнах CI/CD.

Bastiontrace может импортировать результаты работы bastionprobe через метод from_bastionprobe(), что позволяет переиспользовать данные красно-командных учений для криминалистики без дополнительной склейки.

Функция harden преобразует найденные инъекции в конфигурацию защиты: policy.yaml (запрет на инструменты, до которых добралась инъекция) и injections.jsonl (строки атак в формате семантического детектора bastionprobe). Этот формат совместим с shield-системой трилогии.

Ограничения

Bastiontrace — это инструмент постфактум-анализа. Он не предотвращает атаки, а только помогает расследовать уже произошедшие инциденты. Эффективность обнаружения полностью зависит от качества канареечных токенов в bastioncorpus. Инструмент не анализирует неструктурированные диалоги — только JSONL-трейсы с явными tool_call/tool_result событиями. Поддержка других форматов трейсов не заявлена.

Источники

Репозиторий Bastiontrace на GitHub: https://github.com/Rinkia/bastiontrace

Обсуждение на Hacker News: https://news.ycombinator.com/item?id=49658565