Gateway 导读

安全守门员 audit checks:总控室这一层在盯什么

安全守门员 audit checks 属于网关总控室里的一角。先看它卡在哪个位置、会拨动哪些客户端和工具、旋钮一拧会影响哪片区域,然后再看命令细节。原文最响的一记鼓点,其实是:openclaw 安全守门员 audit emits structured findings keyed by checkId. This page is the refer…。

先听这页的人话版

Security audit checks

这一页不是在堆术语,它像把“安全守门员 audit checks”这台小机器搬到桌上,当着你的面拆开给你看。你先不用全记住,先抓住它到底在忙什么:openclaw 安全守门员 audit emits structured findings keyed by checkId. This page is the reference cat…。

如果把这页当成“给普通人看的版本”,你最应该带走的是:它到底在教你一件什么事、什么时候要这样做、以及哪里最容易踩坑。

原始路径:/gateway/security/audit-checks 章节数量:2 查看原文

第 1 站

Start Here

这一节主要在解释“Start Here”到底是干什么的,以及你什么时候会遇到它。

这段在解决什么

这一节主要在解释“Start Here”到底是干什么的,以及你什么时候会遇到它。

为什么值得看

如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。

真要动手时

真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:openclaw 安全守门员 audit emits structured findings keyed by checkId. This page is the reference catalog for those IDs. For…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:openclaw 安全守门员 audit emits structured findings keyed by checkId. This page is the reference catalog for those IDs. For…。

原文小纸条

openclaw security audit emits structured findings keyed by checkId. This page is the reference catalog for those IDs. For the high-level threat model and hardening guidance, see Security.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:High-signal checkId values you will most likely see in real deployments (not exhaustive):。

原文小纸条

High-signal checkId values you will most likely see in real deployments (not exhaustive):

像整理表格

这段是在把几种选项排成表格,左边像标签,右边像说明。手机上可以横向滑动原文表格。

