PANews 5月25日消息,幣安智能鏈(BSC)DeFi 項目AutoShark Finance 遭到攻擊,導致代幣價格閃崩。慢霧安全團隊對此次事件進行了跟進分析,慢霧表示,由於AutoShark 策略池的機制,攻擊者需要事先存入一定數量的LP 代幣到策略池中,為後續攻擊做準備,所以整個攻擊其實分成了2 步,這裡主要分析的是第2 筆的攻擊交易。
攻擊步驟如下:
1. 攻擊者從Pancake 的WBNB/BUSD 交易對中藉出大量WBNB;
2. 將第1 步借出的全部WBNB 中的一半通過Panther 的SHARK/WBNB 交易對兌換出大量的SHARK,同時池中WBNB 的數量增多;
3. 將第1 步和第2 步的WBNB 和SHARK 打入到SharkMinter 中,為後續攻擊做準備;
4. 調用AutoShark 項目中的WBNB/SHARK 策略池中的getReward 函數,該函數會根據用戶獲利的資金從中抽出一部分手續費,作為貢獻值給用戶獎勵SHARK 代幣,這部分操作在SharkMinter 合約中進行操作;
5. SharkMinter 合約在收到用戶收益的LP 手續費之後,會將LP 重新拆成對應的WBNB 和SHARK,重新加入到Panther 的WBNB/SHARK 交易池中;
6. 由於第3 步攻擊者已經事先將對應的代幣打入到SharkMinter 合約中,SharkMinter 合約在移除流動性後再添加流動性的時候,使用的是SharkMinter 合約本身的WBNB 和SHARK 餘額進行添加,這部分餘額包含攻擊者在第3 步打入SharkMinter 的餘額,導致最後合約獲取的添加流動性的餘額是錯誤的,也就是說SharkMinter 合約誤以為攻擊者打入了巨量的手續費到合約中;
7. SharkMinter 合約在獲取到手續費的數量後,會通過tvlInWBNB 函數計算這部分手續費的價值,然後根據手續費的價值鑄幣SHARK 代幣給用戶。但是在計算LP 價值的時候,使用的是Panther WBNB/SHARK 池的WBNB 實時數量除以LP 總量來計算LP 能兌換多少WBNB。但是由於在第2 步中,Panther 池中WBNB 的數量已經非常多,導致計算出來的LP 的價值非常高;
8. 在LP 價值錯誤和手續費獲取數量錯誤的情況下,SharkMinter 合約最後在計算攻擊者的貢獻的時候計算出了一個非常大的值,導致SharkMinter 合約給攻擊者鑄出了大量的SHARK 代幣;
9. 攻擊者後續通過賣出SHARK 代幣來換出WBNB,償還閃電貸。然後獲利離開。