安全分析:8月數字貨幣相關攻擊事件分析總結

買賣虛擬貨幣

「幣圈一天,人間一年」,「DeFi 一天,幣圈一年」。

近期的鏈圈幣圈,熱度已幾乎都被DeFi掠奪。

伴隨著專案的層出不窮,大量使用者的湧入,DeFi協議總鎖倉量已高達103.8億美元。

極高的投資收益吸引了大量幣民加入,而8月,更是流動性挖礦專案如火如荼的一個月。

從實驗性流動性挖礦專案Yam到目前仍舊具有極高話題度的SushiSwap,整個區塊鏈社羣都在持續討論著其中的鉅額利潤以及隱藏其下的安全隱患。

在這一個月中,大量新的挖礦專案出現,其中絕大多數專案都直接複製其他類似專案的程式碼,在未進行安全審計的情況下匆忙上線。因此導致了發現的智慧合約安全漏洞數量眾多而且性質類似。如今,確定一個專案是否可以投資的首要條件應該是檢查專案及其合約是否由著名安全團隊進行過專業審計並取得較高安全評價。

據CertiK安全技術團隊統計,8月份發生與區塊鏈相關的安全事件盤點如下:

1

8月11日,基於以太坊的代幣專案NUGS出現安全問題,其智慧合約中存在安全漏洞,致使其代幣系統出現鉅額通脹。由於該智慧合約的安全漏洞無法被修復,因此最終NUGS專案官方釋出公告決定放棄該專案,存入其中的代幣也無法被取出。

2

8月12日,流動性挖礦專案Yam爆出智慧合約漏洞,該漏洞將預留巨大數目的代幣,導致對專案進行治理所需要的代幣數目隨之增長,最終由於社羣沒有足夠的代幣,任何治理行為都無法進行。

3

8月14日,流動性挖礦專案Based存在智慧合約安全漏洞並遭到攻擊者攻擊,該專案中一號池智慧合約中函式被錯誤設定為可以被外部任意呼叫,造成其被外部攻擊者搶先初始化,導致一號池中任何質押行為都無法完成。

4

8月28日,Sushiswap智慧合約中被發現存在多個安全漏洞,該漏洞允許智慧合約擁有者在無任何社羣授權情況下,任意進行取款。同時,該合約還存在重入攻擊漏洞,會導致潛在惡意程式碼被執行多次。

5

8月31日,使用者由於使用存在漏洞的舊版本electrum錢包應用,導致1400枚比特幣被盜。

6

8月31日和9月1日,Sushiswap仿盤Yuno和Kimchi兩個專案智慧合約均被發現存在安全漏洞,該漏洞允許智慧合約擁有者無限增發專案對應代幣,可能導致專案中代幣產生巨大通脹。

列表如下:

序號

攻擊日期

事件型別

1

8月11日

智慧合約漏洞

2

8月12日

智慧合約漏洞

3

8月14日

智慧合約漏洞

4

8月28日

智慧合約漏洞

5

8月31日

錢包軟體漏洞

6

8月31日、9月1日

智慧合約漏洞

事件詳情

以下是8月安全典型事件的具體分析:

1

1號事件是一個非常典型的,由於邏輯實現上失誤而造成的漏洞。NUGS專案的商業實現模型是一個彩票抽獎的系統,彩票抽獎以輪為單位,在每一輪抽獎中,投資者可以向該輪獎池中存入資金。

經過一段時間後,NUGS智慧合約中的開獎函式可以被外部呼叫,從而確定本輪彩票抽獎的贏家。贏家獲得獎池獎金,而來自外部呼叫開獎函式的呼叫者也會獲得一小部分獎勵。該輪抽獎結束,獎池中數額清零,因此每一輪抽獎開始時,獎池內的初始數額應當為“零”。

然而NUGS智慧合約中存在一個關於獎池獎金初始數額的邏輯實現漏洞:當一輪抽獎結束後,獎池中數額未被清零,導致了下一輪抽獎開啟後,獎池中的初始數額為上一輪的總獎金。因此獎池中的獎金會越來越多,最終導致通脹、幣值飛快貶值。

2

2號事件發生在Yam流動性挖礦專案上,也是一個由於邏輯實現上的失誤導致的安全漏洞。

在Yam智慧合約中存在一個rebase函式,其目的是在確保代幣的價格穩定,而由於在程式碼層面的疏忽,對每一次rebase執行時,代幣總共供給量totalSupply的數值被錯誤的進行計算,導致totalSupply的數目只能持續增加,因此最終同樣導致了通脹發生。

