第19节:安全事故9-签名验证攻击

签名被重复使用,或者利用椭圆曲线签名算法的对称性,根据已有签名构造合法签名。

1. 案例:2021 年 7 月 12 日 AnySwap 被盗 800 万美金

2. 事故原因:对交易签名除了私钥外需要一个随机数 R,但是 Anyswap 部署新合约失误,导致在 BSC 上的 V3 路由器 MPC 帐户下有两个交易具有相同的 R 值签名,攻击者反推到这个 MPC 账户的私钥转走了被盗资金。

3. 解决方案:使用EIP-712标准验证签名,参考OpenZeppelin的实现:https://docs.openzeppelin.com/contracts/3.x/api/drafts。