竟然可以推导出私钥?Anyswap 跨链桥被?分析
区块链资讯来源:知道创宇区块链安全实验室
作者:创宇区块链实验室
北京时间 2021 年 7 月 12 日凌晨 1 点,Anyswap 官方发推声称 Anyswap 多链路由 v3 版本遭到攻击,V3 跨链资金池受影响,损失约 240 万 USDC 和 551 万 MIM,Anyswap V1 和 V2 版本不受该攻击影响,跨链桥未受影响。知道创宇区块链安全实验室 第一时间跟踪本次事件并分析:
事件跟踪
攻击时间:
2021 年 7 月 10 日晚 8:00(UTC)
攻击者地址:
0x0aE1554860E51844B61AE20823eF1268C3949f7C
攻击交易信息:
a. 攻击交易 1——> 被盗金额:1,536,821.7694 USDC
https://etherscan.io/tx/0xc80e7cfeb16143cba4d5fb3b192b7dbe70e9bcd5ca0348facd20bf2d05693070
b. 攻击交易 2——>748,312.634392210170566277 USDC
https://bscscan.com/tx/0xa8a75905573cce1c6781a59a5d8bc7a8bfb6c8539ca298cbf507a292091ad4b5
c. 攻击交易 3——>112,640.877101 USDC
https://ftmscan.com/tx/0x7312936a28b143d797b4860cf1d36ad2cc951fdbe0f04ddfeddae7499d8368f8
d. 攻击交易 4——>5,509,227.35372 MIM
https://etherscan.io/tx/0xecaaf8b57b6587412242fdc040bd6cc084077a07f4def24b4adae6fbe8254ae3
技术分析
BSC 上的 V3 路由器 MPC 帐户下存在两个 v3 router 交易,这两个交易具有相同的 R 值签名,攻击者可以反推出 MPC 账户的私钥,知道创宇安全团队通过本地测试验证了这种攻击方法,如果知道两次交易中相同的 R 值 (ECDSA 签名算法),由于两次签名的原始数据不一样,就能反推出签名时使用的随机数种子,又因为可以地址中推算出了公钥,所以通过脚本即可反推出 MPC 地址的私钥 (如下方截图所示),最后攻击者以 MPC 身份调用 anySwapInAuto 函数完成盗币。
代码关键部分:
代码执行结果如下:
后续进展
Anyswap 项目方将赔偿此次盗币事件产生的损失,并在未来 48 小时更新主合约代码,以修复使用相同 R 签名导致的私钥泄露事件。如有最新进展,实验室将会第一时间跟进和分析。