Перейти к основному содержанию

openclaw security

Инструменты безопасности (аудит + необязательные исправления). Связано:

Аудит

openclaw security audit
openclaw security audit --deep
openclaw security audit --deep --password <password>
openclaw security audit --deep --token <token>
openclaw security audit --fix
openclaw security audit --json
Обычный security audit остается на холодном пути конфигурации/файловой системы/только чтения. По умолчанию он не обнаруживает runtime-сборщики безопасности Plugin, поэтому плановые аудиты не загружают runtime каждого установленного Plugin. Используйте --deep, чтобы включить best-effort live Gateway-пробы и сборщики аудита безопасности, принадлежащие Plugin; явные внутренние вызывающие стороны также могут включать эти сборщики, принадлежащие Plugin, когда у них уже есть подходящая runtime-область. Аудит предупреждает, когда несколько отправителей личных сообщений используют основной сеанс, и рекомендует безопасный режим личных сообщений: session.dmScope="per-channel-peer" (или per-account-channel-peer для каналов с несколькими учетными записями) для общих входящих. Это предназначено для усиления защиты совместных/общих входящих. Один Gateway, общий для взаимно недоверенных/враждебных операторов, не является рекомендуемой конфигурацией; разделяйте границы доверия отдельными Gateway (или отдельными пользователями/хостами ОС). Он также выдает security.trust_model.multi_user_heuristic, когда конфигурация указывает на вероятный входящий трафик от нескольких пользователей (например, открытая политика личных сообщений/групп, настроенные групповые цели или wildcard-правила отправителей), и напоминает, что OpenClaw по умолчанию использует модель доверия персонального ассистента. Для намеренных конфигураций с несколькими пользователями рекомендации аудита: изолировать все сеансы в песочнице, ограничивать доступ к файловой системе областью рабочей области и не хранить личные/приватные идентификаторы или учетные данные в этом runtime. Он также предупреждает, когда небольшие модели (<=300B) используются без песочницы и с включенными веб-/браузерными инструментами. Для входящего Webhook-трафика запуск записывает нефатальное предупреждение безопасности, а аудит отмечает повторное использование hooks.token активных значений аутентификации Gateway с общим секретом, включая gateway.auth.token / OPENCLAW_GATEWAY_TOKEN и gateway.auth.password / OPENCLAW_GATEWAY_PASSWORD. Он также предупреждает, когда:
  • hooks.token короткий
  • hooks.path="/"
  • hooks.defaultSessionKey не задан
  • hooks.allowedAgentIds не ограничен
  • переопределения sessionKey в запросах включены
  • переопределения включены без hooks.allowedSessionKeyPrefixes