以上兩個事件中的漏洞都是屬於邏輯實現層面出現的漏洞。邏輯實現上的漏洞雖然非常直觀,但依靠任何現有的自動檢測工具均無法檢查,需要依靠專業的安全審計和/或嚴謹的數學證明才能夠避免該類漏洞。

3

3號事件發生於流動性挖礦專案Based。其智慧合約在進行部署時,Based官方僅透過呼叫智慧合約中的renounceOwnership函式宣告瞭所有者,而並沒有對智慧合約初始化。而一名外部攻擊者在Based官方之前,搶先呼叫initialize函式對智慧合約進行了初始化。

這使得智慧合約的所有者和初始化的操作者不一致,最終任何質押行為都無法完成。

該安全漏洞是由“智慧合約自身呼叫安全風險”和“部署智慧合約風險”兩者同時影響產生的。對該種智慧合約的部署應該確保傳送部署智慧合約的交易和對智慧合約的初始化等操作交易的原子性(原子操作可以是一個步驟,也可以是多個操作步驟,但是其順序不可以被打亂,也不可以被切割而只執行其中的一部分),即該兩者交易應該相互關聯,確保沒有第三方利用時間差進行惡意攻擊操作。

4

6

4號和6號事件相同:存在多個智慧合約漏洞,其上線前均未進行安全審計,對於專案擁有者過大權利的問題,均缺乏相應社羣監管機制。

這兩個事件的主角專案分別是SushiSwap(4號事件)以及其仿盤Yuno和Kimchi(6號事件)。SushiSwap專案智慧合約中,智慧合約擁有者有權利在無監管的情況下,使用setMigrator函式任意修改migrator的值,然後透過呼叫migrator.migrate來呼叫任意智慧合約外部程式碼。該外部程式碼對於智慧合約本身是未知的,因此智慧合約擁有者可以透過該操作執行惡意程式碼。

Yuno和Kimchi專案中也存在著類似的漏洞:智慧合約擁有者有權利透過mint函式來進行無限制數量的鑄幣操作。

最初,該類漏洞的解決方法是將任何來自智慧合約擁有者的操作使用timelock智慧合約加入延遲鎖,SushiSwap、Yuno和Kimchi都透過該種方法為自身加入了48小時的操作延遲。其初衷是給予投資者48小時的視窗,對任何來自智慧合約擁有者的疑似惡意交易,都有足夠的時間進行撤資等操作。雖然SushiSwap專案中的Chef Nomi成功轉走的大筆代幣後來返還了,但最終SushiSwap專案還是採用了多簽名錢包來確保專案的去中心化。可以說,延遲鎖並沒有辦法根本解決智慧合約本身的漏洞。

5

5號事件是由於受害者使用了舊版本的Electrum錢包,攻擊者利用存在於舊版本中的軟體漏洞進行釣魚攻擊。

此軟體漏洞會對Electrum節點伺服器返回的交易錯誤資訊進行HTML渲染。攻擊者可以搭建一個惡意的節點,當該節點接收到來自使用者發起的交易請求時,讓使用者錢包彈出一個包含釣魚資訊的視窗,讓使用者去下載一個所謂的“錢包更新”。

而這個”新版錢包“實際上是一個包含惡意程式碼的假的錢包。一旦使用者將自己錢包匯入,該假錢包會將其中所有代幣轉移至攻擊者的錢包中。

安全建議

綜上所述,8月安全事件頻發,CertiK安全團隊提出以下建議:

●對於區塊鏈專案的安全風險不僅需要從程式碼漏洞層面觀察,同時也應該仔細瞭解專案的邏輯實現與其邏輯設計是否一致。

●區塊鏈專案需要為其整個部署流程規劃詳細的設計與實施流程,確保部署操作的原子性。

●面對區塊鏈專案智慧合約擁有者權利過大的問題,不應僅僅依靠外部強制機制來限制,更是應該從智慧合約程式碼實現以及社羣治理等多角度綜合,從而確保專案不會被任意一方濫用。

DeFi熱度持續上升,區塊鏈作為時代顛覆性的核心技術,也已在各個領域得到了廣泛的應用,隱藏在收益和利好之下的安全隱患也不應被忽視。

CertiK致力於構建區塊鏈健康安全生態,利用業內領先的技術解決區塊鏈與智慧合約的安全痛點。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;