
前言
前言知道創宇區塊鏈安全實驗室一級標題
知道創宇區塊鏈安全實驗室
分析
該協議在BSC 和Ether 上都被攻擊了,下面的圖分別是兩鏈上的攻擊事件交易哈希。本次攻擊事件主要原因是swapToSwap() 函數中path 地址可被攻擊者控制。
基礎信息
二級標題
基礎信息
二級標題
BSC: 0x818e2013dd7d9bf4547aaabf6b617c1262578bc7
Ether: 0xf2bda964ec2d2fcb1610c886ed4831bf58f64948
二級標題
BSC:0x77cf448ceaf8f66e06d1537ef83218725670d3a509583ea0d161533fda56c063
Ether:0x1e769a59a5a9dabec0cb7f21a3e346f55ae1972bb18ae5eeacdaa0bc3424abd2
攻擊流程
攻擊合約:0x9a843bb125a3c03f496cb44653741f2cef82f445
攻擊流程
漏洞合約地址:
攻擊流程
攻擊tx:
攻擊流程
1.攻擊者0x73b3 調用事先創建好的攻擊合約0x9a84 從DVM 中閃電貸借出915.842 WBNB,接著將其中的116.81 WBNB 兌換成115.65 fBNB。
2.攻擊者0x73b3 通過攻擊合約0x9a84 創建了10 個合約以便後面利用漏洞。
3.攻擊者0x73b3 將第一步中兌換得到的fBNB 通過函數depositInternal() 抵押到FEGexPRO 合約0x818e 中。
4.攻擊者0x73b3 調用depositInternal() 和swapToSwap() 函數使得FEGexPRO 合約0x818e 授權fBNB 給第二步創建好的合約,重複多次調用授權fBNB 給創建的10 個合約。
6、攻擊者0x73b3 又從PancakePair 的LP 交易對0x2aa7 中藉出31217683882286.007 的FEG 和423 WBNB 並重複上面的第三步、第四步和第五步,最終獲得。
後續
細節
後續
通過調用swapToSwap() 函數傳入惡意的path 地址參數,當前合約代幣餘額並不會受到影響,IERC20(address(Main)).approve(address(path), amt); 這樣就能給path 地址進行當前合約fBNB 的授權。
後續
攻擊者通過反複調用depositInternal() 和swapToSwap()就可以讓FEGexPRO 合約將fBNB 反复授權給攻擊者傳入的惡意合約path 地址。其他地址轉走的代幣數量就是攻擊者第一次質押的代幣數量減去手續費的數量。通過查看Debugger 中的信息,我們可以發現傳入的path 地址參數都是攻擊流程中創建的合約地址。
BSC:0xe956da324e16cb84acec1a43445fc2adbcdeb0e5635af6e40234179857858f82
Ether:0c0031514e222bf2f9f1a57a4af652494f08ec6e401b6ae5b4761d3b41e266a59
在16 日的攻擊之後,次日攻擊者又進行了一次攻擊,但更換了攻擊地址。
總結
攻擊合約:0xf02b075f514c34df0c3d5cb7ebadf50d74a6fb17