Перейти к содержимому

Безопасность и меры защиты

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, включая порядок сообщения об уязвимости.

Изменить эту страницу на GitHub