SharkTeam独家分析 | 6.1亿:史上最大金额损失Poly Network被攻击事件分析
北京时间8月10日,Poly Network遭到攻击,以太坊、币安、Polygon三条链共计价值约6亿美元的数字资产被转往黑客账户。随后PolyNetwork和O3Lab官方发推声明遭到严重攻击。
SharkTeam第一时间对此事件进行了攻击分析和技术分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。
一、资金流向分析
攻击资产流向大致如下:
2.7亿美金转移到以太坊ETH网络,地址如下: 0xC8a65Fadf0e0dDAf421F28FEAb69Bf6E2E589963
2.5亿美金转移到币安智能链BSC网络,地址如下:
0x0D6e286A7cfD25E0c01fEe9756765D8033B32C71
8500万美金转移到Polygon网络,地址如下:
0x5dc3603C9D42Ff184153a8a9094a73d461663214
二、攻击原理分析
针对Poly Network被攻击事件,SharkTeam分析认为:导致攻击发生的原因可能为用于跨链签名的程序有逻辑漏洞导致签署出攻击交易。由于跨链合约keeper被修改为黑客制定地址,从而使黑客可以随意构造交易从合约中取出任意数量的资金。
(1)本次攻击的核心在于 EthCrossChainManager 合约的 verifyHeaderAndExecuteTx 函数可以通过 _executeCrossChainTx 函数执行具体的跨链交易。
(2)由于 EthCrossChainData 合约的 owner 为 EthCrossChainManager 合约,因此 EthCrossChainManager 合约可以通过调用 EthCrossChainData 合约的 putCurEpochConPubKeyBytes 函数修改合约的 keeper。
(3)其中 EthCrossChainManager 合约的 verifyHeaderAndExecuteTx 函数是可以通过内部调用 _executeCrossChainTx 函数执行用户指定的跨链交易,所以攻击者只需要通过 verifyHeaderAndExecuteTx 函数传入精心构造的数据来使 _executeCrossChainTx 函数执行调用 EthCrossChainData 合约的 putCurEpochConPubKeyBytes 函数以改变 keeper 角色为攻击者指定的地址。
(4)替换完成 keeper 角色地址后,攻击者即可随意构造交易从合约中取出任意数量的资金了。
(5)以其中的一次交易进行具体分析:
交易哈希:
0xad7a2c70c958fcd3effbf374d0acf3774a9257577625ae4c838e24b0de17602a
攻击者地址:
0xc8a65fadf0e0ddaf421f28feab69bf6e2e589963
攻击合约地址:
0x838bf9e95cb12dd76a54c9f9d2e3082eaf928270
0xcf2afe102057ba5c16f899271045a0a37fcb10f2
内部调用如图所示,攻击者通过攻击合约的调用获取manger的权限,并调用金库合约完成转账。
通过对本次交易追踪发现,在0x250e合约向攻击者转账之前,调用0x5a51合约的0x87939a7f函数,并返回攻击者合约。(上图内部交易中的staticall_4_0)
对0x5a51合约反编译得到0x87939a7f函数功能为查询跨链管理员,返回管理员的地址。反编译如图:(因为O3官方并未将相关合约开源,只能通过反编译的方式)
这也证实了“黑客获得了跨链管理员的权限,可转出合约任意数量发的数字代币”。由于合约的设计缺陷,使得合约的传入参数被攻击者设计,将跨链管理员地址修改为攻击者地址。
三、后续发展
11日中午12时攻击者的交易发现攻击者通过inputdata表示将于PolyNetwork的官方进行沟通。
同时官方也立刻作出了回应,希望攻击者可以将攻击的资金转向指定地址。目前攻击者已开始陆续归还其资金,我们拭目以待。
但是,此次攻击事件也发生了一些区块链行业乱象。就在昨晚攻击被报道没有多久,网络上出现了一些“网络乞丐”,为黑客出谋划策,甚至向黑客索要数字资产。
这种行为是行业乱象,不值得提倡。最后攻击者在一次交易的inputdata中也表示了“对该项目表示感到担忧,将资金归还并不能拯救这个项目”。尽管攻击者已在陆续偿还盗取资金,但项目方确实应深刻反思自己的项目能否保障用户的财产安全,对风险保持敬畏。
四、安全建议
SharkTeam提醒您,在涉足区块链项目时请提高警惕,选择更稳定、更安全,且经过完备多轮审计的公链和项目,切不可将您的资产置于风险之中,沦为黑客的提款机。
而作为项目方,智能合约安全关系用户的财产安全,至关重要!区块链项目开发者应与专业的安全审计公司合作,进行多轮审计,避免合约中的状态和计算错误,为用户的数字资产安全和项目本身安全提供保障。
SharkTeam作为领先的区块链安全服务团队,为开发者提供智能合约审计服务。智能合约审计服务由人工审计和自动化审计构成,满足不同客户需求,独家实现覆盖高级语言层、虚拟机层、区块链层、业务逻辑层四个方面近两百项审计内容,全面保障智能合约安全。
==