北京時間2022年4月21日下午3時15分,CertiK審計團隊監測到ZEED項目被攻擊,造成了104萬美金(折合人民幣約673萬)的財產損失。被盜取資金被轉移至一合約中,而該合約具有自我銷毀功能,因此該操作無法逆轉,資金無法被追回。
①攻擊者合約從HO-SWAP LP收到662枚YEED代幣(ZEED項目的官方代幣)。
②這662枚YEED代幣被發送到BSC-USD-YEED。由於收費機制的存在,一些收費代幣也將被發送到3個LP對,分別是:BSC-HO-YEED 2;BSC-USD-YEED 2,BSC-ZEED-YEED 2。
③由於費用計算出錯,一些YEED代幣也將被錯誤地創建/發送到LP。
④從這一刻起,每個LP就處於不平衡狀態。在每個LP合約中,都有着與其他代幣相較過多的YEED代幣。
⑤然後,攻擊者將在每個LP上不斷循環調用skim(to:LP)函數。該函數是爲了重新調整LP內的兩種代幣的數量,將多余的代幣發送到to參數。由於攻擊者配置的目的地是LP本身,不平衡將不斷增加,更多的獎勵代幣將被創建。
每一次的轉移都會:
從一種LP發送YEED代幣到另外一種LP。
向LP發送因錯誤產生的YEED代幣獎勵
通過以上方式,攻擊者保持了LP內代幣的不平衡,並且每次都會增加LP內YEED代幣的數量。
比如,我們可以看到在BSC-ZEED-YEED 2 LP中,最初的YEED的數量是96個。
而當攻擊者調用skim(to:attacker_contract)以後,LP中的YEED余額爲368,560。
最後一次調用,則將368,560枚代幣發送給了攻擊者。
攻擊者對3個不同的貨幣對進行處理,總數爲87,479,473枚YEED代幣:
83,127,354 YEED來自BSC-USD-YEED LP對。
3,983,869 YEED來自BSC-HO-YEED LP對。
368,560 YEED來自BSC-ZEED-YEED LP對。
⑥然後,攻擊者進行多次互換,將其收益轉換爲BSC-USD。
攻擊者通過向LP對發送代幣,破壞了YEED項目內LP代幣的平衡。因此,任何人都可以調用skim()函數,從而把多余的代幣發送給用戶。
如果正確計算金額,則一切正常。然而,在最重要的發送獎勵步驟中,發送給每個接收者的獎勵是rewardFee。這意味着在此條件下,並不是獎勵獲得者理應獲取了獎勵費用x 1,而是在N次轉移過程中獲得了獎勵費用x N次。
比如,用戶A向用戶B發送了100個YEED,如果rewardFee是10。
用戶B收到90獎勵
LP BSC-USD-YEED 2收到10獎勵
LP BSC-ZEED-YEED 2收到10獎勵
LP BSC-HO-YEED 2收到10獎勵
這樣以來,就有20枚代幣被錯誤地憑空創建了。
而真正的YEED獎勵機制應該運營如下:
50%的獎勵費用發送到_balances[swapPair] (LP BSC-USD-YEED 2)
25%的獎勵費用發送到_balances[swapPairZeed](LP BSC-ZEED-YEED 2)。
25%的獎勵費用發送到_balances[swapPairHo] (LP BSC-HO-YEED 2)。
此次事件造成了104萬美金(折合人民幣約673萬)的損失。由於資金在合約中,而合約具有自我銷毀功能,所以該操作無法復原,即任何人都無法再取出這筆財產,包括攻擊者本身。通過審計,我們可以了解到發送到LP的代幣將破壞LP的平衡,並且審計也能發現獎勵計算機制的錯誤。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
標題:ZEED被盜百萬美元資產事件分析
地址:https://www.torrentbusiness.com/article/1298.html
標籤: