
1. 什么是供应链攻击
供应链攻击(Supply Chain Attack)是指攻击者不直接攻击目标系统,而是攻击其依赖的上游组件——代码库、npm 包、前端托管、构建工具。一旦上游被污染,所有下游用户都会在不知情的情况下运行恶意代码。
对于 Tornado官网(龙卷风官网) 所代表的这类隐私协议而言,供应链攻击的后果远比普通网站严重。原因下面会讲。
2. Tornado Cash 遭遇的后门事件
根据安全评估机构的记录,Tornado Cash 的 npm 包曾被植入后门代码。这是继治理攻击之后的第二次重大安全事件。
评估机构将其归因于“制裁后开源维护模式的风险”——当核心开发者离开或匿名化后,代码审查的严密程度下降,恶意贡献者有了可乘之机。这一事件与治理攻击共同构成了 Tornado Cash 的安全史,完整梳理见 Tornado官网的 多重安全挑战。
3. 攻击是怎么被植入的
典型的 npm 供应链攻击路径:
- 攻击者以贡献者身份提交看似无害的代码
- 在依赖包或构建脚本中嵌入恶意逻辑
- 维护者合并后,恶意代码随版本发布
- 用户安装或加载时触发后门
对于前端类包,后门可能做这些事:
- 替换票据生成逻辑,把 nullifier 和 secret 发送到攻击者服务器
- 篡改收款地址,把提款导向攻击者控制的地址
- 记录用户 IP、设备指纹和操作时间
4. 为什么隐私协议特别怕供应链攻击
普通网站被植入后门,损失通常是数据泄露。但隐私协议被植入后门,损失是用户资产和匿名性的双重毁灭:
| 攻击目标 | 后果 |
|---|---|
| 票据生成逻辑 | 用户所有存款的票据被攻击者掌握 |
| 提款地址输入 | 资金被导向攻击者地址 |
| IP 和指纹 | 用户真实身份被关联,隐私彻底失效 |
| 前端的 IPFS 托管 | 如果恶意版本被替换上 IPFS,普通用户难以察觉 |
协议文档中“用户界面由社区托管在 IPFS 上”的设计本意是去中心化抗审查,但如果 IPFS 上的版本被替换为恶意版本,反而成为攻击面。
5. 与治理攻击的区别
| 维度 | 治理攻击 | 供应链攻击 |
|---|---|---|
| 攻击对象 | 治理合约 | 代码依赖 / 前端 |
| 影响范围 | 协议参数、金库 | 每个运行该版本的用户 |
| 链上可见 | 可见(提案和投票记录) | 不可见(发生在链下) |
| 发现难度 | 较低 | 极高 |
| 用户防护 | 关注治理动态 | 验证代码、用可信前端 |
治理攻击的完整复盘见 治理攻击与社区金库风险,2026 年的再次攻击见 2026年治理攻击再复盘。
6. 用户如何自保
- 使用官方或社区验证的前端地址,不要通过搜索引擎广告进入
- 核对前端代码的哈希,如果社区提供了校验值
- 本地运行 CLI 工具,绕过浏览器前端,这是最安全的路径
- 不要把票据存放在联网设备,离线备份是最后一道防线
- 关注审计报告更新,Tornado官网的 审计报告中心 会汇总最新安全评估
💡 常见疑问解答
供应链攻击会影响已经存入的资金吗?
取决于后门类型。如果后门只影响提款时的地址输入,已存入的资金本身还在合约里,但提款时可能被导向错误地址。如果后门泄露了票据,攻击者可以自行提走资金。
IPFS 托管是不是就安全了?
不一定。IPFS 只保证内容可寻址,但如果你访问的入口(比如某个网关或前端域名)被指向了恶意版本,用户很难分辨。关键是核对内容哈希,而不是信任入口。
普通用户怎么知道前端有没有被篡改?
最可靠的方式是本地运行 CLI 工具。如果必须用网页前端,至少确认访问的是社区长期验证的地址,并关注官方渠道的安全公告。