Если аутентификация Gateway по паролю передается только при запуске, передайте то же значение в openclaw security audit --auth password --password <password>, чтобы аудит мог проверить его относительно hooks.token. Запустите openclaw doctor --fix, чтобы сменить сохраненный повторно используемый hooks.token, затем обновите внешних отправителей хуков, чтобы они использовали новый токен хука. Он также предупреждает, когда настройки Docker для песочницы настроены при выключенном режиме песочницы, когда gateway.nodes.denyCommands использует неэффективные шаблоноподобные/неизвестные записи (только точное сопоставление имени команды узла, а не фильтрация shell-текста), когда gateway.nodes.allowCommands явно включает опасные команды узлов, когда глобальный tools.profile="minimal" переопределяется профилями инструментов агента, когда инструменты записи/редактирования отключены, но exec все еще доступен без ограничивающей границы файловой системы песочницы, когда открытые личные сообщения или группы предоставляют доступ к runtime-/файловым инструментам без защит песочницы/рабочей области, и когда инструменты установленных Plugin могут быть доступны при разрешительной политике инструментов. Он также отмечает gateway.allowRealIpFallback=true (риск подмены заголовков при неправильной настройке прокси) и discovery.mdns.mode="full" (утечка метаданных через записи mDNS TXT). Он также предупреждает, когда браузер песочницы использует сеть Docker bridge без sandbox.browser.cdpSourceRange. Он также отмечает опасные сетевые режимы Docker для песочницы (включая host и присоединения к пространству имен container:*). Он также предупреждает, когда у существующих Docker-контейнеров браузера песочницы отсутствуют или устарели hash-метки (например, контейнеры до миграции без openclaw.browserConfigEpoch), и рекомендует openclaw sandbox recreate --browser --all. Он также предупреждает, когда npm-записи установки Plugin/хуков не закреплены, не имеют метаданных целостности или отличаются от текущих установленных версий пакетов. Он предупреждает, когда allowlist каналов опираются на изменяемые имена/адреса электронной почты/теги вместо стабильных идентификаторов (Discord, Slack, Google Chat, Microsoft Teams, Mattermost, области IRC, где применимо). Он предупреждает, когда gateway.auth.mode="none" оставляет HTTP API Gateway доступными без общего секрета (/tools/invoke плюс любой включенный endpoint /v1/*). Настройки с префиксом dangerous/dangerously являются явными аварийными переопределениями оператора; включение одной из них само по себе не является отчетом об уязвимости безопасности. Полный перечень опасных параметров см. в разделе “Сводка небезопасных или опасных флагов” в Безопасность. Намеренные постоянные находки можно принять с помощью security.audit.suppressions. Каждое подавление сопоставляется с точным checkId и может быть сужено регистронезависимыми подстроками titleIncludes и/или detailIncludes:
{
  "security": {
    "audit": {
      "suppressions": [
        {
          "checkId": "plugins.tools_reachable_permissive_policy",
          "detailIncludes": "Enabled extension plugins: gbrain",
          "reason": "trusted local operator plugin"
        }
      ]
    }
  }
}
Подавленные находки удаляются из активного списка summary и findings. Вывод JSON сохраняет их в suppressedFindings для возможности аудита. Когда подавления настроены, активный вывод также сохраняет неудаляемую информационную находку security.audit.suppressions.active, чтобы читатели могли понять, что аудит был отфильтрован. Опасные флаги конфигурации выдаются по одному флагу на находку, поэтому принятие одного опасного флага не скрывает другие включенные флаги, которые используют тот же config.insecure_or_dangerous_flags checkId. Поскольку подавления могут скрывать постоянный риск, их добавление или удаление через shell-команды агентского запуска требует одобрения exec, если только exec уже не работает с security="full" и ask="off" для доверенной локальной автоматизации. Поведение SecretRef:
  • security audit разрешает поддерживаемые SecretRefs в режиме только чтения для целевых путей.
  • Если SecretRef недоступен в текущем пути команды, аудит продолжается и сообщает secretDiagnostics (вместо аварийного завершения).
  • --token и --password переопределяют аутентификацию deep-проб только для этого вызова команды; они не переписывают конфигурацию или сопоставления SecretRef.

Вывод JSON

Используйте --json для проверок CI/политик:
openclaw security audit --json | jq '.summary'
openclaw security audit --deep --json | jq '.findings[] | select(.severity=="critical") | .checkId'
Если --fix и --json объединены, вывод включает и действия исправления, и итоговый отчет:
openclaw security audit --fix --json | jq '{fix: .fix.ok, summary: .report.summary}'

Что изменяет --fix

--fix применяет безопасные, детерминированные исправления:
  • переключает распространенный groupPolicy="open" на groupPolicy="allowlist" (включая варианты для учетных записей в поддерживаемых каналах)
  • когда групповая политика WhatsApp переключается на allowlist, заполняет groupAllowFrom из сохраненного файла allowFrom, если этот список существует, а конфигурация еще не определяет allowFrom
  • меняет logging.redactSensitive с "off" на "tools"
  • ужесточает разрешения для состояния/конфигурации и распространенных чувствительных файлов (credentials/*.json, auth-profiles.json, sessions.json, сеансовые *.jsonl)
  • также ужесточает разрешения для include-файлов конфигурации, на которые ссылается openclaw.json
  • использует chmod на POSIX-хостах и сбросы icacls в Windows
--fix не:
  • меняет токены/пароли/API-ключи
  • отключает инструменты (gateway, cron, exec и т. д.)
  • изменяет выбор привязки/аутентификации/сетевой экспозиции Gateway
  • удаляет или переписывает plugins/skills

Связано