#OpenClaw #Agent-Skill #供应链安全 #NAS

本文记录一次只做静态取证的高权限 NAS Skill 审计。结论不是“发现恶意代码”,而是:在来源、许可证、构建链和宿主侧权限治理均无法闭合时,功能再完整也不应直接接入生产 Agent。

一、审计边界

目标制品来自厂商官方论坛附件,包含一份 Skill 文档、模块参考、三个平台 wrapper,以及 macOS、Linux、Windows 五个预编译 CLI。审计期间坚持四条边界:

  1. 不安装、不执行、不导入 Agent;

  2. 不连接 NAS、OpenClaw 或其它生产服务;

  3. 文本复制到隔离目录,二进制只在原下载目录做格式、签名、字符串和 SHA-256 取证;

  4. 文件清单、字节数和哈希必须逐项复算。

制品共 34 个文件,约 26 MiB,其中五个二进制占绝大部分。隔离目录只保留 29 个文本文件,没有二进制落入后续工作区。

二、供应链先于功能

manifest 声明版本为 0.1.0,但制品没有提供:

  • 源码仓库;

  • 精确 commit 或 tag;

  • LICENSE、COPYING、NOTICE;

  • 可复现构建说明;

  • 发布签名或官方独立校验值。

Linux 产物已 stripped;macOS arm64 只有 ad-hoc/linker 签名,没有 Team ID,x64 产物完全未签名。静态字符串能证明多个平台产物都包含相似的 fnOS API、命令表和 Rust 运行时线索,但不能证明它们来自同一份公开源码,更不能证明二进制没有额外行为。

这也是本次最重要的判断:“来自官方帖子”只能证明分发入口,不能替代 revision、许可证、构建链和制品签名。

三、它实际拥有多大权限

这不是只读巡检 Skill。文档暴露了完整 NAS 管理面:

  • 文件上传、删除、移动、共享目录和 ACL;

  • 应用下载、FPK 上传、安装、更新、启停和卸载;

  • Docker 镜像与容器创建、修改、启停、kill、删除,mount 默认可读写;

  • HTTP、FTP、SFTP、磁力和种子下载任务;

  • 日志清除、导出和归档策略修改;

  • 用户、组、密码、管理员权限和 SSH 权限;

  • 存储池创建、停止删除、加减盘、换盘、扩容、格式化和弹出。

部分高风险命令会询问确认或再次验证密码,这是有价值的客户端保护。但大量写命令支持 --yes-y 跳过交互,因此它不能替代宿主侧审批。

还有几个容易被“dry-run”名称掩盖的细节:应用手动安装的 dry-run 仍会先把 FPK 上传到 NAS;连接参数允许远程明文 WebSocket、跳过 TLS 校验;session 也可降级保存到低信任文件。

四、为什么不满足生产 Agent 门禁

一个生产 Agent 的安全边界不能只依赖 Skill 中的自然语言提醒和 CLI 确认。至少还需要宿主权威控制:

  • 身份、会话、run 和 tool call 绑定;

  • capability lease 与对象 fingerprint;

  • 只读、隔离副本、可逆生产动作和不可逆动作分级;

  • 审批票据、幂等键、执行 receipt;

  • 固定目标 allowlist、网络和路径边界;

  • 写前基线、写后回归和可验证回滚。

该 Skill 没有这些宿主侧合同。一旦高能力 Agent 可以自行拼接 --yes、目标地址和凭据,客户端的交互确认就可能退化为形式保护。

因此本次结论是“不晋级”,不是继续做真机试运行。缺失证据不能靠在生产 NAS 上执行来补齐。

五、仍然值得复用的部分

拒绝二进制和 fnOS API,不等于文档毫无价值。以下设计可以抽取到现有 Ubuntu + Docker + OpenClaw 治理中:

  1. 先只读探测,再执行单对象变更,最后只读回归;

  2. 文件路径、存储池 UUID、磁盘名必须按对象类型分别校验;

  3. 查询输出结构化,stdout 与 stderr 分离;

  4. token、secret、密码和敏感环境变量统一脱敏;

  5. session 安全存储失败时不得静默降级;

  6. 存储危险操作先形成分类矩阵,再映射到宿主 L1–L4 权限层。

复用的是治理模式,不是把通用 NAS 管理权交给 Agent。

六、最终门禁

只有上游补齐可验证源码仓库、精确 revision、许可证、构建说明和发布签名后,才值得开启新的代码级审计。即使代码审计通过,生产接入仍必须重新设计最小 capability,而不是直接导入整套 Skill。

OpenClaw 当前的能力分层、审批和后续任务见 《OpenClaw 后续功能规划与待办任务》

七、后续:不移植,也能安全复用

后续没有导入该 Skill 的二进制、fnOS API 或 session,而是为 N100 独立实现了固定无参数、快照隔离的只读查询。架构和生产验收见 《N100 只读 NAS Observer:从高权限 Skill 到快照隔离》