CoinVoice最新获悉:针对跨链互操作协议 Poly Network 被黑客攻击的事件,慢雾安全团队分析称是由于跨链合约 keeper 被修改为黑客制定地址,从而使黑客可以随意构造交易从合约中取出任意数量的资金,具体如下:
本次攻击的核心在于 EthCrossChainManager 合约的 verifyHeaderAndExecuteTx 函数可以通过 _executeCrossChainTx 函数执行具体的跨链交易。
由于 EthCrossChainData 合约的 owner 为 EthCrossChainManager 合约,因此 EthCrossChainManager 合约可以通过调用 EthCrossChainData 合约的 putCurEpochConPubKeyBytes 函数修改合约的 keeper。
其中 EthCrossChainManager 合约的 verifyHeaderAndExecuteTx 函数是可以通过内部调用 _executeCrossChainTx 函数执行用户指定的跨链交易,所以攻击者只需要通过 verifyHeaderAndExecuteTx 函数传入精心构造的数据来使 _executeCrossChainTx 函数执行调用 EthCrossChainData 合约的 putCurEpochConPubKeyBytes 函数以改变 keeper 角色为攻击者指定的地址。
替换完成 keeper 角色地址后,攻击者即可随意构造交易从合约中取出任意数量的资金了。
CoinVoice最新获悉:针对跨链互操作协议 Poly Network 被黑客攻击的事件,慢雾安全团队分析称是由于跨链合约 keeper 被修改为黑客制定地址,从而使黑客可以随意构造交易从合约中取出任意数量的资金,具体如下:
本次攻击的核心在于 EthCrossChainManager 合约的 verifyHeaderAndExecuteTx 函数可以通过 _executeCrossChainTx 函数执行具体的跨链交易。
由于 EthCrossChainData 合约的 owner 为 EthCrossChainManager 合约,因此 EthCrossChainManager 合约可以通过调用 EthCrossChainData 合约的 putCurEpochConPubKeyBytes 函数修改合约的 keeper。
其中 EthCrossChainManager 合约的 verifyHeaderAndExecuteTx 函数是可以通过内部调用 _executeCrossChainTx 函数执行用户指定的跨链交易,所以攻击者只需要通过 verifyHeaderAndExecuteTx 函数传入精心构造的数据来使 _executeCrossChainTx 函数执行调用 EthCrossChainData 合约的 putCurEpochConPubKeyBytes 函数以改变 keeper 角色为攻击者指定的地址。
替换完成 keeper 角色地址后,攻击者即可随意构造交易从合约中取出任意数量的资金了。