Безопасность
[!WARNING] Модель доверия персонального помощника: данное руководство предполагает одну доверенную границу оператора на шлюз (модель одного пользователя/персонального помощника). OpenClaw не является враждебной границей безопасности мультитенантности для нескольких конфликтующих пользователей, совместно использующих одного агента/шлюз. Если вам нужна работа со смешанным доверием или конфликтующими пользователями, разделите границы доверия (отдельный шлюз + учетные данные, в идеале отдельные пользователи/хосты ОС).
Сначала область: модель безопасности персонального помощника
Руководство по безопасности OpenClaw предполагает развертывание персонального помощника: одна доверенная граница оператора, потенциально много агентов.
- Поддерживаемая модель безопасности: один пользователь/граница доверия на шлюз (предпочтительно один пользователь/хост/VPS ОС на границу).
- Не является поддерживаемой границей безопасности: один общий шлюз/агент, используемый взаимно недоверенными или конфликтующими пользователями.
- Если требуется изоляция конфликтующих пользователей, разделите по границе доверия (отдельный шлюз + учетные данные и, в идеале, отдельные пользователи/хосты ОС).
- Если несколько недоверенных пользователей могут отправлять сообщения одному агенту с инструментами, считайте, что они разделяют одно и то же делегированное право на использование инструментов для этого агента.
На этой странице объясняется укрепление в рамках этой модели. Она не претендует на враждебную изоляцию мультитенантности на одном общем шлюзе.
Быстрая проверка: аудит безопасности openclaw
См. также: Формальная верификация (Модели безопасности) Запускайте это регулярно (особенно после изменения конфигурации или открытия сетевых поверхностей):
openclaw security audit
openclaw security audit --deep
openclaw security audit --fix
openclaw security audit --json
Он отмечает распространенные ошибки (раскрытие аутентификации шлюза, раскрытие управления браузером, расширенные списки разрешений, права файловой системы). OpenClaw — это и продукт, и эксперимент: вы подключаете поведение передовых моделей к реальным поверхностям обмена сообщениями и реальным инструментам. Не существует «идеально безопасной» настройки. Цель — быть осознанным в отношении:
- кто может общаться с вашим ботом
- где боту разрешено действовать
- к чему бот может получить доступ
Начните с минимального доступа, который все еще работает, а затем расширяйте его по мере роста уверенности.
Предположение о развертывании (важно)
OpenClaw предполагает, что хост и граница конфигурации являются доверенными:
- Если кто-то может изменить состояние/конфигурацию хоста шлюза (
~/.openclaw, включаяopenclaw.json), считайте его доверенным оператором. - Запуск одного шлюза для нескольких взаимно недоверенных/конфликтующих операторов не является рекомендуемой настройкой.
- Для команд со смешанным доверием разделите границы доверия с помощью отдельных шлюзов (или, как минимум, отдельных пользователей/хостов ОС).
- OpenClaw может запускать несколько экземпляров шлюза на одной машине, но рекомендуемые операции отдают предпочтение чистому разделению границ доверия.
- Рекомендуемая настройка по умолчанию: один пользователь на машину/хост (или VPS), один шлюз для этого пользователя и один или несколько агентов в этом шлюзе.
- Если несколько пользователей хотят использовать OpenClaw, используйте один VPS/хост на пользователя.
Практическое следствие (граница доверия оператора)
Внутри одного экземпляра шлюза аутентифицированный доступ оператора является доверенной ролью плоскости управления, а не ролью арендатора на пользователя.
- Операторы с доступом на чтение/к плоскости управления могут по замыслу просматривать метаданные/историю сеансов шлюза.
- Идентификаторы сеансов (
sessionKey, ID сеансов, метки) — это селекторы маршрутизации, а не токены авторизации. - Пример: ожидание изоляции на оператора для таких методов, как
sessions.list,sessions.previewилиchat.history, выходит за рамки этой модели. - Если вам нужна изоляция конфликтующих пользователей, запускайте отдельные шлюзы на границу доверия.
- Несколько шлюзов на одной машине технически возможны, но не являются рекомендуемой базой для изоляции нескольких пользователей.
Модель персонального помощника (не мультитенантная шина)
OpenClaw разработан как модель безопасности персонального помощника: одна доверенная граница оператора, потенциально много агентов.
- Если несколько человек могут отправлять сообщения одному агенту с инструментами, каждый из них может управлять одним и тем же набором разрешений.
- Изоляция сеансов/памяти на пользователя помогает приватности, но не превращает общего агента в авторизацию хоста на пользователя.
- Если пользователи могут быть конфликтующими по отношению друг к другу, запускайте отдельные шлюзы (или отдельных пользователей/хостов ОС) на границу доверия.
Общая рабочая область Slack: реальный риск
Если «каждый в Slack может писать боту», основной риск — это делегированное право на использование инструментов:
- любой разрешенный отправитель может инициировать вызовы инструментов (
exec, браузер, сетевые/файловые инструменты) в рамках политики агента; - инъекция промпта/контента от одного отправителя может вызвать действия, влияющие на общее состояние, устройства или выводы;
- если у одного общего агента есть конфиденциальные учетные данные/файлы, любой разрешенный отправитель потенциально может управлять утечкой через использование инструментов.
Используйте отдельных агентов/шлюзы с минимальными инструментами для рабочих процессов команды; храните агентов с личными данными приватными.
Агент, общий для компании: допустимый шаблон
Это допустимо, когда все, использующие этого агента, находятся в одной границе доверия (например, одна команда компании) и агент строго ограничен бизнес-сферой.
- запустите его на выделенной машине/ВМ/контейнере;
- используйте выделенного пользователя ОС + выделенный браузер/профиль/учетные записи для этой среды выполнения;
- не входите в этой среде выполнения в личные учетные записи Apple/Google или личные профили менеджера паролей/браузера.
Если вы смешиваете личные и корпоративные идентификаторы в одной среде выполнения, вы разрушаете разделение и увеличиваете риск раскрытия личных данных.
Концепция доверия шлюза и узла
Рассматривайте шлюз и узел как один домен доверия оператора с разными ролями:
- Шлюз — это плоскость управления и поверхность политики (
gateway.auth, политика инструментов, маршрутизация). - Узел — это поверхность удаленного выполнения, связанная с этим шлюзом (команды, действия с устройствами, возможности локального хоста).
- Вызывающая сторона, аутентифицированная в шлюзе, считается доверенной в рамках шлюза. После сопряжения действия узла являются доверенными действиями оператора на этом узле.
sessionKey— это селектор маршрутизации/контекста, а не авторизация на пользователя.- Одобрения выполнения (список разрешений + запрос) — это ограничительные меры для намерений оператора, а не враждебная изоляция мультитенантности.
Если вам нужна изоляция конфликтующих пользователей, разделите границы доверия по пользователю/хосту ОС и запускайте отдельные шлюзы.
Матрица границ доверия
Используйте это как быструю модель при оценке рисков:
| Граница или контроль | Что это означает | Распространенное неверное толкование |
|---|---|---|
gateway.auth (токен/пароль/аутентификация устройства) | Аутентифицирует вызывающие стороны для API шлюза | «Нужны подписи на каждом кадре для каждого сообщения, чтобы быть безопасным» |
sessionKey | Ключ маршрутизации для выбора контекста/сеанса | «Ключ сеанса — это граница авторизации пользователя» |
| Ограничительные меры для промпта/контента | Снижают риск злоупотребления моделью | «Одна только инъекция промпта доказывает обход аутентификации» |
canvas.eval / evaluate в браузере | Преднамеренная возможность оператора при включении | «Любой примитив eval JS автоматически является уязвимостью в этой модели доверия» |
Локальная TUI ! shell | Явное локальное выполнение, инициированное оператором | «Удобная локальная команда shell — это удаленная инъекция» |
| Сопряжение узла и команды узла | Удаленное выполнение на уровне оператора на сопряженных устройствах | «Удаленное управление устройством по умолчанию следует рассматривать как доступ недоверенного пользователя» |
Не уязвимости по замыслу
Эти шаблоны часто сообщаются и обычно закрываются без действий, если не показан реальный обход границы:
- Цепочки, основанные только на инъекции промпта, без обхода политики/аутентификации/изоляции.
- Утверждения, предполагающие враждебную мультитенантную работу на одном общем хосте/конфигурации.
- Утверждения, классифицирующие нормальный доступ оператора на чтение (например,
sessions.list/sessions.preview/chat.history) как IDOR в настройке общего шлюза. - Результаты, связанные с развертыванием только на localhost (например, HSTS на шлюзе только для loopback).
- Результаты, связанные с подписью входящих веб-хуков Discord для входящих путей, которых нет в этом репозитории.
- Результаты «Отсутствует авторизация на пользователя», которые рассматривают
sessionKeyкак токен аутентификации.
Контрольный список для исследователей перед отправкой
Перед открытием GHSA проверьте все это:
- Воспроизведение все еще работает на последней ветке
mainили последнем релизе. - Отчет включает точный путь кода (
файл, функция, диапазон строк) и протестированную версию/коммит. - Воздействие пересекает задокументированную границу доверия (не только инъекцию промпта).
- Утверждение не указано в Вне области действия.
- Существующие рекомендации были проверены на дубликаты (используйте канонический GHSA, когда применимо).
- Предположения о развертывании явные (loopback/локальный против открытого, доверенные против недоверенных операторов).
Укрепленная базовая настройка за 60 секунд
Используйте эту базовую настройку сначала, а затем выборочно повторно включайте инструменты для доверенного агента:
{
gateway: {
mode: "local",
bind: "loopback",
auth: { mode: "token", token: "replace-with-long-random-token" },
},
session: {
dmScope: "per-channel-peer",
},
tools: {
profile: "messaging",
deny: ["group:automation", "group:runtime", "group:fs", "sessions_spawn", "sessions_send"],
fs: { workspaceOnly: true },
exec: { security: "deny", ask: "always" },
elevated: { enabled: false },
},
channels: {
whatsapp: { dmPolicy: "pairing", groups: { "*": { requireMention: true } } },
},
}
Это сохраняет шлюз только локальным, изолирует личные сообщения и по умолчанию отключает инструменты плоскости управления/среды выполнения.
Быстрое правило для общего входящего ящика
Если более одного человека могут отправлять личные сообщения вашему боту:
- Установите
session.dmScope: "per-channel-peer"(или"per-account-channel-peer"для каналов с несколькими учетными записями). - Сохраняйте
dmPolicy: "pairing"или строгие списки разрешений. - Никогда не сочетайте общие личные сообщения с широким доступом к инструментам.
- Это укрепляет совместные/общие входящие ящики, но не предназначено для враждебной изоляции совместных арендаторов, когда пользователи имеют общий доступ на запись к хосту/конфигурации.
Что проверяет аудит (высокоуровнево)
- Входящий доступ (политики личных сообщений, политики групп, списки разрешений): могут ли незнакомцы активировать бота?
- Радиус поражения инструментов (расширенные инструменты + открытые комнаты): может ли инъекция промпта превратиться в действия shell/файлов/сети?
- Сетевое воздействие (привязка/аутентификация шлюза, Tailscale Serve/Funnel, слабые/короткие токены аутентификации).
- Раскрытие управления браузером (удаленные узлы, порты ретрансляции, удаленные конечные точки CDP).
- Гигиена локального диска (права доступа, символьные ссылки, включаемые конфигурации, пути «синхронизированных папок»).
- Плагины (расширения существуют без явного списка разрешений).
- Дрейф/неправильная конфигурация политики (настроены параметры изоляции docker, но режим изоляции выключен; неэффективные шаблоны
gateway.nodes.denyCommands, потому что сопоставление происходит только по точному имени команды (например,system.run) и не проверяет текст shell; опасные записиgateway.nodes.allowCommands; глобальныйtools.profile="minimal"переопределен профилями на агента; инструменты плагинов расширений доступны при разрешительной политике инструментов). - Дрейф ожиданий среды выполнения (например,
tools.exec.host="sandbox"при выключенном режиме изоляции, что запускается непосредственно на хосте шлюза). - Гигиена моделей (предупреждение, когда настроенные модели выглядят устаревшими; не жесткая блокировка).
Если вы запустите --deep, OpenClaw также пытается выполнить проверку живого шлюза по возможности.
Карта хранения учетных данных
Используйте это при аудите доступа или принятии решения о резервном копировании:
- WhatsApp:
~/.openclaw/credentials/whatsapp/<accountId>/creds.json - Токен бота Telegram: конфигурация/env или
channels.telegram.tokenFile - Токен бота Discord: конфигурация/env или SecretRef (провайдеры env/файл/exec)
- Токены Slack: конфигурация/env (
channels.slack.*) - Списки разрешений для сопряжения:
~/.openclaw/credentials/<channel>-allowFrom.json(учетная запись по умолчанию)~/.openclaw/credentials/<channel>-<accountId>-allowFrom.json(нестандартные учетные записи)
- Профили аутентификации моделей:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - Полезная нагрузка секретов на основе файлов (опционально):
~/.openclaw/secrets.json - Устаревший импорт OAuth:
~/.openclaw/credentials/oauth.json
Контрольный список аудита безопасности
Когда аудит выводит результаты, рассматривайте это как порядок приоритетов:
- Все, что «открыто» + инструменты включены: сначала заблокируйте личные сообщения/группы (сопряжение/списки разрешений), затем ужесточите политику инструментов/изоляцию.
- Публичное сетевое воздействие (привязка к LAN, Funnel, отсутствие аутентификации): исправьте немедленно.
- Удаленное раскрытие управления браузером: рассматривайте это как доступ оператора (только tailnet, намеренно сопрягайте узлы, избегайте публичного воздействия).
- Права доступа: убедитесь, что состояние/конфигурация/учетные данные/аутентификация не доступны для чтения группой/всем миром.
- Плагины/расширения: загружайте только то, чему явно доверяете.
- Выбор модели: предпочитайте современные, защищенные инструкциями модели для любого бота с инструментами.
Глоссарий аудита безопасности
Высокозначимые значения checkId, которые вы, скорее всего, увидите в реальных развертываниях (не исчерпывающе):
checkId | Серьезность | Почему это важно | Основной ключ/путь для исправления | Авто-исправление |
|---|---|---|---|---|
fs.state_dir.perms_world_writable | критическая | Другие пользователи/процессы могут изменять полное состояние OpenClaw | права файловой системы на ~/.openclaw | да |
fs.config.perms_writable | критическая | Другие могут изменять аутентификацию/политику инструментов/конфигурацию | права файловой системы на ~/.openclaw/openclaw.json | да |
fs.config.perms_world_readable | критическая | Конфигурация может раскрывать токены/настройки | права файловой системы на файл конфигурации | да |
gateway.bind_no_auth | критическая | Удаленная привязка без общего секрета | gateway.bind, gateway.auth.* | нет |
gateway.loopback_no_auth | критическая | Проксированный обратный loopback может стать неаутентифицированным | gateway.auth.*, настройка прокси | нет |
gateway.http.no_auth | предупреждение/критическая | HTTP API шлюза доступны при auth.mode="none" | gateway.auth.mode, gateway.http.endpoints.* | нет |
gateway.tools_invoke_http.dangerous_allow | предупреждение/критическая | Повторно включает опасные инструменты через HTTP API | gateway.tools.allow | нет |
gateway.nodes.allow_commands_dangerous | предупреждение/критическая | Включает команды узла с высоким воздействием (камера/экран/контакты/календарь/SMS) | gateway.nodes.allowCommands | нет |
gateway.tailscale_funnel | критическая | Воздействие на публичный интернет | gateway.tailscale.mode | нет |
gateway.control_ui.allowed_origins_required | критическая | Не-loopback Control UI без явного списка разрешений источников браузера | gateway.controlUi.allowedOrigins | нет |
gateway.control_ui.host_header_origin_fallback | предупреждение/критическая | Включает резервный источник на основе заголовка Host (понижение уровня защиты от подмены DNS) | gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback | нет |
gateway.control_ui.insecure_auth | предупреждение | Включен переключатель совместимости небезопасной аутентификации | gateway.controlUi.allowInsecureAuth | нет |
gateway.control_ui.device_auth_disabled | критическая | Отключает проверку идентификатора устройства | gateway.controlUi.dangerouslyDisableDeviceAuth | нет |
gateway.real_ip_fallback_enabled | предупреждение/критическая | Доверие к резервному варианту X-Real-IP может позволить подмену исходного IP через неправильную конфигурацию прокси | gateway.allowRealIpFallback, gateway.trustedProxies | нет |
discovery.mdns_full_mode | предупреждение/критическая | Полный режим mDNS рекламирует метаданные cliPath/sshPort в локальной сети | discovery.mdns.mode, gateway.bind | нет |
config.insecure_or_dangerous_flags | предупреждение | Любые небезопасные/опасные флаги отладки включены | несколько ключей (см. детали результата) | нет |
hooks.token_too_short | предупреждение | Упрощенный перебор на входящих хуках | hooks.token | нет |
hooks.request_session_key_enabled | предупреждение/критическая | Внешняя вызывающая сторона может выбрать sessionKey | hooks.allowRequestSessionKey | нет |
hooks.request_session_key_prefixes_missing | предупреждение/критическая | Нет ограничений на формы внешних ключей сеанса | hooks.allowedSessionKeyPrefixes | нет |
logging.redact_off | предупреждение | Конфиденциальные значения попадают в логи/статус | logging.redactSensitive | да |
sandbox.docker_config_mode_off | предупреждение | Конфигурация изоляции Docker присутствует, но неактивна | agents.*.sandbox.mode | нет |
sandbox.dangerous_network_mode | критическая | Сеть изоляции Docker использует режим пространства имен host или container:* | agents.*.sandbox.docker.network | нет |
tools.exec.host_sandbox_no_sandbox_defaults | предупреждение | exec host=sandbox разрешается в выполнение на хосте, когда изоляция выключена | tools.exec.host, agents.defaults.sandbox.mode | нет |
tools.exec.host_sandbox_no_sandbox_agents | предупреждение | exec host=sandbox на агента разрешается в выполнение на хосте, когда изоляция выключена | agents.list[].tools.exec.host, agents.list[].sandbox.mode | нет |
tools.exec.safe_bins_interpreter_unprofiled | предупреждение | Интерпретаторы/бинарные файлы среды выполнения в safeBins без явных профилей расширяют риск выполнения | tools.exec.safeBins, tools.exec.safeBinProfiles, agents.list[].tools.exec.* | нет |
skills.workspace.symlink_escape | предупреждение | skills/**/SKILL.md рабочей области разрешается вне корня рабочей области (дрейф цепочки символьных ссылок) | состояние файловой системы skills/** рабочей области | нет |
security.exposure.open_groups_with_elevated | критическая | Открытые группы + расширенные инструменты создают пути инъекции промпта с высоким воздействием | channels.*.groupPolicy, tools.elevated.* | нет |
security.exposure.open_groups_with_runtime_or_fs | критическая/предупреждение | Открытые группы могут получить доступ к командным/файловым инструментам без защиты изоляции/рабочей области | channels.*.groupPolicy, tools.profile/deny, tools.fs.workspaceOnly, agents.*.sandbox.mode | нет |
security.trust_model.multi_user_heuristic | предупреждение | Конфигурация выглядит как многопользовательская, в то время как модель доверия шлюза — персональный помощник | разделите границы доверия или усильте защиту общего пользователя (sandbox.mode, ограничение области действия инструментов/рабочей области) | нет |
tools.profile_minimal_overridden | предупреждение | Переопределения агента обходят глобальный минимальный профиль | agents.list[].tools.profile | нет |
plugins.tools_reachable_permissive_policy | предупреждение | Инструменты расширений доступны в разрешительных контекстах | tools.profile + разрешение/запрет инструментов | нет |
models.small_params | критическая/инфо | Маленькие модели + небезопасные поверхности инструментов повышают риск инъекции | выбор модели + политика изоляции/инструментов | нет |
Control UI по HTTP
Control UI нужен безопасный контекст (HTTPS или localhost) для генерации идентификатора устройства. gateway.controlUi.allowInsecureAuth не обходит проверки безопасного контекста, идентификатора устройства или сопряжения устройств. Предпочитайте HTTPS (Tailscale Serve) или открывайте UI на 127.0.0.1. Только для аварийных сценариев, gateway.controlUi.dangerouslyDisableDeviceAuth отключает проверки идентификатора устройства полностью. Это серьезное понижение уровня безопасности; держите его выключенным, если вы не занимаетесь активной отладкой и можете быстро откатить. openclaw security audit предупреждает, когда эта настройка включена.
Сводка небезопасных или опасных флагов
openclaw security audit включает config.insecure_or_dangerous_flags, когда включены известные небезопасные/опасные переключатели отладки. Эта проверка в настоящее время агрегирует:
gateway.controlUi.allowInsecureAuth=truegateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=truegateway.controlUi.dangerouslyDisableDeviceAuth=truehooks.gmail.allowUnsafeExternalContent=truehooks.mappings[<index>].allowUnsafeExternalContent=truetools.exec.applyPatch.workspaceOnly=false
Полные dangerous* / dangerously* ключи конфигурации, определенные в схеме конфигурации OpenClaw:
gateway.controlUi.dangerouslyAllowHostHeaderOriginFallbackgateway.controlUi.dangerouslyDisableDeviceAuthbrowser.ssrfPolicy.dangerouslyAllowPrivateNetworkchannels.discord.dangerouslyAllowNameMatchingchannels.discord.accounts.<accountId>.dangerouslyAllowNameMatchingchannels.slack.dangerouslyAllowNameMatchingchannels.slack.accounts.<accountId>.dangerouslyAllowNameMatchingchannels.googlechat.dangerouslyAllowNameMatchingchannels.googlechat.accounts.<accountId>.dangerouslyAllowNameMatchingchannels.msteams.dangerouslyAllowNameMatchingchannels.irc.dangerouslyAllowNameMatching(канал расширения)channels.irc.accounts.<accountId>.dangerouslyAllowNameMatching(канал расширения)channels.mattermost.dangerouslyAllowNameMatching(канал расширения)channels.mattermost.accounts.<accountId>.dangerouslyAllowNameMatching(канал расширения)agents.defaults.sandbox.docker.dangerouslyAllowReservedContainerTargetsagents.defaults.sandbox.docker.dangerouslyAllowExternalBindSourcesagents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoinagents.list[<index>].sandbox.docker.dangerouslyAllowReservedContainerTargetsagents.list[<index>].sandbox.docker.dangerouslyAllowExternalBindSourcesagents.list[<index>].sandbox.docker.dangerouslyAllowContainerNamespaceJoin
Конфигурация обратного прокси
Если вы запускаете шлюз за обратным прокси (nginx, Caddy, Traefik и т.д.), вы должны настроить gateway.trustedProxies для правильного определения IP-адреса клиента. Когда шлюз обнаруживает заголовки прокси от адреса, который не находится в trustedProxies, он не будет рассматривать соединения как локальных клиентов. Если аутентификация шлюза отключена, эти соединения отклоняются. Это предотвращает обход аутентификации, когда проксированные соединения в противном случае выглядели бы исходящими с localhost и получали автоматическое доверие.
gateway:
trustedProxies:
- "127.0.0.1" # если ваш прокси работает на localhost
# Опционально. По умолчанию false.
# Включайте только если ваш прокси не может предоставить X-Forwarded-For.
allowRealIpFallback: false
auth:
mode: password
password: ${OPENCLAW_GATEWAY_PASSWORD}
Когда trustedProxies настроен, шлюз использует X-Forwarded-For для определения IP-адреса клиента. X-Real-IP игнорируется по умолчанию, если явно не установлено gateway.allowRealIpFallback: true. Правильное поведение обратного прокси (перезаписать входящие заголовки переадресации):
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
Неправильное поведение обратного прокси (добавить/сохранить ненадежные заголовки переадресации):
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Примечания по HSTS и источникам
- Шлюз OpenClaw в первую очередь локальный/loopback. Если вы завершаете TLS на обратном прокси, установите HSTS на домене HTTPS, обращенном к прокси.
- Если шлюз сам завершает HTTPS, вы можете установить
gateway.http.securityHeaders.strictTransportSecurityдля отправки заголовка HSTS из ответов OpenClaw. - Подробное руководство по развертыванию находится в Аутентификация доверенного прокси.
- Для развертываний Control UI не на loopback,
gateway.controlUi.allowedOriginsтребуется по умолчанию. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=trueвключает режим резервного источника на основе заголовка Host; рассматривайте это как опасную политику, выбранную оператором.- Рассматривайте поведение подмены DNS и заголовка хоста прокси как проблемы усиления защиты развертывания; держите
trustedProxiesузкими и избегайте прямого воздействия шлюза на публичный интернет.
Локальные логи сеансов хранятся на диске
OpenClaw хранит расшифровки сеансов на диске в ~/.openclaw/agents/<agentId>/sessions/*.jsonl. Это необходимо для непрерывности сеансов и (опционально) индексации памяти сеансов, но это также означает, что любой процесс/пользователь с доступом к файловой системе может читать эти логи. Рассматривайте доступ к диску как границу доверия и заблокируйте права доступа на ~/.openclaw (см.