
На 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 событиями. Поддержка других форматов трейсов не заявлена.
Источники