被黑 6.1 亿美金的 Poly Network 事件分析与疑难问答( 二 )
文章图片
文章图片
签名验证后会通过ECCUtils.merkleProve进行默克尔根验证 , 只要是正常跨链操作即可通过此项检查 。 随后会对交易是否重复发送进行检查并存储已验证后的数据 。 这里只需保证不重复提交即可 。
最后 , 也是最关键的一步 , 其将通过内部调用_executeCrossChainTx函数执行构造的数据 。 _
_
文章图片
从上图我们可以看出_executeCrossChainTx函数未对传入的_toContract、_method等参数进行检查就直接以_toContract.call的方式执行交易 。
其中通过链上数据我们可以看出EthCrossChainData合约的owner即为EthCrossChainManager合约 , 而先前我们知道中继链验证人(即Keeper)的公钥存在EthCrossChainData合约中 , 且此合约存在putCurEpochConPubKeyBytes函数可以直接修改Keeper公钥 。
经过以上分析 , 结果已经很明确了 , 攻击者只需在其他链通过crossChain正常发起跨链操作的交易 , 此交易目的是为了调用EthCrossChainData合约的putCurEpochConPubKeyBytes函数以修改Keeper角色 。 随后通过正常的跨链流程 , Keeper会解析用户请求的目标合约以及调用参数 , 构造出一个新的交易提交到以太坊上 。 这本质上也只是一笔正常的跨链操作 , 因此可以直接通过Keeper检查与默克尔根检查 。 最后成功执行修改Keeper的操作 。
但我们注意到putCurEpochStartHeight函数定义为
【被黑 6.1 亿美金的 Poly Network 事件分析与疑难问答】functionputCurEpochConPubKeyBytes(bytescalldatacurEpochPkBytes)externalreturns(bool);
而_executeCrossChainTx函数执行的定义为
abi.encodePacked(bytes4(keccak256(abi.encodePacked(_method,''(bytes,bytes,uint64)'')))
我们可以知道这两个函数的函数签名在正常情况下传入的_method为putCurEpochStartHeight肯定是完全不同的 , 因此通过_toContract.call理论上是无法调用到putCurEpochStartHeight函数的 。 但_method是攻击者可以控制的 , 其完全可以通过枚举各个字符组合以获得与调用putCurEpochConPubKeyBytes函数相同的函数签名 , 这要求其只需枚举前4个字节符合即可 。 我们也可以自己尝试枚举验证 , 如下所示:
文章图片
文章图片
可以看出前四个字节与putCurEpochConPubKeyBytes函数是一致的
至此我们就已还原出攻击者的攻击细节 。
通过解析链上数据 , 我们可以发现攻击者将Keeper替换为了
0xA87fB85A93Ca072Cd4e5F0D4f178Bc831Df8a00B 。
文章图片
最后攻击者只需使用替换后的Keeper地址进行签名即可通过所有检查执行调用LockProxy合约将其管理的资产转出 。
攻击流程
1、攻击者在源链精心构造一笔修改目标链Keeper的操作 。
2、利用官方Relayer正常在目标链提交数据并执行替换Keeper操作 。
3、攻击者通过替换后的Keeper地址对其转出资产的操作进行签名提交至EthCrossChainManager进行验证 。
4、验证Keeper为攻击者已替换完的地址通过检查 , 执行将资产转移至攻击者指定地址 。
5、获利走人 。
MistTrack分析过程
慢雾AML团队分析统计 , 本次攻击损失共计超6.1亿美元!
具体如下:
文章图片
资金流向分析
慢雾AML旗下MistTrack反洗钱追踪系统分析发现 , 攻击者初始的资金来源是门罗币(XMR) 。
- 产业|打造世界级产业地标 中国声谷冲刺5000亿产值
- 亿美元|美国 AT&T 赢得 3.45GHz 频段 5G 网络竞标,耗资 90 亿美元
- 儿童教育|首个播放量破 100 亿的 YouTube 视频诞生,竟然是儿歌
- 普莉希拉|祖籍徐州的普莉希拉,嫁全球第5富豪扎克伯格,坐拥6530亿被说丑
- 攻克|打破日本垄断!售价7亿元的设备被中企攻克,已开始量产
- CPU|元宇宙+高端制造+人工智能!公司已投高科技超100亿,股价仅3元
- 分成|YY直播:2021年公会和主播分成超50亿
- 为了你的iPhone能磁吸充电,苹果又花了5亿买材料
- 百度|马化腾的一句话,腾讯市值一小时暴涨1400亿港币,马云格局还是小了
- 罗永浩|三年时间还掉六个亿的债,中年男人罗永浩的还债故事