Harmony 近一亿美金被黑,怎样保障跨链桥资金安全?

2022-06-24

By Blackk

事件细节回顾

Harmony 今日发布公告表示,其开发的以太坊与 Harmony 之间的的资产跨链桥 Horizon 遭到攻击,损失金额约为 1 亿美元,目前团队正在与相关部门及安全专家合作追查攻击者。此外,Harmony 称其比特币跨链桥并未受到本次攻击的影响,并且已经通知交易平台暂停 Horizon 跨链桥的使用。

根据慢雾对 Horizon 黑客攻击事件的分析可知,攻击者(0x0d0...D00)获利超 1 亿美元,本次攻击涉及 11 种 ERC-20 代币、1.31 万枚以太坊、5,000 枚 BNB 以及 64 万枚 BUSD,攻击者已经将其以太坊钱包中的大部分代币转移到了两个新钱包地址,并将代币交易为以太坊后转回初始地址(0x0d0...D00),目前该地址(0x0d0...D00)约持有 85,837 枚以太坊。

我们以其中一笔 1.31 万枚的太坊交易进行分析,该笔交易(0x27981c7289c372e601c9475e5b5466310be18ed10b59d1ac840145f6e7804c97)详情如下:

可以看到其中一个 Owner ( 0x812d8622c6f3c45959439e7ede3c580da06f8f25) 调用了合约的 confirmTransaction 方法,将资金转移到黑客收款地址(0x0d043128146654c7683fbf30ac98d7b2285ded00),交易记录如下:

confirmTransaction 方法是多签合约 MultiSigWallet 中的确认交易提案方法,该方法完整调用如下:

分析可知,该 Owner 通过执行 confirmTransaction 方法,确认了 transactionId 为 21106 的转账交易,最终确认转出了 13,100 个以太坊。那么 transactionId 是何时生成的呢?

从链上记录可以看出,黑客使用另一个 Owner (0xf845a7ee8477ad1fb4446651e548901a2635a915)多次调用 MultiSigWallet 的 submitTransaction 方法生成 transactionId,试图发起转账:

其中一笔交易 (0xf86d216c9872248390be74ca40a68981f97557789c6fb2444156057b8e7ed1d6)如下所示:

在黑客发起攻击之前,查看 MultiSigWallet 合约链上记录发现,该合约的多签配置为 2/5,即 5 个 Owner 中只需其中 2 个 Owner 授权同意即可完成转账。所以黑客可以通过其中一个 Owner(0xf845a7ee8477ad1fb4446651e548901a2635a915发起交易,使用另一个 Owner (0x812d8622c6f3c45959439e7ede3c580da06f8f25)完成交易确认。截止发稿时,该项目在发现被攻击之后,已经将合约的多签配置更新为 4/5。

跨链桥常见的安全风险

协议存在漏洞的安全风险

比如 Chain Swap、Any Swap、Poly Networks、Qubit Bridge 等攻击事件,都是由于协议本身漏洞造成的资产损失。

私钥管理中的安全风险

目前跨链桥解决方案多数都是通过合约多签的方式来保证资金安全,合约多签本身不失为一种优秀的多签技术,但是如果使用不当,便会带来安全问题。如 Owner 私钥的分配问题,如果一个人同时掌握多个 Owner 私钥,私钥的集中将会带来一定的安全风险;为了提供实时自动化跨链服务,项目方需要将其中部分 Owner 私钥存放在服务器中使用,一旦明文存储或者调用权限控制不足,也容易带来安全风险,比如 Ronin Networks 攻击事件。

Safeheron 建议

1. 协议上线前和更新时,要对合约及核心业务系统进行严谨的安全审计。

2. 私钥触网使用时,建议使用 HSM/KMS 加密存储,并且在权限控制上增加全链路安全检测,提升私钥存储和使用时的安全性。

3. 授权交易时根据资金规模灵活授权,如触网 Owner 权限仅支持一定金额以下的授权,超过该金额需要多人使用离线 Owner 私钥参与审批。

4. 增强团队人员安全意识,避免黑客钓鱼攻击。

5. 合理分配 Owner 管理权限,防止内部作恶。

6. 制定安全熔断预案,并进行演练,在出现安全问题时第一时间止损。

针对跨链桥的私钥安全隐患,Safeheron 将推出基于 MPC + TEE 的跨链桥安全解决方案,敬请关注。

最后更新于