鏈聞消息,2021 年 9 月 12 日,Avalanche 上 Zabu Finance 項目遭受閃電貸攻擊,慢霧安全團隊針對此過程進行分析,具體攻擊步驟如下:

  1. 攻擊者首先創建兩個攻擊合約,隨後通過攻擊合約 1 在 Pangolin 將 WAVAX 兌換成 SPORE 代幣,並將獲得的 SPORE 代幣抵押至 ZABUFarm 合約中,爲後續獲取 ZABU 代幣獎勵做準備;
  2. 攻擊者通過攻擊合約 2 從 Pangolin 閃電貸借出 SPORE 代幣,隨後開始不斷的使用 SPORE 代幣在 ZABUFarm 合約中進行「抵押 / 提現」操作。由於 SPORE 代幣在轉賬過程中需要收取一定的手續費 (SPORE 合約收取),而 ZABUFarm 合約實際接收到的 SPORE 代幣數量是小於攻擊者傳入的抵押數量的。分析中慢霧注意到 ZABUFarm 合約在用戶抵押時會直接記錄用戶傳入的抵押數量,而不是記錄合約實際收到的代幣數量,但 ZABUFarm 合約在用戶提現時允許用戶全部提取用戶抵押時合約記錄的抵押數量。這就導致了攻擊者在抵押時 ZABUFarm 合約實際接收到的 SPORE 代幣數量小於攻擊者在提現時 ZABUFarm 合約轉出給攻擊者的代幣數量;
  3. 攻擊者正是利用了 ZABUFarm 合約與 SPORE 代幣兼容性問題導致的記賬缺陷,從而不斷通過「抵押 / 提現」操作將 ZABUFarm 合約中的 SPORE 資金消耗至一個極低的數值。而 ZABUFarm 合約的抵押獎勵正是通過累積的區塊獎勵除合約中抵押的 SPORE 代幣總量參與計算的,因此當 ZABUFarm 合約中的 SPORE 代幣總量降低到一個極低的數值時無疑會計算出一個極大的獎勵數值;
  4. 攻擊者通過先前已在 ZABUFarm 中有進行抵押的攻擊合約 1 獲取了大量的 ZABU 代幣獎勵,隨後便對 ZABU 代幣進行了拋售;

此次攻擊是由於 Zabu Finance 的抵押模型與 SPORE 代幣不兼容導致的,此類問題導致的攻擊已經發生的多起,慢霧安全團隊建議項目抵押模型在對接通縮型代幣時應記錄用戶在轉賬前後合約實際的代幣變化,而不是依賴於用戶傳入的抵押代幣數量。

參考:
攻擊合約 1:0x0e65Fb2c02C72E9a2e32Cc42837df7E46219F400
攻擊合約 2:0x5c9AD7b877F06e751Ee006A3F27546757BBE53Dd
抵押交易:0xf76b37ed46c218d4b791e9769b139c3e1f43d1888f37ff0a647c7a8bb58528fb
攻擊交易:0x0d65ce5c7a0c072b14ec5da08488d07778f334a7ddb6b7a30df97f274f3e1eb3
獲利交易:0x8b3042e55a63f39bb388240a089cf4d51e59abe7cb0bff303c6dbb19eaeb75ac