Time:2023-05-26 Click:97
2023 年 5 月 20 日,Tornado Cash 遭受了一次治理攻击,损失约 100 万美元。攻击者首先提交了一个具有误导性描述的恶意提案,随后该提案被选民批准通过。在恶意提案执行后,攻击者掌控了 Tornado Cash 的治理权。我们来简单分析一下这个攻击事件是如何发生的,以及导致这个攻击发生的根本原因究竟是什么。
根据交易记录,可以追踪到该攻击事件。攻击者使用了两个地址,分别是 Attacker A(https://etherscan.io/address/0x092123663804f8801b9b086b03b98d706f77bd59)和 Attacker B(https://etherscan.io/address/0x592340957ebc9e4afb0e9af221d06fdddf789de9)
交易记录查询:https://etherscan.io/tx/0x65fa5b475f34a954a10f88f2c84f316a048a0e67d273c7abb098717b1a4a46a3
更新提案合约。Attacker B 在同一个地址0x C 50389 上创建新合约. 交易: https://etherscan.io/tx/0xa7d20ccdbc2365578a106093e82cc9f6ec5d03043bb6a00114c0ad5d03620122
Prove of Concept
测试文件: https://github.com/MetaTrustLabs/SmartContractAttackPoC/blob/main/test/TornadoCash
这个测试模拟了攻击者创建恶意合约、销毁合约,同时在相同地址创建新合约的步骤。
6. 转移代币
Attacker B 转移代币到 Tornado.Cash: Governance Staking
Attacker A 转移代币到攻击者控制的账号
最终,Attacker A 通过此次攻击获得价值 100 M 的代币。
这次治理攻击的根本原因可以归结为两个方面:恶意的提案得到了通过,以及提案合约被攻击者销毁并在同一地址重新创建。
首先,攻击者通过创建恶意提案引诱投票人误判情况,导致投票人在未充分了解其潜在风险的情况下予以批准。这种误导性描述可能隐藏了攻击的真实意图,误导投票人相信该提案是有益的或无害的。
其次,攻击者采取了措施销毁原有的提案合约,并在同一地址重新创建了新的提案合约。通过调用 emergencyStop 函数,攻击者成功破坏了原始提案逻辑,使得该提案的执行结果不再符合预期。这种行为给攻击者提供了掌控治理权的机会,为后续的攻击奠定了基础。
这两个因素的结合使得攻击者能够成功实施治理攻击并夺取 Tornado Cash 的控制权。恶意提案的通过和提案合约的销毁重建为攻击者铺平了道路,使其能够利用被控制的治理权进行进一步的操作。
这次事件凸显了在去中心化治理过程中的安全性和风险管理的重要性。开发者和社区应加强对提案的审查,确保提案的描述准确透明,同时也要加强对合约的安全性审查,以防止被攻击者利用漏洞和恶意操作。此外,用户和投票人也需要更加谨慎和审慎地评估提案内容,并确保了解其潜在风险和后果。
对于 Tornado Cash 及类似项目来说,这次治理攻击事件应当被视为一次教训,以加强其治理流程和安全机制,从而提高整体系统的安全性和抵御风险的能力。只有通过持续的安全审计和风险评估,以及加强社区参与和意识,我们才能建立起更加安全可靠的区块链生态系统。
MetaTrust 是全球领先的 Web3 AI 安全服务及审计服务提供商,我们为开发者和项目方提供丰富的 AI 安全工具,安全审计以及平台,让开发者得以高效保护项目以及合约安全。Build Fast, Stay Secure.