據CertiK安全團隊監測,, Wiener DOGE項目於北京時間2022年4月24日下午4時33分被惡意利用,造成了3萬美元(折合人民幣約12.6萬)的損失。攻擊者利用WDODGE的收費機制和交換池之間的不一致,發起了攻擊。
事件發生的根本原因是:通過緊縮的代幣合約造成發送方的LP對沒有被排除在轉賬費用之外。因此,攻擊者能夠將LP對中的通貨緊縮代幣耗盡,進而導致貨幣對價格失衡。
而隨後於同一天接連發生了另外三起惡意利用:
同天下午6時20分,Last Kilometer項目被閃電貸攻擊利用,造成了26495美元(折合人民幣約17萬)的損失;
同天晚上9時45分,Medamon項目被閃存貸攻擊利用,造成3159美元(折合人民幣約2萬)的損失;
緊接著, PI-DAO項目被閃存貸攻擊利用,造成了6445(折合人民幣約4萬)美元的損失。
這一系列攻擊的攻擊者與攻擊方法,與同一天早些時候發生的Wiener DOGE相同。
Wiener DOGE攻擊流程
攻擊者通過閃電貸獲得了2900枚BNB。
攻擊者將2900枚BNB換成了6,638,066,501,83枚WDOGE
WdogE : 199,177,850,468
WBNB: 2978
LP的狀態:
將5,974,259,851,654枚WDOGE發送到LP,由於WDOGE比BNB多,所以LP現在處於不平衡狀態。
WDOGE : 5,178,624,112,169
WBNB : 2978
LP的狀態:
調用skim()函數,從LP中取回4,979,446,261,701枚WDOGE。由於攻擊者在調用skim()之前發送了大量的WDOGE,所以LP將支付大量的費用。這一操作清空了LP內的WDOGE的數量。
攻擊者還調用可sync()函數來更新LP內的儲備值。若干枚WDOGE和2978枚BNB的存在,造成了WDOGE的價格與WBNB相比異常昂貴。
5. 最後,攻擊者用剩下的WDOGE換回了2978枚BNB,償還了閃電貸,賺取了78枚BNB。
而其他幾個項目被攻擊的流程步驟也相似:
閃電貸取得WBNB,並用WBNB換取LP中的通縮代幣;
直接將通縮的代幣轉移到LP對上;
調用skim()函數,迫使LP對輸回通縮代幣;
由於轉讓費的存在,攻擊者會重複步驟2~3,將LP對中的通縮代幣耗盡;
通過LP對中的價格不平衡來獲取利潤。
合約漏洞分析
當用戶(或LP)轉移一定數量的WDOGE時,除了費用,還有4%的代幣將被銷毀。
因此,如果LP發送100枚WDOGE,其餘額將減少104枚WDOGE。
所以,LP應該被排除在費用和代幣銷毀之外。
資產損失
審計的作用
CertiK審計專家認為:如果同時對代幣和LP合約進行審計,這個漏洞就可能被發現。然而,如果只有代幣合約被審計,那麼交換機制將被視為一個外部依賴。而這種情況在審計過程中將會指出第三方依賴風險。具體為:如果是代幣合約,CertiK審計專家將會與項目方討論,確認是否需要除去LP對的手續費;如果是LP對方的合約,CertiK審計專家會提出通縮幣的討論,並且提醒項目方可能存在的風險。
作為區塊鏈安全領域的領軍者,CertiK致力於提高加密貨幣及DeFi的安全和透明等級。迄今為止,CertiK已獲得了3200家企業客戶的認可,保護了超過3110億美元的數字資產免受損失。 (CertiK中文社區)