原文表格
checkIdSeverityWhy it mattersPrimary fix key/pathAuto-fix
fs.state_dir.perms_world_writablecriticalOther users/processes can modify full OpenClaw statefilesystem perms on ~/.openclawyes
fs.state_dir.perms_group_writablewarnGroup users can modify full OpenClaw statefilesystem perms on ~/.openclawyes
fs.state_dir.perms_readablewarnState dir is readable by othersfilesystem perms on ~/.openclawyes
fs.state_dir.symlinkwarnState dir target becomes another trust boundarystate dir filesystem layoutno
fs.config.perms_writablecriticalOthers can change auth/tool policy/configfilesystem perms on ~/.openclaw/openclaw.jsonyes
fs.config.symlinkwarnSymlinked config files are unsupported for writes and add another trust boundaryreplace with a regular config file or point OPENCLAW_CONFIG_PATH at the real fileno
fs.config.perms_group_readablewarnGroup users can read config tokens/settingsfilesystem perms on config fileyes
fs.config.perms_world_readablecriticalConfig can expose tokens/settingsfilesystem perms on config fileyes
fs.config_include.perms_writablecriticalConfig include file can be modified by othersinclude-file perms referenced from openclaw.jsonyes
fs.config_include.perms_group_readablewarnGroup users can read included secrets/settingsinclude-file perms referenced from openclaw.jsonyes
fs.config_include.perms_world_readablecriticalIncluded secrets/settings are world-readableinclude-file perms referenced from openclaw.jsonyes
fs.auth_profiles.perms_writablecriticalOthers can inject or replace stored model credentialsagents/<agentId>/agent/auth-profiles.json permsyes
fs.auth_profiles.perms_readablewarnOthers can read API keys and OAuth tokensagents/<agentId>/agent/auth-profiles.json permsyes
fs.credentials_dir.perms_writablecriticalOthers can modify channel pairing/credential statefilesystem perms on ~/.openclaw/credentialsyes
fs.credentials_dir.perms_readablewarnOthers can read channel credential statefilesystem perms on ~/.openclaw/credentialsyes
fs.sessions_store.perms_readablewarnOthers can read session transcripts/metadatasession store permsyes
fs.log_file.perms_readablewarnOthers can read redacted-but-still-sensitive logsgateway log file permsyes
fs.synced_dirwarnState/config in iCloud/Dropbox/Drive broadens token/transcript exposuremove config/state off synced foldersno
gateway.bind_no_authcriticalRemote bind without shared secretgateway.bind, gateway.auth.*no
gateway.loopback_no_authcriticalReverse-proxied loopback may become unauthenticatedgateway.auth.*, proxy setupno
gateway.trusted_proxies_missingwarnReverse-proxy headers are present but not trustedgateway.trustedProxiesno
gateway.http.no_authwarn/criticalGateway HTTP APIs reachable with auth.mode="none"gateway.auth.mode, gateway.http.endpoints.*, plugins.entries.admin-http-rpcno
gateway.http.session_key_override_enabledinfoHTTP API callers can override sessionKeygateway.http.allowSessionKeyOverrideno
gateway.tools_invoke_http.dangerous_allowwarn/criticalRe-enables dangerous tools over HTTP APIgateway.tools.allowno
gateway.nodes.allow_commands_dangerouswarn/criticalEnables high-impact node commands (camera/screen/contacts/calendar/SMS)gateway.nodes.allowCommandsno
gateway.nodes.deny_commands_ineffectivewarnPattern-like deny entries do not match shell text or groupsgateway.nodes.denyCommandsno
gateway.tailscale_funnelcriticalPublic internet exposuregateway.tailscale.modeno
gateway.tailscale_serveinfoTailnet exposure is enabled via Servegateway.tailscale.modeno
gateway.control_ui.allowed_origins_requiredcriticalNon-loopback Control UI without explicit browser-origin allowlistgateway.controlUi.allowedOriginsno
gateway.control_ui.allowed_origins_wildcardwarn/criticalallowedOrigins=["*"] disables browser-origin allowlistinggateway.controlUi.allowedOriginsno
gateway.control_ui.host_header_origin_fallbackwarn/criticalEnables Host-header origin fallback (DNS rebinding hardening downgrade)gateway.controlUi.dangerouslyAllowHostHeaderOriginFallbackno
gateway.control_ui.insecure_authwarnInsecure-auth compatibility toggle enabledgateway.controlUi.allowInsecureAuthno
gateway.control_ui.device_auth_disabledcriticalDisables device identity checkgateway.controlUi.dangerouslyDisableDeviceAuthno
gateway.real_ip_fallback_enabledwarn/criticalTrusting X-Real-IP fallback can enable source-IP spoofing via proxy misconfiggateway.allowRealIpFallback, gateway.trustedProxiesno
gateway.token_too_shortwarnShort shared token is easier to brute forcegateway.auth.tokenno
gateway.auth_no_rate_limitwarnExposed auth without rate limiting increases brute-force riskgateway.auth.rateLimitno
gateway.trusted_proxy_authcriticalProxy identity now becomes the auth boundarygateway.auth.mode="trusted-proxy"no
gateway.trusted_proxy_no_proxiescriticalTrusted-proxy auth without trusted proxy IPs is unsafegateway.trustedProxiesno
gateway.trusted_proxy_no_user_headercriticalTrusted-proxy auth cannot resolve user identity safelygateway.auth.trustedProxy.userHeaderno
gateway.trusted_proxy_no_allowlistwarnTrusted-proxy auth accepts any authenticated upstream usergateway.auth.trustedProxy.allowUsersno
gateway.trusted_proxy_allow_loopbackwarnTrusted-proxy auth accepts explicitly allowed loopback proxy sourcesgateway.auth.trustedProxy.allowLoopbackno
gateway.probe_auth_secretref_unavailablewarnDeep probe could not resolve auth SecretRefs in this command pathdeep-probe auth source / SecretRef availabilityno
gateway.probe_failedwarn/criticalLive Gateway probe failedgateway reachability/authno
discovery.mdns_full_modewarn/criticalmDNS full mode advertises cliPath/sshPort metadata on local networkdiscovery.mdns.mode, gateway.bindno
config.insecure_or_dangerous_flagswarnOne insecure/dangerous debug flag is enabledkey named in finding detailno
security.audit.suppressions.activeinfoAudit output has configured suppressions and may be filteredsecurity.audit.suppressionsno
config.secrets.gateway_password_in_configwarnGateway password is stored directly in configgateway.auth.passwordno
config.secrets.hooks_token_in_configwarnHook bearer token is stored directly in confighooks.tokenno
hooks.token_reuse_gateway_tokencriticalHook ingress token also unlocks Gateway authhooks.token, gateway.auth.tokenno
hooks.token_too_shortwarnEasier brute force on hook ingresshooks.tokenno
hooks.default_session_key_unsetwarnHook agent runs fan out into generated per-request sessionshooks.defaultSessionKeyno
hooks.allowed_agent_ids_unrestrictedwarn/criticalAuthenticated hook callers may route to any configured agenthooks.allowedAgentIdsno
hooks.request_session_key_enabledwarn/criticalExternal caller can choose sessionKeyhooks.allowRequestSessionKeyno
hooks.request_session_key_prefixes_missingwarn/criticalNo bound on external session key shapeshooks.allowedSessionKeyPrefixesno
hooks.path_rootcriticalHook path is /, making ingress easier to collide or misroutehooks.pathno
hooks.installs_unpinned_npm_specswarnHook install records are not pinned to immutable npm specshook install metadatano
hooks.installs_missing_integritywarnHook install records lack integrity metadatahook install metadatano
hooks.installs_version_driftwarnHook install records drift from installed packageshook install metadatano
logging.redact_offwarnSensitive values leak to logs/statuslogging.redactSensitiveyes
browser.control_invalid_configwarnBrowser control config is invalid before runtimebrowser.*no
browser.control_no_authcriticalBrowser control exposed without token/password authgateway.auth.*no
browser.remote_cdp_httpwarnRemote CDP over plain HTTP lacks transport encryptionbrowser profile cdpUrlno
browser.remote_cdp_private_hostwarnRemote CDP targets a private/internal hostbrowser profile cdpUrl, browser.ssrfPolicy.*no
sandbox.docker_config_mode_offwarnSandbox Docker config present but inactiveagents.*.sandbox.modeno
sandbox.bind_mount_non_absolutewarnRelative bind mounts can resolve unpredictablyagents.*.sandbox.docker.binds[]no
sandbox.dangerous_bind_mountcriticalSandbox bind mount targets blocked system, credential, or Docker socket pathsagents.*.sandbox.docker.binds[]no
sandbox.dangerous_network_modecriticalSandbox Docker network uses host or container:* namespace-join modeagents.*.sandbox.docker.networkno
sandbox.dangerous_seccomp_profilecriticalSandbox seccomp profile weakens container isolationagents.*.sandbox.docker.securityOptno
sandbox.dangerous_apparmor_profilecriticalSandbox AppArmor profile weakens container isolationagents.*.sandbox.docker.securityOptno
sandbox.browser_cdp_bridge_unrestrictedwarnSandbox browser bridge is exposed without source-range restrictionsandbox.browser.cdpSourceRangeno
sandbox.browser_container.non_loopback_publishcriticalExisting browser container publishes CDP on non-loopback interfacesbrowser sandbox container publish configno
sandbox.browser_container.hash_label_missingwarnExisting browser container predates current config-hash labelsopenclaw sandbox recreate --browser --allno
sandbox.browser_container.hash_epoch_stalewarnExisting browser container predates current browser config epochopenclaw sandbox recreate --browser --allno
tools.exec.host_sandbox_no_sandbox_defaultswarnexec host=sandbox fails closed when sandbox is offtools.exec.host, agents.defaults.sandbox.modeno
tools.exec.host_sandbox_no_sandbox_agentswarnPer-agent exec host=sandbox fails closed when sandbox is offagents.list[].tools.exec.host, agents.list[].sandbox.modeno
tools.exec.security_full_configuredwarn/criticalHost exec is running with security="full"tools.exec.security, agents.list[].tools.exec.securityno
tools.exec.fs_tools_disabled_but_exec_enabledwarnFilesystem tool policy does not make shell execution read-onlytools.deny, agents.list[].tools.deny, agents.*.sandbox.workspaceAccessno
tools.exec.auto_allow_skills_enabledwarnExec approvals trust skill bins implicitly~/.openclaw/exec-approvals.jsonno
tools.exec.allowlist_interpreter_without_strict_inline_evalwarnInterpreter allowlists permit inline eval without forced reapprovaltools.exec.strictInlineEval, agents.list[].tools.exec.strictInlineEval, exec approvals allowlistno
tools.exec.safe_bins_interpreter_unprofiledwarnInterpreter/runtime bins in safeBins without explicit profiles broaden exec risktools.exec.safeBins, tools.exec.safeBinProfiles, agents.list[].tools.exec.*no
tools.exec.safe_bins_broad_behaviorwarnBroad-behavior tools in safeBins weaken the low-risk stdin-filter trust modeltools.exec.safeBins, agents.list[].tools.exec.safeBinsno
tools.exec.safe_bin_trusted_dirs_riskywarnsafeBinTrustedDirs includes mutable or risky directoriestools.exec.safeBinTrustedDirs, agents.list[].tools.exec.safeBinTrustedDirsno
skills.workspace.symlink_escapewarnWorkspace skills/**/SKILL.md resolves outside workspace root (symlink-chain drift)workspace skills/** filesystem stateno
plugins.extensions_no_allowlistwarnPlugins are installed without an explicit plugin allowlistplugins.allowlistno
plugins.installs_unpinned_npm_specswarnPlugin index records are not pinned to immutable npm specsplugin install metadatano
plugins.installs_missing_integritywarnPlugin index records lack integrity metadataplugin install metadatano
plugins.installs_version_driftwarnPlugin index records drift from installed packagesplugin install metadatano
plugins.code_safetywarn/criticalPlugin code scan found suspicious or dangerous patternsplugin code / install sourceno
plugins.code_safety.entry_pathwarnPlugin entry path points into hidden or node_modules locationsplugin manifest entryno
plugins.code_safety.entry_escapecriticalPlugin entry escapes the plugin directoryplugin manifest entryno
plugins.code_safety.scan_failedwarnPlugin code scan could not completeplugin path / scan environmentno
skills.code_safetywarn/criticalSkill installer metadata/code contains suspicious or dangerous patternsskill install sourceno
skills.code_safety.scan_failedwarnSkill code scan could not completeskill scan environmentno
security.exposure.open_channels_with_execwarn/criticalShared/public rooms can reach exec-enabled agentschannels.*.dmPolicy, channels.*.groupPolicy, tools.exec.*, agents.list[].tools.exec.*no
security.exposure.open_groups_with_elevatedcriticalOpen groups + elevated tools create high-impact prompt-injection pathschannels.*.groupPolicy, tools.elevated.*no
security.exposure.open_groups_with_runtime_or_fscritical/warnOpen groups can reach command/file tools without sandbox/workspace guardschannels.*.groupPolicy, tools.profile/deny, tools.fs.workspaceOnly, agents.*.sandbox.modeno
security.trust_model.multi_user_heuristicwarnConfig looks multi-user while gateway trust model is personal-assistantsplit trust boundaries, or shared-user hardening (sandbox.mode, tool deny/workspace scoping`)no
tools.profile_minimal_overriddenwarnAgent overrides bypass global minimal profileagents.list[].tools.profileno
plugins.tools_reachable_permissive_policywarnExtension tools reachable in permissive contextstools.profile + tool allow/denyno
models.legacywarnLegacy model families are still configuredmodel selectionno
models.weak_tierwarnConfigured models are below current recommended tiersmodel selectionno
models.small_paramscritical/infoSmall models + unsafe tool surfaces raise injection riskmodel choice + sandbox/tool policyno
summary.attack_surfaceinfoRoll-up summary of auth, channel, tool, and exposure posturemultiple keys (see finding detail)no

第 2 站

Related

这一节主要在解释“Related”到底是干什么的,以及你什么时候会遇到它。

这段在解决什么

这一节主要在解释“Related”到底是干什么的,以及你什么时候会遇到它。

为什么值得看

如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。

真要动手时

真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。

像准备清单

这一串条目别硬背,把它当成“Related”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:安全守门员、设置说明书uration、Trusted proxy auth。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。

原文小纸条

---

AdSense 连接验证已经放在页面头部;广告单元等站点审批通过后再启用。

google-adsense-account: ca-pub-3833673520933536