安全丨 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 月數字貨幣市場發生了哪些攻擊事件?

以下是 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 月數字貨幣市場發生了哪些攻擊事件?

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

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

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

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

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

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

安全丨 8 月數字貨幣市場發生了哪些攻擊事件?

安全丨 8 月數字貨幣市場發生了哪些攻擊事件?

安全丨 8 月數字貨幣市場發生了哪些攻擊事件?

來源鏈接:mp.weixin.qq.com