网关
安全审计检查
openclaw security audit 会生成以 checkId 为键的结构化发现。本页是这些 ID 的参考目录。有关高级威胁模型和加固指南,请参阅安全。
部分检查仅在使用 openclaw security audit --deep 时运行:插件/技能代码扫描(plugins.code_safety*、skills.code_safety*)和实时 Gateway 网关探测检查(gateway.probe_*)。此表中的其他所有检查均可通过普通的 openclaw security audit 运行。
像 warn/critical 这样的严重性表示,根据配置(例如 Gateway 网关是否远程暴露),同一个 checkId 可能以任一严重性级别生成。在实际部署中最可能看到的高信号值如下(并非详尽列表):
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 |
严重 | 通过反向代理的环回地址可能变为未经身份验证 | gateway.auth.*、代理设置 |
否 |
gateway.trusted_proxies_missing |
警告 | 存在反向代理标头,但未受信任 | gateway.trustedProxies |
否 |
gateway.http.no_auth |
警告/严重 | Gateway 网关 HTTP API 可通过 auth.mode="none" 访问 |
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.commands.allow |
否 |
gateway.nodes.deny_commands_ineffective |
警告 | 类似模式的拒绝条目无法匹配 shell 文本或组 | gateway.nodes.commands.deny |
否 |
gateway.tailscale_funnel |
严重 | 暴露于公共互联网 | gateway.tailscale.mode |
否 |
gateway.tailscale_serve |
信息 | 已通过 Serve 启用 tailnet 暴露 | gateway.tailscale.mode |
否 |
gateway.control_ui.allowed_origins_required |
严重 | 非环回 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 |
严重 | 已弃用的设备身份验证绕过迁移仍允许修复访问 | 完成 Secure this browser 配对(gateway.controlUi.deviceAuthMigration 状态) |
否 |
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 token 直接存储在配置中 | hooks.token |
否 |
hooks.token_reuse_gateway_token |
严重 | Hook 入口 token 也可解锁 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 spec | 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 |
严重 | 浏览器控制在没有 token/密码身份验证的情况下暴露 | 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 |
警告 | 现有浏览器容器早于当前浏览器配置 epoch | 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.entries.*.tools.exec.host, agents.entries.*.sandbox.mode |
否 |
tools.exec.security_full_configured |
警告/严重 | 主机 Exec 正以 security="full" 运行 |
tools.exec.security, agents.entries.*.tools.exec.security |
否 |
tools.exec.agent_skill_mcp_boundary_drift |
警告 | 存在智能体 Skills 允许列表,同时主机 Exec 可访问 MCP 客户端/注册表 | agents.entries.*.tools.exec.*、沙箱/操作系统隔离、MCP 服务器凭据 |
否 |
tools.exec.fs_tools_disabled_but_exec_enabled |
警告 | 文件系统工具策略无法使 shell 执行变为只读 | tools.deny, agents.entries.*.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.entries.*.tools.exec.strictInlineEval、Exec 审批允许列表 |
否 |
tools.exec.safe_bins_interpreter_unprofiled |
警告 | safeBins 中缺少显式配置文件的解释器/运行时二进制文件扩大了 Exec 风险 |
tools.exec.safeBins, tools.exec.safeBinProfiles, agents.entries.*.tools.exec.* |
否 |
tools.exec.safe_bins_broad_behavior |
警告 | safeBins 中行为范围广泛的工具削弱了低风险 stdin 过滤器信任模型 |
tools.exec.safeBins, agents.entries.*.tools.exec.safeBins |
否 |
tools.exec.safe_bin_trusted_dirs_risky |
警告 | safeBinTrustedDirs 包含可变或高风险目录 |
tools.exec.safeBinTrustedDirs, agents.entries.*.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> |
否 |
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 扫描环境 | 否 |
channels.discord.allowlisted_groups.broad_members |
警告 | 允许列表中的 Discord 服务器/频道目标没有成员或角色限制 | channels.discord.guilds.*.users/roles、每频道的 users/roles |
否 |
security.exposure.open_channels_with_exec |
警告/严重 | 共享/公开房间可以访问启用了 Exec 的智能体 | channels.*.dmPolicy、channels.*.groupPolicy、tools.exec.*、agents.entries.*.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 网关/定时任务控制平面工具 | 私信/群组策略路径、tools.allow、tools.alsoAllow、tools.profile、gateway、cron |
否 |
security.trust_model.multi_user_heuristic |
警告 | 配置看起来是多用户配置,而 Gateway 网关信任模型是个人助理模型 | 拆分信任边界,或进行共享用户加固(sandbox.mode、工具拒绝/工作区范围限定) |
否 |
tools.profile_minimal_overridden |
警告 | 智能体覆盖项绕过了全局最小配置文件 | agents.entries.*.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 |
警告 | allowFrom 中的 dmPolicy="open" 缺少 "*",配置不一致 |
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?