Tornado Cash 再遭治理攻击:一份假提案盯上了 2300 万美元社区金库

Foresight News发布于2026-06-26更新于2026-06-26

文章摘要

2026年6月25日,Tornado Cash DAO出现一份编号67的治理提案,标题为“建立0.5%费率标准与90%动态通缩销毁方案”,内容看似旨在优化协议经济模型。但安全研究员发现,该提案合约代码未经验证,其真实目的是通过一个隐蔽函数,将协议的管理员地址替换为攻击者控制的地址(0x5efda50f22d34f272c7077689d6abc42f15e285f),该地址与真实治理地址高度相似。若提案通过,攻击者可盗取治理合约中约2300万美元的TORN代币并瘫痪协议。 提案创建者的资金来源于隐私协议Railgun,难以追踪。社区及时发现恶意意图后,投票结果呈压倒性反对(27,163 TORN反对,0票赞成)。由于未达到10万TORN的法定投票数,提案预计将失效。这是Tornado Cash第二次遭遇类似治理攻击,上次发生在2023年5月。 此次事件再次暴露DAO治理的常见风险。对普通用户而言,需关注安全预警,对未验证合约的提案保持警惕,并考虑委托投票权以提升安全性。对协议而言,引入时间锁(Timelock)机制是重要的防御措施,能为社区审查提供缓冲期。


撰文:angelilu,Foresight News


2026 年 6 月 25 日凌晨 6 点 18 分,一份编号为 67 的治理提案出现在 Tornado Cash DAO 的投票页面上。



标题写得很正式:「建立 0.5% 费率标准与 90% 动态通缩销毁方案」。正文洋洋洒洒,声称要把中继者注册表升级到「V5 Strategy A」架构,把协议收取的手续费 90% 永久销毁、10% 分给质押者,并附上一套「财富正向循环」的经济模型推演。


提案人还申请从国库领取 50 枚 TORN,用于补偿部署合约时预付的 Gas 费——这个细节让整份提案看起来像是一个认真负责、自掏腰包的社区贡献者写的。


但这份提案的合约代码没有经过任何验证。即提案的执行逻辑(Calldata)未在区块浏览器(如 Etherscan)进行源代码验证,没有验证,社区看到的只是一堆机器码,无法直接审查。Tornado Cash 历史上的正常提案都会做这一步,这份提案跳过了。


L2BEAT 研究员Sergey Shemyakov是第一个注意到这一点的人。提案上线约 8 小时后,他艾特安全研究员 Pascal Caversaccio 表示:「这份提案逻辑异常复杂,请帮我独立审查。」



Security Alliance 研究员 Pascal Caversaccio 很快给出了结论。


提案的真实目的:把协议的管理员地址偷偷换掉


Caversaccio 用反编译工具把提案合约的字节码还原出来,认定这个提案是恶意的。


代码里有一个名为「governance(治理者)」的函数,功能只有一个:返回一个地址,告诉协议「谁是管理员」。而这个函数里写死的地址,是攻击者自己的钱包。



在 Tornado Cash 的架构里,协议的各个部分都会调用这个函数来确认最高权限归谁。一旦提案通过执行,原来指向社区治理合约的地址就会被悄悄替换成这个攻击者地址。


真实的治理地址是 0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce;

伪造的攻击者地址是 0x5efda50f22d34f272c7077689d6abc42f15e285f。


两个地址前 15 个字符完全一样,从第 16 位才开始出现差异。普通人用肉眼对比很难发现。


如果这份提案通过,后果是:协议认定的「最高管理员」地址会被悄悄换成攻击者的地址。届时攻击者可以用这个身份,把目前锁在治理合约里的约 2300 万美元 TORN 代币提走——这笔钱是社区成员质押进来参与投票用的。除此之外,攻击者还可以把协议内所有中继者(负责帮用户转发交易的服务商)的余额强制清零,让整个协议瘫痪。


攻击者是谁,钱从哪来


提案创建者的钱包地址是 0xd4eca8c9242b9f9faa3cf19a78defc21dc97a925。


Caversaccio 追溯这个地址的资金来源,发现它在提案提交前 4 天刚刚收到一笔转账。转账方是 Railgun——另一个链上隐私混币协议,也是 Tornado Cash 的直接竞争对手。通过 Railgun 转账意味着资金来源被混淆,无法溯源到真实身份。



社区发现后,投票现状如何


