0x1 事件背景
零時科技區塊鏈安全情報平台監控到消息,北京時間2022年9月29日,BXH合約遭到黑客攻擊,損失超40,085 BUSD, 零時科技安全團隊及時對此安全事件進行分析。
0x2 攻擊信息
- 攻擊者地址:
0x81c63d821b7cdf70c61009a81fef8db5949ac0c9
- 攻擊者合約地址:
0x4e77df7b9cdcecec4115e59546f3eacba095a89f
- 被攻擊合約地址:
0x27539b1dee647b38e1b987c41c5336b1a8dce663
0x3 攻擊步驟
1. 調用deposit()函數向合約轉移5,582 VUSDT
2. 攻擊者通過閃電貸借出3,178,800 BUSD
3. 將3,148,800 BUSD 兌換為148,851 BXHToken
4. 向被攻擊合約轉移200BUSD
5. 調用depositIToken函數中getITokenBonusAmount()函數,計算得到40,085 BUSD獎勵
6. 將兌換得到的BXHToken 兌換為BUSD 並歸還閃電貸
0x4 漏洞核心
攻擊者通過閃電貸借出大量BUSD,兌換為BXHToken,使得池子中BUSD 瞬間增大,在計算獲得的獎勵時由於會與BUSD數量做乘法,使得獲得獎勵也會成倍增加。
0x5 資金流向
兌換為BNB 轉移至混幣平台
0x6 總結及建議
此次攻擊主要原因是在計算獎勵時會與池子中BUSD的數量相乘,當池子中USDT數量增加時,獲得的獎勵相應增加。攻擊者通過閃電貸向池子中轉移大量BUSD,使得計算出的獎勵增加從而獲利。
安全建議
- 建議計算中涉及數值引用及乘除法計算時詳細檢查,避免出現計算數值受引用數值較大影響的情況發生。
- 建議項目方上線前進行多次審計,避免出現審計步驟缺失。