WEB3安全:FEG攻击详解
战前叠甲:还是那句话,如果分析的有问题就狠狠喷,请多指教
2024年12月29日发生了一起有关FEG跨链桥的攻击

https://etherscan.io/tx/0x6c3cf48e9c8b22f60fc2b702b03f93926ee8624639b100fe851b757947e61759 (攻击交易)
根本原因是验证合约 0x3A37 中的跨链消息时出现逻辑错误根本原因是验证合约 0x3A37 中的跨链消息时出现逻辑错误
攻击者通过从BSC向ETH/Base发送跨链消息来发起攻击。先进行了两轮消息的传递:
1. 创建合法消息(https://app.blocksec.com/explorer/tx/eth/0x039d16382474370361293b2ea11c4b782a343aced0bd4831f996bf160f4365a0 )将ETH提取到目标管理地址。此操作将攻击者控制的源地址(0xe7ba8de3adf9d6cc12b8ceeb4a654ee1a276a03c)添加到管理员列表中。
2.伪造一条假提现消息(https://app.blocksec.com/explorer/tx/eth/0xaac5c0465103d01c9546c622dad64ac70f550f32c9f1e05a77e138a580432335 ) 。该消息将允许攻击者在目标链上提取 FEG,并且由于步骤 #1 中的错误处理,该伪造消息通过了验证。然后,攻击者只需从 SmartBridge 合约(0x8d5c8d2856d518a5edc7473a3127341492b56243)调用withdraw()即可耗尽桥上的所有代币。
我觉得我们可以把所有在攻击中已知的地址整理出来:
1.0xCB96ddE53F43035f7395D8DbdB652987F7630b3c 攻击者
2.0xEf7Bd1543bDAcAdD7e42822e3F15Dd0af0410fDa 攻击者合约
4.0x3A3709b8c67270A84Fe96291B7E384044160C6b1 验证合约(漏洞合约)
问题的根源是在第一次消息发送中,我们去看下具体的信息发送流程:

我们可以看到其中最关键的就是这个receiveWormholeMessages方法我们可以看到其中最关键的就是这个receiveWormholeMessages方法
我们看下c6b1的receiveWormholeMessages方法到底发生了什么
没验证合约,那我们只能通过字节码反编译了,我们跑一遍这个方法:


我们可以发现验证合约内验证逻辑有问题,根据传入的管理员参数把0b3c攻击者地址设置为了白名单地址。在if(v19)那里当跨链数据中的地址为自定义管理员的时候 仍何人都会被全局设置为跨链合约的白名单地址

之后正是因为这个问题导致第二笔虚假记录被错误记录

然后直接正常调用提现逻辑即可将错误记录的资金盗走



浙公网安备 33010602011771号