OpenClaw 设计上不安全

发布: (2026年2月22日 GMT+8 05:11)
11 分钟阅读
原文: Dev.to

I’m happy to help translate the article, but I need the full text you’d like translated. Could you please paste the content (excluding the source line you already provided) here? Once I have the article text, I’ll translate it into Simplified Chinese while preserving the formatting and any code blocks or URLs.

Cline 供应链攻击(2月17日)

一个流行的 VS Code 扩展 Cline 被攻陷。攻击链展示了多种 AI 特有的失效模式:

  1. 攻击者在 Cline 的仓库中打开 GitHub Issue

  2. Cline 的 AI 驱动的 Issue 分类机器人 读取该 Issue。

  3. Issue 内容中的 提示注入(prompt injection) 欺骗了机器人。

  4. 机器人 向 GitHub Actions 缓存注入恶意代码

  5. CI 流水线 窃取 VSCE_PATOVSX_PATNPM_RELEASE_TOKEN

  6. 攻击者发布 cline@2.3.0,其中包含一个 安装后脚本,运行

    npm install -g openclaw@latest
  7. 约 4,000 名开发者 在 8 小时内安装了该版本,随后被下架。

该恶意包被 StepSecurity 的自动检查拦截。两条红色警报立即触发:

  • 该包是 手动发布 的(未通过 OIDC Trusted Publishing)。
  • 没有 npm provenance 证明

有效载荷是什么?OpenClaw —— 不是恶意软件,也不是加密矿工,而是一个持久化的 AI 编码代理。

Source:

什么是 OpenClaw?

OpenClaw(前身为 Clawdbot,后改名为 Moltbot)是一个 “持久化 AI 编码代理”,它以广泛的系统级权限驻留在你的机器上:

组件详情
守护进程通过 launchd / systemd 运行
接口ws://127.0.0.1:18789 上提供 WebSocket 服务器
文件系统完全磁盘访问
终端完全终端访问
凭证读取 ~/.openclaw/credentials/config.json5(API 密钥、OAuth 令牌)
技能ClawHub 安装,ClawHub 是一个 零审查 的公共市场

价值主张: 一个能够 真正 编辑文件、执行命令并管理工作流的 AI 助手——无需复制粘贴。

安全影响: 正是这些使其有用的能力,也为攻击者提供了强大的立足点。

病毒式传播时刻与即时后果

  • 2025年2月初: Karpathy 和 Willison 在推特上讨论 OpenClaw(Karpathy 后来澄清他对这个想法感兴趣,但 推荐运行它)。

  • 三天内,三个高危 CVE 被发布:

    • CVE‑2026‑25253 – 远程代码执行
    • CVE‑2026‑25157 – 命令注入
    • CVE‑2026‑24763 – 再次命令注入

    所有漏洞均已修补,但修补未能解决根本的架构问题。

  • SecurityScorecard 的 STRIKE 团队 在病毒式推文发布后数小时内发现 超过 13.5 万 暴露在互联网上的 OpenClaw 实例(发布时 4 万,2 月 9 日已达 13.5 万)。估计仍有 超过 5 万 实例对已修补的 RCE 漏洞保持脆弱。

  • Koi Security 扫描 ClawHub,发现 341 个恶意技能。一名攻击者上传了 677 个包

  • Snyk 扫描约 4 千 技能,发现 283(7.1 %) 泄露凭证——API 密钥、密码,甚至信用卡号在 LLM 上下文窗口中以明文形式传递。

  • “买任何东西”技能可以 收集信用卡信息 并通过后续提示将其外泄。

npm 创始 CTO Laurie Voss: “一次 安全垃圾桶火灾。”
r/netsec 判决: “这个概念 天生不安全,不仅仅是实现有问题。”

核心问题:破碎的威胁模型

要使 OpenClaw 有用,需要:

  • 持久的文件系统访问
  • 执行任意命令的能力
  • 访问凭证和 API 密钥
  • 安装/运行 不受信任的代码(来自 ClawHub 的技能)
  • 对 LLM 提供商的网络访问

安全,则需要 缺少大多数这些功能。正是让它有价值的工具,也是攻击者利用的工具。这不是 bug,而是产品本身。

供应链示例: 攻击者并未利用 OpenClaw 的漏洞。他们仅仅利用了 OpenClaw 已经拥有完整系统权限这一事实。恶意的安装后脚本并未直接窃取数据;它安装了一个已经能够做到的工具。

“安装这个流行的 AI 代理。” – 而不是 “运行这个恶意脚本。”

