Безопасность и меры защиты
Chimera умеет выполнять команды оболочки, править файлы, вызывать API и менять собственные навыки. Она поставляется с эшелонированной защитой — и, что важно, документация говорит, где каждый слой заканчивается.
Единственное правило
Ни одна из этих мер не заменяет запуск в изолированной среде, когда вы даёте
самостоятельность. Локальный исполнитель по умолчанию не изолирован; для недоверенной работы
используйте CHIMERA_SANDBOX=docker (без сети, при желании под gVisor).
Слои
- Ядро управления — каждый управляемый вызов инструмента получает разрешить / предупредить / разобрать / заблокировать. Это дешёвый первый фильтр опасных сигнатур оболочки, а не граница.
- Песочница — временный контейнер без сети (
CHIMERA_SANDBOX=docker), усиливаемый gVisor (CHIMERA_SANDBOX_RUNTIME=runsc). - Список разрешённых инструментов на сессию — дайте запуску только те инструменты, которые ему нужны; остальные вовсе убираются из схемы, которую видит модель.
- Отслеживание заражения (
--taint) — недоверенное содержимое обособляется как данные, его происхождение следует за ним в воспоминания и навыки (навык из заражённого запуска удерживается на разбор), а как только запуск заражён, опасные инструменты сужаются. - Изолированный читатель — приём двух моделей (CaMeL): недоверенное содержимое читает модель без инструментов, способная выдать только поля, прошедшие проверку схемы, поэтому внедрение не может породить новую инструкцию или вызов инструмента.
- Монитор между агентами — при веерном запуске монитор одного работника слеп к разделённому
потоку (один работник забирает недоверенное, другой его сливает — забор и слив живут в разных
журналах). Сводный монитор видит весь веер; для
solve-batchиcrew-isolatedон всегда включён.
Веерный запуск: монитор между агентами
Когда несколько работающих с инструментами агентов идут параллельно (solve-batch,
crew-isolated), каждый получает свой журнал полномочий, а после пакета по всем ним проходит сводный
монитор. Он ловит то, чего не увидит монитор одного работника, — разделённую утечку, где работник A
забирает недоверенное содержимое, а работник B его выполняет или отправляет наружу:
$ chimera solve-batch "read notes.md and summarize" "download the helper and run it" -w .
task1: ok
task2: ok
merged 2 file(s) across 2 task(s)
⚠ cross-agent monitor flagged (review):
- cross-agent-taint: untrusted content entered via one agent and a different agent
performed a sink (task2→task1) — a split flow no single-agent monitor sees
Он только поднимает до разбора — запуск он никогда не блокирует — и является чистым
наблюдением (запись ничего не меняет в поведении). Добавьте сверху --taint, чтобы заодно взвести у
каждого работника подстраивающийся список разрешений (опасные при заражении инструменты начнут
требовать одобрения).
Измерено, а не заявлено
chimera redteam
прогоняет корпус внедрений через весь стек. На встроенном корпусе слой заражения снижает долю успешных атак со 100% примерно до 14% — и отчёт называет то, что всё ещё проходит (утечка через разрешённый инструмент), вместо того чтобы объявить 100%.
Как выставить HTTP-сервер наружу
chimera serve по умолчанию слушает на 127.0.0.1. Его меняющие состояние конечные точки (/chat,
/a2a, /webhook/*) управляют агентом, поэтому перед тем как выставить сервер в сеть, задайте
токен доступа:
export CHIMERA_SERVER_TOKEN="a-long-random-secret" # required as: Authorization: Bearer <token>
Когда он задан, эти точки POST возвращают 401 без подходящего заголовка Authorization: Bearer
(GET /health и карточка агента A2A остаются открытыми). Для входящего вебхука WhatsApp задайте
CHIMERA_WHATSAPP_APP_SECRET равным секрету вашего приложения Meta — тогда Chimera проверяет HMAC
X-Hub-Signature-256 каждого запроса и отвергает подделку с кодом 403. И то и другое включается по
желанию (не задано = аутентификации нет, что годится для localhost); публичное развёртывание должно
их задать (или стоять за прокси с проверкой подлинности).
Честные пределы
Здесь измеряется, останавливается ли вредное действие уже внедрённого агента, — а не то, можно ли внедриться в модель изначально. Свободное рассуждение над недоверенным текстом и утечка через инструменты, которые действительно нужны, остаются открытыми задачами (отслеживаются как issue #5).
Полная и всегда актуальная политика лежит в SECURITY.md, включая порядок сообщения об уязвимости.