2000 万 OP 代币被盗复盘:合约多签 VS MPC
2022-06-10
最后更新于
2022-06-10
最后更新于
By Kane & Blackk
具体的细节分析可以参考
慢雾的分析文章:2000 万 OP 代币被盗关键:交易重放
Cobo Global 发布的文章:深度解析 Optimism 窃取事件:Layer2 网络合约部署重放攻击
截止发稿,黑客已将 1700 万枚 OP 代币归还 Optimism。
整个事件总结下来
攻击者之所以有机可趁主要因为两个问题:
1. Gnosis 开发者在 2019 年部署 Proxy Factory 1.1.1 时发送的交易不符合 EIP-155 规范,导致任何人都可以在任意 EVM 网络中通过重放攻击的方式部署 Proxy Factory 1.1.1,并且该合约地址都和 Ethereum 主网中 Proxy Factory 相同,给攻击者带来了可乘之机。
2. Wintermute 犯了低级错误,错误地认为他们的合约多签钱包地址在 Optimism 上应该与 Ethereum 中相同,并且在小额测试时只测试了收款,忽略了测试关键的转账操作。
Gnosis 等合约多签钱包通过 EVM 链上多签合约的方式解决了 EVM 资产多人管理问题,在大额资金管理和多人资产管理的场景下提供了优秀的解决方案,但是现有的解决方案也存在一些问题:
1. 合约多签钱包地址不同于 EOA 地址, EOA 地址的同一个私钥在不同 EVM 链上对应同一个地址,而合约多签钱包地址是否一致取决于合约的设计,比如,本次事件中 Gnosis 在创建钱包 Proxy 时,疏忽了相同钱包创建者在不同 EVM 链上无法创建同一个 Proxy 地址所带来的潜在安全问题。
2. 合约钱包需要在每一个 EVM 链上单独完成对应的部署后才可以使用,并且相同的资产管理策略(签名人员、签名门限)在不同 EVM 链上都要配置一次,每次配置都需要消耗手续费,操作相对繁琐。
3. 转账手续费取决于策略复杂度。如果参与管理的人数较多,每次转账都要消费较多的 Gas,造成转账手续费贵等问题。
由于多签机制基于 EVM 合约实现,这些问题受限于 EVM 特性,后续也很难有比较完善的解决方案。除了合约多签之外,Safeheron 也推荐使用 MPC 技术进行多人管理资产。
Safeheron 采用 MPC 签名算法,在链下签名算法层面实现了多签机制(MPC-ECDSA、MPC-Ed25519、MPC-BLS),基于 MPC + TEE 技术构建了更加安全和高效的资管工具。
Safeheron 实现的 MPC 钱包具有以下特性:
MPC 私钥分片在生成、签名、刷新、验证过程中可用但不可见,安全性十足。
MPC 钱包地址属于 EOA 地址,通用型更强,同一个地址在任意 EVM 链上都掌握绝对控制权。
一个钱包可以多人管理不同链上的资产,包含 EVM 链和非 EVM 链(BTC、TRON 等)。
相同的策略只需配置一次。一次配置,在不同 EVM 链和非 EVM 链均适用,操作安全高效。
MPC 钱包更节省手续费。由于链下多签属于 EOA 地址发起交易,相对于合约多签方案最高可节省 90% 的手续费。
除此之外,Safeheron 在转账过程中还增加了许多安全检查项,比如:
目标地址和来源地址的 AML 检查
每个钱包都应该视作标配的所见即所签
转账地址多人审批,添加为白名单之后才可以转出
目标地址是否是合约提醒
......
通过本次事件,Safeheron 团队也再次提醒钱包用户和服务商:
选择钱包工具或者构建钱包系统时,一定要支持 EIP-155 规范,否则将可能带来严重的重放攻击安全问题。
大额转账前一定要充分检查目标地址,通过小额转账验证目标地址的正确性,并且接收方收款之后尝试转出,验证是否具有钱包的控制权限。
发现潜在安全风险应在第一时间完成对资金的转移或控制,避免错过最佳抢救时机。