Microsoft的“安全运行 OpenClaw”指南(Feb 19)

  • 身份隔离
  • 运行时风险
  • 约束策略

该指南的存在凸显了技术已经超前于安全基础设施。该指南仅记录了你必须跨越的障碍,以约束从未被设计为可约束的东西。

缺失的操作系统原语用于代理工作负载

OpenClaw 以 用户 身份运行,继承所有用户权限:

  • 读取 SSH 密钥、.env 文件、浏览器 Cookie
  • 没有沙箱、没有基于能力的安全、没有路径级别的限制

研究方向: 最近的一篇论文提出了 branch() 系统调用(用于代理工作负载的类似 fork 的原语,具备文件系统快照功能)。代理可以投机性地分支到并行的方案,每个方案拥有独立的文件系统快照;胜者原子提交,败者中止。这正是我们需要的操作系统层面的隔离——而不仅仅是“为 OpenClaw 加防火墙”。

在这些原语出现之前,我们只能依赖 bubblewrap 脚本 并抱有希望。

立即行动步骤(如果您已安装 OpenClaw)

  1. 卸载

    npm uninstall -g openclaw
    rm -rf ~/.openclaw/
  2. 轮换凭证 – 存储在 ~/.openclaw/credentials/ 中的任何 API 密钥、OAuth 令牌或密码,或通过 LLM 上下文窗口传递的,都应视为已泄露。请生成新的凭证。

  3. 检查持久化 – 如果您允许 OpenClaw 安装了 launchd/systemd 服务,请删除相应的服务文件:

    • macOS(launchd):

      launchctl unload -w ~/Library/LaunchAgents/com.openclaw.agent.plist
      rm ~/Library/LaunchAgents/com.openclaw.agent.plist
    • Linux(systemd):

      sudo systemctl disable --now openclaw.service
      sudo rm /etc/systemd/system/openclaw.service
      sudo systemctl daemon-reload
  4. 审计系统 – 查找任何残留的文件、套接字或引用 openclaw 的进程。

  5. 监控可疑活动 – 监视网络流量、新进程以及凭证使用情况,以发现潜在的持续妥协迹象。

要点

OpenClaw 的 架构设计——持久、特权且能够执行不受信任的代码——使其成为 高价值目标。Cline 供应链事件证明,仅 存在 这样的代理就足以让攻击者将其武器化,即使没有利用具体漏洞。

为了安全采用代理式 AI 工具,我们需要针对持久 AI 代理独特威胁模型构建的 操作系统级能力控制沙箱原语。在此之前,应将任何此类工具视为 设计上固有不安全

Note: This is a warning about the risks associated with running OpenClaw or similar AI agents.

OpenClaw 安全通告

审计你的系统

  • 检查后台服务的状态:

    launchctl list
    # or
    systemctl --user list-units
  • 审计 ClawHub 技能:如果你安装了任何技能,请假设它们在激活期间已经看到你所做的所有工作。

关键发现

  • 据我们所知,OpenClaw 并未内置数据外泄功能
  • 然而,它 对主机上的所有内容拥有完全访问权,且技能市场 没有任何审核
  • OpenClaw 并不是有 bug——它 按设计运行:为大型语言模型提供持久、广泛的系统访问,以自动化你的工作流。
  • 正因为这种设计,让它安全几乎是不可能的

为什么这很重要

  • AI 代理的安全讨论 必须在 更多“有帮助的编码代理” 带有根权限出现在你的环境之前进行。
  • 等到 CVE 开始出现,或等公司发布安全指南时,已经 为时已晚
  • Cline 供应链攻击 只是一种概念验证;下一次攻击很可能会演变成一次大规模数据泄露。

建议

  • 不要运行 OpenClaw(或任何类似的工具),除非威胁模型发生变化。
  • 如果你正在构建 AI 代理,从第一天起就设计隔离机制,而不是事后补救。
  • 你为代理提供的使其有用的工具 恰恰也是攻击者利用的工具。这不是一个可以打补丁解决的问题——必须从架构层面加以解决。

致谢

感谢 r/netsecr/cybersecurity 社区的犀利分析,感谢 StepSecurity 在 Cline 被进一步扩散前捕获了这次妥协。

0 浏览
Back to Blog

相关文章

阅读更多 »

Subnetting 详解

什么是 Subnetting?可以把它想象成把一栋大型公寓楼拆分成不同的楼层。每层 subnet 拥有自己的编号主机(hosts),以及建筑……