截至目前,这份提案的投票结果是:赞成 0 票,反对 27,163 枚 TORN,占比 100%。投票在 6 月 30 日关闭。


Tornado Cash 的治理规则要求至少 10 万枚 TORN 参与投票才算达到法定人数,目前只到了 27%。除非接下来 4 天内出现大规模的异常赞成票,把法定人数推上去并翻转结果。否则这个提案失效和被否决结果都是不执行。但这件事给人带来的警示作用更大。


这已经是 Tornado Cash第二次面对这类攻击了。2023 年 5 月,一位攻击者通过一份隐藏自毁函数的提案拿到了 120 万票的治理控制权,彼时整个 DAO 的合法投票只有 7 万票。那次攻击者提走了约 217 万美元的 TORN,洗钱用的工具正是 Tornado Cash 本身,然后提交了一份「恢复治理」的提案,净赚约 90 万美元后全身而退。那次之后,没有人从根本上修复这套治理结构。


DAO 治理攻击,普通人怎么防


治理攻击已经是 Web3 的常规风险,不是某个协议的特例。2022 年 4 月,Beanstalk 被攻击者用闪电贷借出 10 亿美元临时投票权,在同一笔交易里通过提案、转走 1.82 亿美元、还清借款,全程不到一分钟。同年 2 月,Build Finance DAO 被攻击者通过伪造治理代币取得控制权,1100 万美元国库被清空。


攻击的形式在进化:从闪电贷抢票,到隐藏自毁函数,到这次的地址字符替换。但底层逻辑始终一样——DAO 的权力来自代币,代币可以被借、被伪造、被混淆。任何治理机制,只要能被代码操控,就能被攻击。


对于持有治理代币的普通用户,有几条路径切实可用。第一,关注安全研究员的实时预警,这次攻击正是被 L2BEAT 研究员第一个发出警报。第二,指向未验证合约的提案,大概率需要直接投反对票。第三,如果你持有协议治理代币但不打算主动参与,把投票权委托给活跃的社区成员,比让代币在钱包里沉睡更安全,沉默的代币只会让法定人数更难凑够。


对于协议开发者,更根本的防线是在治理层引入时间锁(timelock)——提案通过后不立即执行,留出 48 至 72 小时的窗口,让社区和安全研究员有机会审查并触发紧急暂停。Compound、Aave 等协议早已标配这一机制,Tornado Cash 至今没有,这也是其一种合规与抗审查的极端选择。

相关问答

Q这次针对Tornado Cash DAO的治理攻击中,恶意提案的主要技术手段是什么?

A攻击者提交了一份看似正常的治理提案,但其执行合约的代码未经验证,隐藏了恶意函数。该合约包含一个名为“governance”的函数,其唯一功能是返回一个预先设定好的攻击者钱包地址,意图替换掉协议原有的管理员地址,从而窃取控制权。

Q攻击者提交的假提案若通过,最直接的后果是什么?

A如果提案通过执行,协议的最高管理员地址将被悄悄替换为攻击者的地址。这将使攻击者能够直接提走锁在治理合约中价值约2300万美元的TORN代币,并可以强制清空中继者余额,导致整个协议瘫痪。

Q此次攻击与2023年5月Tornado Cash遭遇的另一次治理攻击有何不同?

A2023年的攻击者通过隐藏的自毁函数获取了治理控制权并盗取资金。而本次攻击的技术手段是:在未经验证的合约中写入一个函数,该函数返回一个与真实治理地址极其相似的伪造地址,以此试图替换管理员权限。两者都利用了治理机制的设计缺陷,但具体手法不同。

Q根据文章,对于持有治理代币的普通用户,如何有效防范类似的DAO治理攻击?

A普通用户可采取以下措施:1. 密切关注安全研究员的实时预警。2. 对于指向未经验证合约的提案,应直接投反对票。3. 如果无意主动参与投票,将投票权委托给活跃且可信的社区成员,这比让代币闲置更安全,因为沉默的代币会降低达到法定投票人数的难度,可能有利于攻击。

Q从协议开发的角度,文章认为防御此类攻击的根本性措施是什么?Tornado Cash为何没有采用?

A根本性措施是在治理层引入时间锁机制,即提案通过后延迟48至72小时再执行,为社区审查和紧急干预提供窗口。文章指出,Tornado Cash至今未采用这一机制,这被解释为其在合规与抗审查方面做出的极端选择。

你可能也喜欢

交易

现货
活动图片