快速开始
安全审计检查
openclaw security audit 会输出以 checkId 为键的结构化发现。本页是这些 ID 的参考目录。有关高层级威胁模型和加固指南,请参阅安全。
有些检查仅在使用 openclaw security audit --deep 时运行:插件/Skills 代码扫描(plugins.code_safety*、skills.code_safety*)和实时 Gateway 网关探测检查(gateway.probe_*)。此表中的其他所有检查都会在普通的 openclaw security audit 中运行。
像 warn/critical 这样的严重性表示,同一个 checkId 可能会根据配置以任一等级输出(例如,取决于 Gateway 网关是否暴露给远程访问)。以下是你在实际部署中最有可能看到的高信号值(并非详尽列表):
checkId |
严重程度 | 重要性 | 主要修复键/路径 | 自动修复 |
|---|---|---|---|---|
fs.state_dir.perms_world_writable |
严重 | 其他用户/进程可以修改 OpenClaw 的全部状态 | ~/.openclaw 的文件系统权限 |
是 |
fs.state_dir.perms_group_writable |
警告 | 同组用户可以修改 OpenClaw 的全部状态 | ~/.openclaw 的文件系统权限 |
是 |
fs.state_dir.perms_readable |
警告 | 其他用户可以读取状态目录 | ~/.openclaw 的文件系统权限 |
是 |
fs.state_dir.symlink |
警告 | 状态目录的目标会成为另一个信任边界 | 状态目录的文件系统布局 | 否 |
fs.config.perms_writable |
严重 | 其他用户可以更改身份验证/工具策略/配置 | ~/.openclaw/openclaw.json 的文件系统权限 |
是 |
fs.config.symlink |
警告 | 不支持写入符号链接配置文件,且这会增加另一个信任边界 | 替换为常规配置文件,或将 OPENCLAW_CONFIG_PATH 指向实际文件 |
否 |
fs.config.perms_group_readable |
警告 | 同组用户可以读取配置中的令牌/设置 | 配置文件的文件系统权限 | 是 |
fs.config.perms_world_readable |
严重 | 配置可能暴露令牌/设置 | 配置文件的文件系统权限 | 是 |
fs.config_include.perms_writable |
严重 | 其他用户可以修改配置包含文件 | openclaw.json 所引用的包含文件权限 |
是 |
fs.config_include.perms_group_readable |
警告 | 同组用户可以读取包含文件中的机密/设置 | openclaw.json 所引用的包含文件权限 |
是 |
fs.config_include.perms_world_readable |
严重 | 包含文件中的机密/设置可被所有用户读取 | openclaw.json 所引用的包含文件权限 |
是 |
fs.auth_profiles.perms_writable |
严重 | 其他用户可以注入或替换存储的模型凭据 | agents/<agentId>/agent/auth-profiles.json 的权限 |
是 |
fs.auth_profiles.perms_readable |
警告 | 其他用户可以读取 API 密钥和 OAuth 令牌 | agents/<agentId>/agent/auth-profiles.json 的权限 |
是 |
fs.credentials_dir.perms_writable |
严重 | 其他用户可以修改渠道配对/凭据状态 | ~/.openclaw/credentials 的文件系统权限 |
是 |
fs.credentials_dir.perms_readable |
警告 | 其他用户可以读取渠道凭据状态 | ~/.openclaw/credentials 的文件系统权限 |
是 |
fs.sessions_store.perms_readable |
警告 | 其他用户可以读取会话记录/元数据 | 会话存储权限 | 是 |
fs.log_file.perms_readable |
警告 | 其他用户可以读取已经过脱敏但仍然敏感的日志 | Gateway 网关日志文件权限 | 是 |
fs.synced_dir |
警告 | 将状态/配置放在 iCloud/Dropbox/Drive 中会扩大令牌/会话记录的暴露范围 | 将配置/状态移出同步文件夹 | 否 |
gateway.bind_no_auth |
严重 | 远程绑定未配置共享密钥 | gateway.bind、gateway.auth.* |
否 |
gateway.loopback_no_auth |
严重 | 通过反向代理访问的 local loopback 可能变为未经身份验证 | gateway.auth.*、代理设置 |
否 |
gateway.trusted_proxies_missing |
警告 | 存在反向代理标头,但未将其设为可信 | gateway.trustedProxies |
否 |
gateway.http.no_auth |
警告/严重 | auth.mode="none" 时可以访问 Gateway 网关 HTTP API |
gateway.auth.mode、gateway.http.endpoints.*、plugins.entries.admin-http-rpc |
否 |
gateway.http.session_key_override_enabled |
信息 | HTTP API 调用方可以覆盖 sessionKey |
gateway.http.allowSessionKeyOverride |
否 |
gateway.tools_invoke_http.dangerous_allow |
警告/严重 | 为所有者/管理员调用方重新启用通过 HTTP API 使用的危险工具 | gateway.tools.allow |
否 |
gateway.nodes.allow_commands_dangerous |
警告/严重 | 启用影响重大的节点命令(桌面输入/摄像头/屏幕/联系人/日历/SMS) | gateway.nodes.allowCommands |
否 |
gateway.nodes.deny_commands_ineffective |
警告 | 类似模式的拒绝条目无法匹配 shell 文本或组 | gateway.nodes.denyCommands |
否 |
gateway.tailscale_funnel |
严重 | 暴露到公共互联网 | gateway.tailscale.mode |
否 |
gateway.tailscale_serve |
信息 | 已通过 Serve 启用 tailnet 暴露 | gateway.tailscale.mode |
否 |
gateway.control_ui.allowed_origins_required |
严重 | 非 local loopback 的 Control UI 未配置明确的浏览器来源允许列表 | gateway.controlUi.allowedOrigins |
否 |
gateway.control_ui.allowed_origins_wildcard |
警告/严重 | allowedOrigins=["*"] 会禁用浏览器来源允许列表 |
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 |
否 |
gateway.token_too_short |
警告 | 较短的共享令牌更容易被暴力破解 | gateway.auth.token |
否 |
gateway.auth_no_rate_limit |
警告 | 对外暴露的身份验证未设置速率限制会增加暴力破解风险 | gateway.auth.rateLimit |
否 |
gateway.trusted_proxy_auth |
严重 | 代理身份现已成为身份验证边界 | gateway.auth.mode="trusted-proxy" |
否 |
gateway.trusted_proxy_no_proxies |
严重 | 在没有可信代理 IP 的情况下使用可信代理身份验证并不安全 | gateway.trustedProxies |
否 |
gateway.trusted_proxy_no_user_header |
严重 | 可信代理身份验证无法安全解析用户身份 | gateway.auth.trustedProxy.userHeader |
否 |
gateway.trusted_proxy_no_allowlist |
警告 | 可信代理身份验证接受任何经身份验证的上游用户 | gateway.auth.trustedProxy.allowUsers |
否 |
gateway.trusted_proxy_allow_loopback |
警告 | 可信代理身份验证接受明确允许的环回代理源 | gateway.auth.trustedProxy.allowLoopback |
否 |
gateway.probe_auth_secretref_unavailable |
警告 | 深度探测无法在此命令路径中解析身份验证 SecretRef | 深度探测身份验证来源 / SecretRef 可用性 | 否 |
gateway.probe_failed |
警告 | 实时 Gateway 网关探测失败(仅限 --deep) |
Gateway 网关可达性/身份验证 | 否 |
discovery.mdns_full_mode |
警告/严重 | mDNS 完整模式会在本地网络上广播 cliPath/sshPort 元数据 |
discovery.mdns.mode, gateway.bind |
否 |
config.insecure_or_dangerous_flags |
警告 | 已启用一个不安全/危险的调试标志 | 发现详情中指定的键 | 否 |
security.audit.suppressions.active |
信息 | 审计输出配置了抑制项,可能会被过滤 | security.audit.suppressions |
否 |
config.secrets.gateway_password_in_config |
警告 | Gateway 网关密码直接存储在配置中 | gateway.auth.password |
否 |
config.secrets.hooks_token_in_config |
警告 | Hook bearer 令牌直接存储在配置中 | hooks.token |
否 |
hooks.token_reuse_gateway_token |
严重 | Hook 入口令牌也可解锁 Gateway 网关身份验证 | hooks.token, gateway.auth.token, gateway.auth.password |
否 |
hooks.token_too_short |
警告 | Hook 入口更容易遭受暴力破解 | hooks.token |
否 |
hooks.default_session_key_unset |
警告 | Hook 智能体运行会分散到为每个请求生成的会话中 | hooks.defaultSessionKey |
否 |
hooks.allowed_agent_ids_unrestricted |
警告/严重 | 经身份验证的 Hook 调用方可将请求路由到任何已配置的智能体 | hooks.allowedAgentIds |
否 |
hooks.request_session_key_enabled |
警告/严重 | 外部调用方可以选择 sessionKey | hooks.allowRequestSessionKey |
否 |
hooks.request_session_key_prefixes_missing |
警告/严重 | 未限制外部会话键的格式 | hooks.allowedSessionKeyPrefixes |
否 |
hooks.path_root |
严重 | Hook 路径为 /,使入口更容易发生冲突或错误路由 |
hooks.path |
否 |
hooks.installs_unpinned_npm_specs |
警告 | Hook 安装记录未固定到不可变的 npm 规范 | Hook 安装元数据 | 否 |
hooks.installs_missing_integrity |
警告 | Hook 安装记录缺少完整性元数据 | Hook 安装元数据 | 否 |
hooks.installs_version_drift |
警告 | Hook 安装记录与已安装的软件包不一致 | Hook 安装元数据 | 否 |
logging.redact_off |
警告 | 敏感值会泄露到日志/状态中 | logging.redactSensitive |
是 |
browser.control_invalid_config |
警告 | 浏览器控制配置在运行时启动前已无效 | browser.* |
否 |
browser.control_no_auth |
严重 | 浏览器控制在没有令牌/密码身份验证的情况下暴露 | gateway.auth.* |
否 |
browser.remote_cdp_http |
警告 | 通过普通 HTTP 连接远程 CDP,缺少传输加密 | 浏览器配置文件 cdpUrl |
否 |
browser.remote_cdp_private_host |
警告 | 远程 CDP 指向私有/内部主机 | 浏览器配置文件 cdpUrl、browser.ssrfPolicy.* |
否 |
sandbox.docker_config_mode_off |
警告 | 存在沙箱 Docker 配置,但未启用 | agents.*.sandbox.mode |
否 |
sandbox.bind_mount_non_absolute |
警告 | 相对绑定挂载的解析结果可能不可预测 | agents.*.sandbox.docker.binds[] |
否 |
sandbox.dangerous_bind_mount |
严重 | 沙箱绑定挂载指向被阻止的系统、凭据或 Docker 套接字路径 | agents.*.sandbox.docker.binds[] |
否 |
sandbox.dangerous_network_mode |
严重 | 沙箱 Docker 网络使用 host 或 container:* 命名空间加入模式 |
agents.*.sandbox.docker.network |
否 |
sandbox.dangerous_seccomp_profile |
严重 | 沙箱 seccomp 配置文件削弱容器隔离 | agents.*.sandbox.docker.securityOpt |
否 |
sandbox.dangerous_apparmor_profile |
严重 | 沙箱 AppArmor 配置文件削弱容器隔离 | agents.*.sandbox.docker.securityOpt |
否 |
sandbox.browser_cdp_bridge_unrestricted |
警告 | 沙箱浏览器桥接在没有来源范围限制的情况下暴露 | sandbox.browser.cdpSourceRange |
否 |
sandbox.browser_container.non_loopback_publish |
严重 | 现有浏览器容器在非环回接口上发布 CDP | 浏览器沙箱容器发布配置 | 否 |
sandbox.browser_container.hash_label_missing |
警告 | 现有浏览器容器早于当前配置哈希标签 | openclaw sandbox recreate --browser --all |
否 |
sandbox.browser_container.hash_epoch_stale |
警告 | 现有浏览器容器早于当前浏览器配置周期 | openclaw sandbox recreate --browser --all |
否 |
sandbox.browser_container.docker_probe_timeout |
警告 | 浏览器容器的 Docker 标签探测超时 | Docker 守护进程可达性 | 否 |
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.security_full_configured |
警告/严重 | 主机 Exec 正以 security="full" 运行 |
tools.exec.security, agents.list[].tools.exec.security |
否 |
tools.exec.agent_skill_mcp_boundary_drift |
警告 | 存在智能体 Skills 允许列表,但主机 Exec 可以访问 MCP 客户端/注册表 | agents.list[].tools.exec.*、沙箱/操作系统隔离、MCP 服务器凭据 |
否 |
tools.exec.fs_tools_disabled_but_exec_enabled |
警告 | 文件系统工具策略不会使 shell 执行变为只读 | tools.deny、agents.list[].tools.deny、agents.*.sandbox.workspaceAccess |
否 |
tools.exec.auto_allow_skills_enabled |
警告 | Exec 审批隐式信任 Skills 二进制文件 | 主机审批文件 | 否 |
tools.exec.allowlist_interpreter_without_strict_inline_eval |
警告 | 解释器允许列表允许执行内联求值,而不强制重新审批 | tools.exec.strictInlineEval、agents.list[].tools.exec.strictInlineEval、Exec 审批允许列表 |
否 |
tools.exec.safe_bins_interpreter_unprofiled |
警告 | safeBins 中没有显式配置文件的解释器/运行时二进制文件会扩大 Exec 风险 |
tools.exec.safeBins、tools.exec.safeBinProfiles、agents.list[].tools.exec.* |
否 |
tools.exec.safe_bins_broad_behavior |
警告 | safeBins 中行为范围广泛的工具会削弱低风险的 stdin 过滤信任模型 |
tools.exec.safeBins、agents.list[].tools.exec.safeBins |
否 |
tools.exec.safe_bin_trusted_dirs_risky |
警告 | safeBinTrustedDirs 包含可变或有风险的目录 |
tools.exec.safeBinTrustedDirs、agents.list[].tools.exec.safeBinTrustedDirs |
否 |
tools.elevated.allowFrom.<provider>.wildcard |
严重 | tools.elevated.allowFrom.<provider> 包含 "*",即批准所有发送者 |
tools.elevated.allowFrom.<provider> |
否 |
tools.elevated.allowFrom.<provider>.large |
警告 | <provider> 的提升权限允许列表包含超过 25 个条目 |
tools.elevated.allowFrom.<provider> |
否 |
agents.claude_cli.permission_mode_overridden_by_yolo |
警告 | Claude CLI 的 --permission-mode 被忽略,因为 OpenClaw Exec 完全无人值守 |
tools.exec.security、tools.exec.ask、cliBackends.claude-cli 参数 |
否 |
skills.workspace.symlink_escape |
警告 | 工作区 skills/**/SKILL.md 解析到工作区根目录之外(符号链接链漂移) |
工作区 skills/** 文件系统状态 |
否 |
skills.workspace.scan_truncated |
警告 | 工作区 Skills 扫描在完成前达到了目录访问上限 | 扁平化/简化工作区 skills/ 目录树 |
否 |
plugins.extensions_no_allowlist |
警告 | 安装插件时未配置显式插件允许列表 | plugins.allowlist |
否 |
plugins.allow_phantom_entries |
警告 | plugins.allow 列出的 ID 没有对应的已安装插件 |
plugins.allow |
否 |
plugins.installs_unpinned_npm_specs |
警告 | 插件索引记录未固定到不可变的 npm 规范 | 插件安装元数据 | 否 |
plugins.installs_missing_integrity |
警告 | 插件索引记录缺少完整性元数据 | 插件安装元数据 | 否 |
plugins.installs_version_drift |
警告 | 插件索引记录与已安装的软件包不一致 | 插件安装元数据 | 否 |
plugins.code_safety |
警告/严重 | 插件代码扫描发现可疑或危险模式(仅限 --deep) |
插件代码/安装来源 | 否 |
plugins.code_safety.entry_path |
警告 | 插件入口路径指向隐藏位置或 node_modules 位置 |
插件清单 entry |
否 |
plugins.code_safety.entry_escape |
严重 | 插件入口逸出插件目录 | 插件清单 entry |
否 |
plugins.code_safety.manifest_parse_error |
警告 | 代码安全扫描期间无法解析插件清单 | 插件清单文件 | 否 |
plugins.code_safety.scan_failed |
警告 | 插件代码扫描无法完成(仅限 --deep) |
插件路径/扫描环境 | 否 |
plugins.<pluginId>.security_audit_failed |
警告 | 插件自有的安全审计收集器抛出错误 | 该插件的安全审计收集器 | 否 |
skills.code_safety |
警告/严重 | Skills 安装器元数据/代码包含可疑或危险模式(仅限 --deep) |
Skills 安装来源 | 否 |
skills.code_safety.scan_failed |
警告 | Skills 代码扫描无法完成(仅限 --deep) |
Skills 扫描环境 | 否 |
security.exposure.open_channels_with_exec |
警告/严重 | 共享/公共房间可以访问启用了 Exec 的智能体 | channels.*.dmPolicy、channels.*.groupPolicy、tools.exec.*、agents.list[].tools.exec.* |
否 |
security.exposure.open_groups_with_elevated |
严重 | 开放的私信/群组与提升权限工具组合会形成高影响的提示词注入路径 | 顶层或嵌套的私信策略路径、账户覆盖项、channels.*.groupPolicy |
否 |
security.exposure.open_groups_with_runtime_or_fs |
严重/警告 | 开放的私信/群组可以在没有沙箱/工作区防护的情况下访问命令/文件工具 | 私信/群组策略路径、tools.profile/deny、tools.fs.workspaceOnly、agents.*.sandbox.mode |
否 |
security.exposure.open_groups_with_control_plane_tools |
严重 | 开放的私信/群组可以访问 Gateway 网关/cron 控制平面工具 | 私信/群组策略路径、tools.allow、tools.alsoAllow、tools.profile、gateway、cron |
否 |
security.trust_model.multi_user_heuristic |
警告 | 配置看起来是多用户环境,但 Gateway 网关信任模型为个人助理 | 拆分信任边界,或实施共享用户加固(sandbox.mode、工具拒绝/工作区作用域限制) |
否 |
tools.profile_minimal_overridden |
警告 | 智能体覆盖项绕过全局最小配置文件 | agents.list[].tools.profile |
否 |
plugins.tools_reachable_permissive_policy |
警告 | 扩展工具可在宽松策略上下文中访问 | tools.profile + 工具允许/拒绝 |
否 |
models.legacy |
警告 | 仍配置了旧版模型系列 | 模型选择 | 否 |
models.weak_tier |
警告 | 配置的模型低于当前推荐层级 | 模型选择 | 否 |
models.small_params |
严重/信息 | 小型模型与不安全的工具暴露面组合会增加注入风险 | 模型选择 + 沙箱/工具策略 | 否 |
channels.<provider>.dm.open |
严重 | <provider> 的私信策略为 "open";任何人都可以向机器人发送私信 |
channels.<provider>.dmPolicy、.allowFrom |
否 |
channels.<provider>.dm.open_invalid |
警告 | dmPolicy="open" 但 allowFrom 中没有 "*",配置不一致 |
channels.<provider>.allowFrom |
否 |
channels.<provider>.dm.scope_main_multiuser |
警告 | 多个私信发送者当前共享主会话 | session.dmScope |
否 |
channels.<provider>.allowFrom.dangerous_name_matching_enabled |
信息 | dangerouslyAllowNameMatching 重新启用了基于可变名称/电子邮件/标签的发送者匹配 |
禁用 dangerouslyAllowNameMatching,使用稳定的发送者 ID |
否 |
channels.<provider>.account.read_only_resolution |
警告 | 无法为审计完整解析渠道账户(缺少密钥/Gateway 网关) | 确保引用的密钥可解析,或针对实时 Gateway 网关快照运行 | 否 |
channels.<provider>.warning.<n> |
信息/警告/严重 | 从插件自由格式文本分类得出的提供商特定安全警告 | 查看发现详情 | 否 |
summary.attack_surface |
信息 | 身份验证、渠道、工具和暴露状况的汇总摘要 | 多个键(请参阅发现详情) | 否 |
channels.<provider>.* 和 tools.elevated.allowFrom.<provider>.* 的 checkId 会根据配置的渠道/提供商分别生成,因此在实际输出中,<provider> 是真实的渠道 ID(例如 telegram、discord),而不是字面字符串。
相关内容
Was this useful?