事件背景
零時科技區塊鏈安全情報平台監控到消息,北京時間2023年5月28日,Arbitrum鏈上Jimbos Protocol項目受到黑客攻擊,攻擊者獲利約776 萬美元。
攻擊者地址為:
0x102be4bccc2696c35fd5f5bfe54c1dfba416a741
被盜資金通過跨鏈轉移至ETH鏈後轉移至地址:
0x5F3591e2921D5c9291F5b224E909aB978A22Ba7E
零時科技安全團隊及時對此安全事件進行分析。
攻擊步驟
1. 攻擊者通過閃電貸借出10,000 WETH
2. 攻擊者在交易池中使用WETH 兌換獲得大量JIMBO 代幣
3. 攻擊者向JimboController 合約轉移100 JIMBO 代幣
4. 攻擊者調用shift 函數更新交易池,將合約中WETH與JIMBO 代幣轉移至交易池中,此時JIMBO 代幣價格被惡意拉高
5. 攻擊者使用更新後的價格進行兌換
6. 攻擊者重複上述步驟,幾乎將池子掏空後獲利離場。
此筆攻擊中攻擊者共獲利約4,048 ETH,約為7,763,360 美元
核心漏洞
JimboController合約中shift()函數可以更新交易池流動性,但是此函數中沒有限制調用者身份,任何人都可以調用此函數執行更新交易池操作,重新添加流動性時會將合約中的所有餘額轉移至交易池,並且重新添加流動性時沒有對代幣價格進行判斷,因此攻擊者能夠將代幣價格惡意拉高後通過調用函數使得JimboController合約接盤,從而獲利。
資金來源及流向
- 資金來源
攻擊地址初始手續費通過跨鏈轉入
- 資金流向
攻擊者將獲利資金通過跨鏈合約轉移至ETH鏈對應地址,之後將資金轉移至地址0x5F3591e2921D5c9291F5b224E909aB978A22Ba7E,目前資金仍在此地址未移動。
總結及建議
此次攻擊是由於代幣價格存在滑點,並且合約中在更新交易池函數中沒有用戶權限並且沒有對於價格滑點進行判斷,導致攻擊者能夠惡意操縱代幣價格,並且將合約中ETH也轉入交易池後通過代幣兌換獲利。
安全建議
- 建議對合約中更新交易池函數設置用戶權限
- 建議在更新交易池時增加對於代幣價格判斷的條件,避免出現滑點過大時幣價被惡意操縱
- 建議項目方上線前進行多次審計,避免出現審計步驟缺失