深翼判例库DeepWing Case Library · INC-034 · 工具层Tool

Cline 的分类机器人被提示注入劫持:未授权的 cline@2.3.0 上架约 8 小时,约 4,000 次下载(第三方估算)Cline's triage bot was hijacked through prompt injection: an unauthorised cline@2.3.0 sat on npm for about eight hours and was downloaded roughly 4,000 times (third-party estimate)

主失效层Primary failure layer:工具层Tool | 证据状态Evidence:一手已核Primary-source verified | 披露日期Disclosed:2026-02-09 | 核查日期Checked:2026-10-21

时间线Timeline

2025-12-21漏洞被引入 Cline 的分类机器人流程
2026-01-01研究员向厂商报告
2026-02-09公开披露《Clinejection》;同日厂商轮换凭证时删错令牌,被暴露令牌未撤销
2026-02-17未经批准的 cline@2.3.0 被发布至 npm,在架约 8 小时
2025-12-21The flaw is introduced into Cline's triage-bot workflow
2026-01-01The researcher reports it to the vendor
2026-02-09'Clinejection' is published; the same day, the vendor rotates credentials but deletes the wrong token, leaving the exposed one live
2026-02-17An unapproved cline@2.3.0 is published to npm and stays up for about eight hours

已证实事实Confirmed facts

研究员 Adnan Khan 演示的链条是:Cline 的 Issue 分类机器人触发权限配置为通配符,任何 GitHub 账号都能触发;机器人自带 Bash 执行与文件读写权限;Issue 标题的原始文本被直接拼进提示词。发布令牌位于夜间发布流程,低权限的分类流程与之共享 GitHub Actions 缓存作用域,缓存投毒可以跨流程触及令牌。

厂商自身的失效是直接成因:2026-02-09 凭证轮换时删错了令牌,被暴露的令牌没有撤销。2 月 17 日,未经批准的 cline@2.3.0 被发布至 npm 并挂约 8 小时,约 4,000 次下载(StepSecurity 估算,非官方数字)。

The chain researcher Adnan Khan demonstrated: Cline's issue-triage bot had wildcard trigger permissions, so any GitHub account could invoke it; the bot itself carried Bash execution and file read/write powers; and raw issue-title text was pasted straight into the prompt. The release token lived in the nightly release workflow, which shared a GitHub Actions cache scope with the low-privilege triage workflow, so cache poisoning could reach across workflows to the token.

The vendor's own failure was the direct cause: during the 2026-02-09 credential rotation it deleted the wrong token, and the exposed token was never revoked. On February 17 an unapproved cline@2.3.0 was published to npm and stayed up for about eight hours, with roughly 4,000 downloads (a StepSecurity estimate, not an official figure).

失效机制Failure mechanism深翼分析DeepWing analysis

低权限入口握着高权限钥匙:谁都能触发的分类流程,与发布令牌之间只隔着一层共享缓存;再加上轮换时删错令牌且无人核验撤销是否生效。注入只是引信,权限结构才是火药。

因此本案归入工具层:分类机器人按分类任务配权,本不该有执行与发布的任何可能。

A low-privilege entrance held a high-privilege key: a triage workflow anyone could trigger sat one shared cache away from the release token, and a rotation that deleted the wrong token went unverified. The injection was only the fuse; the permission structure was the powder.

The case therefore belongs to the Tool layer: a triage bot equipped for its triage task should have no path to execution or release at all.

工程启示Engineering lessons

按任务最小配权:分类机器人只给分类所需的读与标注能力。

触发与执行分权:谁都能触发的入口不能握能落地的执行权限,发布令牌放在机器人运行环境之外。

不可信文本不直拼提示词:Issue 标题等外部文本不得原文进入提示词。

轮换后逐把核验:凭证轮换后逐把确认旧令牌确已撤销。

Least privilege per task: a triage bot gets only the read and labelling powers triage needs.

Separate triggering from executing: an entrance anyone can trigger must not hold powers that land anywhere, and release tokens live outside the bot's runtime.

Never paste untrusted text into prompts: external text such as issue titles does not enter prompts verbatim.

Verify every rotation: after a credential rotation, confirm token by token that the old ones are actually revoked.

你的系统里,Agent 的对外动作有人盯着吗?Is anyone watching what your agents do outside your system?

做 17 题免费自检Take the free 17-question self-check

回到判例库Back to the Case Library →