Перейти до основного вмісту

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, щоб додати live-проби Gateway за принципом найкращих зусиль і збирачі аудиту безпеки, що належать Plugin; явні внутрішні викликачі також можуть увімкнути ці збирачі, що належать Plugin, коли вже мають відповідну runtime-область. Аудит попереджає, коли кілька відправників DM спільно використовують основний сеанс, і рекомендує безпечний режим DM: session.dmScope="per-channel-peer" (або per-account-channel-peer для каналів із кількома обліковими записами) для спільних вхідних скриньок. Це призначено для посилення захисту кооперативних/спільних вхідних скриньок. Один Gateway, спільний для операторів, які взаємно не довіряють один одному або є ворожими, не є рекомендованою конфігурацією; розділяйте межі довіри окремими gateway (або окремими користувачами/хостами ОС). Він також виводить security.trust_model.multi_user_heuristic, коли конфігурація вказує на ймовірний вхідний трафік від кількох спільних користувачів (наприклад, відкрита політика DM/груп, налаштовані групові цілі або правила відправників із wildcard), і нагадує, що OpenClaw за замовчуванням використовує модель довіри персонального асистента. Для навмисних конфігурацій зі спільними користувачами рекомендація аудиту полягає в тому, щоб ізолювати всі сеанси в sandbox, обмежити доступ до файлової системи робочою областю і не розміщувати персональні/приватні ідентичності або облікові дані в цьому runtime. Він також попереджає, коли малі моделі (<=300B) використовуються без sandboxing і з увімкненими web/browser-інструментами. Для вхідного 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, а потім оновіть зовнішніх відправників hook для використання нового токена hook. Він також попереджає, коли налаштування Docker для sandbox сконфігуровано, але режим sandbox вимкнено; коли gateway.nodes.denyCommands використовує неефективні записи, схожі на шаблони, або невідомі записи (лише точний збіг імен команд node, а не фільтрація shell-тексту); коли gateway.nodes.allowCommands явно вмикає небезпечні команди node; коли глобальний tools.profile="minimal" перевизначається профілями інструментів agent; коли інструменти запису/редагування вимкнені, але exec все ще доступний без обмежувальної межі файлової системи sandbox; коли відкриті DM або групи відкривають runtime/інструменти файлової системи без sandbox/захисту робочої області; і коли інструменти встановленого Plugin можуть бути доступні за дозвільної політики інструментів. Він також позначає gateway.allowRealIpFallback=true (ризик підробки заголовків, якщо проксі налаштовані неправильно) і discovery.mdns.mode="full" (витік метаданих через mDNS TXT-записи). Він також попереджає, коли браузер sandbox використовує Docker-мережу bridge без sandbox.browser.cdpSourceRange. Він також позначає небезпечні режими мережі Docker для sandbox (зокрема host і приєднання до namespace container:*). Він також попереджає, коли наявні Docker-контейнери браузера sandbox мають відсутні/застарілі hash-мітки (наприклад, контейнери до міграції без openclaw.browserConfigEpoch) і рекомендує openclaw sandbox recreate --browser --all. Він також попереджає, коли записи встановлення Plugin/hook на основі npm не зафіксовані до версії, не мають метаданих цілісності або відрізняються від поточних встановлених версій пакетів. Він попереджає, коли allowlist каналів покладаються на змінювані імена/електронні адреси/теги замість стабільних ID (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-команди agent-run вимагає підтвердження exec, якщо exec уже не працює з security="full" і ask="off" для довіреної локальної автоматизації. Поведінка SecretRef:
  • security audit розв’язує підтримувані SecretRef у режимі лише читання для своїх цільових шляхів.
  • Якщо 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"
  • посилює дозволи для state/config і типових чутливих файлів (credentials/*.json, auth-profiles.json, sessions.json, session *.jsonl)
  • також посилює дозволи для файлів include конфігурації, на які посилається openclaw.json
  • використовує chmod на POSIX-хостах і скидання icacls у Windows
--fix не:
  • ротувати токени/паролі/API-ключі
  • вимикати інструменти (gateway, cron, exec тощо)
  • змінювати вибір прив’язки/auth/мережевого доступу gateway
  • видаляти або перезаписувати plugins/skills

Пов’язано