Poly Network 跨链项目安全事件分析

创宇区块链安全实验室
创宇区块链安全实验室 机构得得号

Aug 12, 2021 专注构建区块链安全生态,致力于让人类进入安全的区块链世界。

摘要: 8 月 10 日晚, Poly Network 跨链项目被攻击导致约 6 亿美金的损失,实验室对该事件展开分析。

一.背景

2021 年 8 月 10 日晚,有消息称 Poly Network 跨链项目被攻击导致约 6 亿美金的损失,知道创宇区块链安全实验室 对该事件展开分析。

 

二.攻击地址及交易

事件一共使三条链:ETH、BSC、Polygon 上的资产收到了损失,由于攻击过程类似,这里挑选 BSC 链的攻击作为分析样本。

被攻击合约:

EthCrossChainManager:https://bscscan.com/address/0x7cea671dabfba880af6723bddd6b9f4caa15c87bEthCrossChainDatahttps://bscscan.com/address/0x11e2a718d46ebe97645b87f2363afe1bf28c2672

攻击交易:

https://bscscan.com/tx/0x3eba3f1fb50c4cbe76e7cc4dcc14ac7544762a0e785cf22034f175f67c8d3be9(改变 EthCrossChainData 的 Keeper )

https://bscscan.com/tx/0x534966864bda354628d4f1c66db45cbefcdda7433e9576e7664fea01bb05be9a (盗取合约下代币)

三.漏洞原因

漏洞原因其实出在 EthCrossChainManager 合约的verifyHeaderAndExecuteTx 函数可以在其他链构造交易修改 BSC 链上的 keeper (可以理解为交易验证者),从而黑客添加自身为验证者后以合约的身份调用外部合约进行盗币。

EthCrossChainManager 合约的 verifyHeaderAndExecuteTx 函数通过校验其他链的区块信息来实现跨链验证操作,攻击者通过构造交易在其他链发起了一笔构造过用于修改 Keeper 的交易,BSC 链的 EthCrossChainManager 合约验证交易时就执行 putCurEpochConPubKeyBytes 函数完成了修改 Keeper 的操作,导致 EthCrossChainData 合约中的验证者公钥加入了攻击者的信息,交易信息如下。

https://bscscan.com/tx/0x3eba3f1fb50c4cbe76e7cc4dcc14ac7544762a0e785cf22034f175f67c8d3be9

交易结果显示其调用 putCurEpochConPubKeyBytes 函数成功更改了 keeper ,那么黑客直接就可以用合约的身份发起转账,转走该合约下所有的代币,因为其自身就是 Keeper ,所有的交易都能验证通过,那么黑客就模拟在其他链已经完成跨链充值转账,然后再调用 verifyHeaderAndExecuteTx 函数进行验证提现操作,只需要构造一下转账代币信息即可完成盗币,随后攻击者不停的更换代币地址转出 manager 权限下所有代币余额。

四.漏洞总结与后续

此次攻击事件的漏洞点在于 EthCrossChainData 下有修改keeper的函数 putCurEpochConPubKeyBytes ,攻击者通过碰撞与之相同的函数选择器,致其让 BSC 端更改了 Keeper ,从而添加了攻击者的信息,导致了攻击者能够构造交易并验证通过,引发了代币资产的损失。目前项目方已暂停交易并呼吁各大项目方交易所冻结黑客攻击地址,黑客也开始退回所盗资产,如有最近进展,我们将会继续跟进。

作者:创宇区块链安全实验室;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请联系微信:chaindd123。

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 创宇区块链安全实验室 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信