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 验证合约(漏洞合约)

问题的根源是在第一次消息发送中,我们去看下具体的信息发送流程:

image

我们可以看到其中最关键的就是这个receiveWormholeMessages方法我们可以看到其中最关键的就是这个receiveWormholeMessages方法

我们看下c6b1的receiveWormholeMessages方法到底发生了什么

没验证合约,那我们只能通过字节码反编译了,我们跑一遍这个方法:

image

image

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

image

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

image

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

image
image

因为涉及到多链,在bsc,bases也有相同攻击操作

共造成损失1M$ 这还是经过审计的合约,各位一定要检查合约逻辑以及权限验证

无论如何,新年快乐~!加油

posted @ 2025-01-02 16:56  江郡梧桐长青  阅读(63)  评论(0)    收藏  举报