2023年4月26日,據Beosin-Eagle Eye態勢感知平台消息,Merlin Dex發生安全事件, USDC-WETH流動性池的資金已全部被提取,攻擊者獲利共約180萬美金。據了解,Merlin Dex 是一個去中心化交易所,關於本次安全事件,Beosin安全團隊第一時間對事件進行了分析,結果如下。
事件相關信息
我們以其中一筆交易為例進行分析
攻擊交易
0xf21bedfb0e40bc4e98fd89d6b2bdaf82f0c452039452ca71f2cac9d8fea29ab2
攻擊者地址
0xc0D6987d10430292A3ca994dd7A31E461eb28182
0x2744d62a1e9ab975f4d77fe52e16206464ea79b7
被攻擊合約
0x82cf66e9a45Df1CD3837cF623F7E73C1Ae6DFf1e(USDC-WETH池子)
攻擊流程
1.第一步,池子創建者(0xc0D6987d10430292A3ca994dd7A31E461eb28182)創建了工廠合約(0x63E6fdAdb86Ea26f917496bEEEAEa4efb319229F),在初始化時Feeto地址已經被設為(0xc0D6987d10430292A3ca994dd7A31E461eb28182)。
2.攻擊者通過工廠合約部署USDC-WETH池子(0x82cf66e9a45Df1CD3837cF623F7E73C1Ae6DFf1e),池子初始化時便將池子中的USDC和WETH最大化授權給了合約工廠的Feeto地址,可以看到這存在明顯的中心化風險。
3. 於是在有了最大授權的情況下,攻擊者轉走了該池子中的所有代幣。
4. 值得注意的是,在攻擊發生之前,工廠合約的Owner和Feeto地址曾有過改動,但這一步並不是攻擊所必須的,猜測可能是攻擊者為了迷惑他人所做的操作。
最後可以看到USDC-WETH流動性池的資金已全部被提取,攻擊者獲利共約180萬美金。
漏洞分析
Beosin安全團隊分析本次攻擊主要利用了pair合約的中心化問題,在初始化時最大化授權了工廠合約中的Feeto地址,而導致池子中的資金隨時可能被初始化時設定的Feeto地址提取走。
資金追踪
攻擊者調用了transferFrom函數從池子轉出了811K的USDC給攻擊者地址1(0x2744d62a1e9ab975f4d77fe52e16206464ea79b7)。攻擊者地址2(0xcE4ee0E01bb729C1c5d6D2327BB0F036fA2cE7E2)從token1合約(WETH)提取了435.2的eth,通過Anyswap跨鏈後轉到以太坊地址(0xa7D481944730a88B862eB57248Cb1B2C8aa358Ad)和地址(0x0b8a3ef6307049aa0ff215720ab1fc885007393d)上,共獲利約180萬美元。
截止發文時, Beosin KYT反洗錢分析平台發現目前被盜資金仍存放在上述攻擊者的兩個以太坊主網地址上,Beosin安全團隊將持續對被盜資金進行監追踪。
總結
針對本次事件,Beosin安全團隊建議,項目方應該使用多簽錢包或DAO治理來管理具有重要權限的地址,用戶在進行項目交互時也要多多了解此項目是否涉及風險。