本脚本仅执行读取操作。它不修复任何问题,也不保证您的安全。绿色输出仅表示下列检查已通过——仅此而已。
openclaw-hardening-check.mjs 是一个小型、无依赖、离线的 OpenClaw 安装审查工具。它会读取本地配置、包元数据、插件和技能清单、文件模式,以及在 Linux 上通过 /proc 读取正在运行的 Gateway 的条目。它不修改文件、不调用 OpenClaw 命令、不连接注册中心,也不发起任何网络请求。
gateway.bind 是仅回环地址、非回环地址还是运行时依赖。在检测到 Docker、Podman、Kubernetes 或 Fly 容器内,未设置或为 auto 的绑定将被视为 0.0.0.0,与 OpenClaw 的容器默认值一致。正在运行的 Linux Gateway 会单独检查,因此命令行或服务覆盖无法隐藏在一个安全的配置值后面。gateway.auth.token 和 .password 的配置优先规则。在测量凭证之前,它会识别 ${VAR}、$VAR、secretref-env:VAR、__env__:VAR 和结构化的 SecretRef。认证环境证据来自匹配的 Gateway 进程、gateway.systemd.env 或状态 .env,而非审查进程。密码值永远不会被打印;报告中仅包含存在性、来源类别和长度。已发布的示例占位符和短于 24 个字符的令牌会被标记。2026.1.29 视为受影响。该漏洞允许查询字符串中的 gatewayUrl 触发 WebSocket 连接,从而泄露 Gateway 令牌。参见 NVD 条目 和 OpenClaw 公告。latest、beta 或 main)。npm 和 pnpm 不会在已安装的包中保留原始请求的分发标签,因此在缺少该来源时,脚本会报告“无法检查”而非猜测。.env、gateway.systemd.env、发现的 auth-profiles.json 文件以及解析后的文件 SecretRef,查看是否存在组或全局暴露,或意外的所有者。dist-runtime/extensions)与在状态、配置目录、托管、工作区、个人、配置或 npm 项目位置中找到的项。非捆绑项被标记为需要手动审查,但永远不会被标记为恶意。/proc/net/tcp* 套接字 inode 映射回 Gateway 入口文件或二进制进程,并标记它们拥有的每个非回环 TCP 监听器。如果预期端口上的监听器所有者无法验证,则输出“无法检查”,而非“Gateway 未运行”。即使 Gateway 已停止,该检查也能从磁盘正常工作。路径和默认值遵循官方 配置文档、配置参考、Gateway 暴露运行手册、技能文档 和 插件管理文档。
将脚本复制到运行 OpenClaw 的机器上,然后以相同的操作系统用户身份运行:
node openclaw-hardening-check.mjs
OpenClaw 的默认配置为 ~/.openclaw/openclaw.json。该脚本也支持 OPENCLAW_CONFIG_PATH、OPENCLAW_STATE_DIR 和 OPENCLAW_GATEWAY_PORT 环境变量。
对于非默认布局和可重现的固定检查,提供了可选覆盖参数:
node openclaw-hardening-check.mjs \
--config /srv/openclaw/openclaw.json \
--state-dir /srv/openclaw \
--package-root /opt/openclaw/lib/node_modules/openclaw \
--install-spec 2026.6.10
--install-spec 必须是由安装程序或部署定义最初使用的目标。传递当前安装的版本而不验证其来源,并不能证明部署是固定的。
检查器从不输出秘密本身,因此可发布的形式仅记录其来源和长度:
OpenClaw hardening check
只读且离线。秘密值永远不会被打印。
配置: ~/.openclaw/openclaw.json
[通过] 配置: 已加载 ~/.openclaw/openclaw.json,且未打印其内容。
[通过] Gateway 绑定: 回环地址;配置为仅本地访问。
[通过] Gateway 身份验证: 通过 Gateway 进程环境引导程序存在,长度为 48;未打印值。
[通过] 监听套接字: OpenClaw TCP 监听器仅限于回环地址: 127.0.0.1:18789, [::1]:18789。
[通过] CVE-2026-25253: 已安装的包版本 2026.6.10 处于或高于 2026.1.29。
[通过] 安装固定: 本次检查记录了确切目标 2026.6.10。
[警告] 第三方插件: 1 个: example-plugin。请自行审查;未尝试判定恶意软件。
总结: 未发现安全问题。有 1 项标记供您审查;退出码 0。
秘密值: [已编辑 — 永远不会出现在输出中]。
总结分别统计安全问题(失败)、需手动审查项(警告)和不完整检查(无法检查)。单独的 警告 和 无法检查 结果不会导致进程失败;只有 失败 会返回退出码 1。
| 代码 |
|---|
/proc。其他平台会得到明确的“无法检查”结果。@latest。请使用 --install-spec 提供受信任的部署来源。测试套件仅使用 node:test 和临时目录:
node --test test/openclaw-hardening-check.test.mjs
Ilya Prudnikov — cain-ai.com
| 含义 |
|---|
0 | 未发现 失败 安全问题;可能仍存在 警告 或 无法检查 结果。 |
1 | 至少有一个 失败 安全问题需要注意。 |
2 | 命令行无效,或配置无法找到、读取、包含或安全解析。 |