首發 | 2020年區塊鏈安全態勢感知報告
本文由國家互聯網應急中心主編,授權金色財經首發。
編委會
主編:國家互聯網應急中心
聯合編制:成都鏈安科技有限公司
北京長亭科技有限公司
蘇州鏈原信息科技有限公司
杭州派盾信安科技有限公司
天融信科技集團股份有限公司
北京知道創宇信息技術股份有限公司
杭州安恆信息技術股份有限公司
北京衆享比特科技有限公司
真相網絡科技(北京)有限公司
目錄
一、 2020年區塊鏈安全狀況綜述
1. 2020年區塊鏈安全狀況
2. 2020年區塊鏈安全事件監測情況
2.1. 公鏈安全事件發展趨勢
2.2. 智能合約安全事件發展趨勢
2.3. 外圍系統安全事件發展趨勢
二、 區塊鏈重大突發安全事件論述
1. DeFi相關事件
2. 詐騙/釣魚相關事件
3. 勒索軟件相關事件
4. 交易平臺相關事件
5. 數字錢包相關事件
6. 公鏈相關事件
7. 其它相關事件
三、 攻擊原理分析
1. 合約漏洞
2. 業務邏輯缺陷
3. DDoS攻擊
4. 51%算力攻擊
四、 CNVD區塊鏈漏洞例舉
1. 高危漏洞
2. 中危漏洞
五、 其他安全問題
1. 彈性供應漏洞
2. 清算漏洞
3. 時間鎖定漏洞
六、 對策建議
參考文獻
一、2020年區塊鏈安全狀況綜述
2020年區塊鏈安全狀況
隨着區塊鏈技術的快速發展,以及項目與應用的數量不斷增多,與之而來的相關安全事件的發生也變得頻繁。據國家區塊鏈漏洞庫不完全統計顯示,2020年度區塊鏈領域發生的安全事件數量達555起,分別包括DeFi安全事件103起、詐騙/釣魚事件204起、勒索軟件事件143起、交易平臺安全事件31起、數字錢包安全事件41起、公鏈安全事件17起以及其它安全事件16起,相比於2019年增長了近240%;所造成的經濟損失高達179億美元,環比2019年增長了130%。綜上所述,全年區塊鏈安全威脅風險等級為高,亟需各方高度重視。本章將從宏觀角度對全球區塊鏈安全態勢進行分析。
2020年區塊鏈安全事件監測情況
1.公鏈安全事件發展趨勢
2020年區塊鏈公鏈安全事件主要有17起,發生月份主要集中在7月、8月以及11月,其中11月安全事件發生數量最多,有4件。
圖 1-2-1 全年區塊鏈公鏈安全事件統計圖
2.智能合約安全事件發展趨勢
2020 年區塊鏈智能合約安全事件共 53 件,主要集中在 4 月、7 月、8 月、9 月、10 月以及 11 月,其中 11 月安 全事件發生數量最多,有 13 件。
圖 1-2-2 全年區塊鏈智能合約安全事件統計圖
3. 外圍系統安全事件發展趨勢
外圍系統包括數字資產交易平臺、中心化錢包、去中 心化錢包、礦池/礦場、礦機這五部分。2020 年全年區塊 鏈外圍系統安全事件共 183 起,主要集中在 5 月、6 月、 9 月以及 10 月,其中 5 月份安全事件發生數量最多,有 38 件。
圖 1-2-3 全年區塊鏈外圍安全事件數量統計圖
二、區塊鏈重大突發安全事件論述
本章將針對六個安全事件高發領域進行重點分析。全年發生的安全事件多集中在 DeFi 領域,應用數量多,安 全技術不夠完善,使用者安全意識差等都是導致 DeFi 領 域安全事件頻發的原因。下面本文將對 DeFi、詐騙/釣魚、 勒索軟件、數字資產交易平臺、錢包、公鏈和其它等領域 進行討論並重點分析各領域的重大安全事件。
1.DeFi 相關事件
2020 年,據國家區塊鏈漏洞庫監測,DeFi 安全事件共 發生 103 起,集中在 7 月、8 月、9 月以及 11 月,主要因 為 DeFi 在 2020 年下半年开始有大量項目以及應用產生, 而隨着項目以及應用增多,導致發生的安全事件顯著增 多,其中 11 月安全事件發生數量最多,有 25 件。
圖 2-1-1 全年 DeFi 安全事件數量統計圖
智能合約還處於發展初期,相關業務邏輯的設計復雜、 代碼實現不嚴謹、以及協議的靈活可組合性帶來了許多潛 在的風險。目前智能合約正被迅速應用到各類 DeFi 項目中,DeFi 已然成為智能合約最大的應用場景。智能合約 的應用加快了去中心化金融的發展進程,但是由於代碼开 源相互引用復制、功能繁多、運用靈活、开發者水平參差 不齊等特點,DeFi 項目中各類智能合約安全事件頻發, 再加上大量虛擬數字資產存放在 DeFi 項目裏面,使 DeFi 成為了黑客攻擊的重點目標。
閃電貸本身是 DeFi 領域的創新,允許用戶在無任何抵 押的情況下從中借出任何數量的可用資產,由於其無抵押 的性質,使其成為很多黑客實施攻擊的本金。 如果該功能被黑客加以利用,就將導致安全事件的發生。黑客可以利用閃電貸借出高額資金,在某些平臺上進行虛擬資產兌換,由於其數額巨大,致使平臺上虛擬資產 價格異常變動,之後再將其資金贖回,使其虛擬資產價格 恢復正常,攻擊者在這來回變動的價格基礎上,從中進行 巨額套利。
本文通過從攻擊方法、造成的損失和組合性風險 3 個 方面,挑選出 6 個具有代表性的攻擊案例。前 3 個案例攻 擊者通過利用閃電貸,操縱市場價格來進行套利,後 3 個案例是通過重入漏洞對項目進行攻擊,下面本文將介紹黑 客具體是如何發起攻擊並最終獲利的。(該分析報告僅供 技術交流,請勿採用以下方法進行操作,否則後果自負)。
(1) bZx 協議攻擊事件北京時間 2020 年 02 月 15 日,bZx 協議遭受到第一次 攻擊,攻擊者獲利大約 355,880 美元,項目方暫停除了借貸外的其他功能。北京時間 2 月 18 日,bZx 協議再次遭 到黑客攻擊,攻擊者通過控制預言機上虛擬資產價格的方 式從中獲利。下面本文對第二次攻擊進行簡單分析介紹。 根據交易記錄顯示,首先攻擊者通過閃電貸貸入了 7500 個 WETH,作為攻擊的啓動資金,如圖 2-1-2 所示。
然後,攻擊者拿出 540 個 WETH 來兌換 sUSD,總共兌換 了 92419.7 個 sUSD,如圖 2-1-3。
圖 2-1-3 交易流程
通過本次兌換,使得 sUSD 的價格在 Uniswap 上飆升, 接下來,攻擊者以 20 個 WETH 為一組,進行了多次的 sUSD 兌換,如圖 2-1-4 所示。
圖 2-1-4 交易流程
而後,攻擊者又從Synthetix上購买了 943837.58 個 sUSD,如圖 2-1-5,此時,攻擊者手中存在大量 sUSD,sUSD 的價格畸高。
圖 2-1-5 交易流程
最後,攻擊者將兌換來的 1099841.39 個 sUSD 通過 bZx 全部兌換為 WETH,共計兌換 6796 個 WETH。
圖 2-1-6 交易流程圖 2-1-7 交易流程
加上之前剩余的 WETH,攻擊者共有 9878 個 WETH;在 歸還完借來的7500WETH以後,攻擊者共獲利2378個WETH。 整個攻擊流程如圖 2-1-8 所示。
圖 2-1-8 攻擊過程圖
(2) Harvest Finance 攻擊事件
北京時間 2020 年 10 月 26 日,Harvest Finance 遭受 閃電貸攻擊,該攻擊事件共造成 2400 萬美元的損失。本 次攻擊是由於黑客控制預言機上數字貨幣價格導致的。 攻擊者首先從閃電貸 UniswapV2 貸出 1800 多萬 USDT 和 5000 萬 USDC,並將 USDT 通過 Curve 兌換成 USDC,如 圖 2-1-9。
圖 2-1-9 交易流程
接下來黑客再向 Harvest 中存入 5000 萬的 USDC,由於 上一步 USDT 兌換 USDC 的操作,使得 Curve y 池中 USDC 價格上升。與此同時,黑客將獲得 Harvest 所鑄 fUSDC, fUSDC 的價值將高於當時存入的 5000 萬,如圖 2-1-10。
圖 2-1-10 交易流程
接下來,黑客再次通過 Curve,使用之前兌換的 USDC 將 USDT 贖回,並將 USDC 的價格拉回了正常水平。
圖 2-1-11 交易流程
最後,黑客將獲得的 fUSDC 全部兌換回 USDC,由圖可 以看出,扣除手續費後,黑客最終獲得 50,298,684 個 USDC,總共獲利近 30 萬 USDC,如圖 2-1-12 所示。
圖 2-1-12 交易流程
在這之後,黑客利用該攻擊方式進行多次攻擊。
圖 2-1-13 交易流程
最終通過該攻擊手法,黑客獲利超 2400 萬美元。
(3) Value DeFi 協議攻擊事件
北京時間 2020 年 11 月 15 日,Value DeFi 協議遭受閃 電貸攻擊,本次攻擊是由於黑客操控 DAI/USDC/USD 池中 的價格引發的。
首先,攻擊者通過閃電貸貸出 80000ETH 以備攻擊使用。 其次,攻擊者先通過 Uniswap V2 兌換出 116,000,000 個 DAI 與 31,000,000 個 USDT,如圖 2-1-14。
圖 2-1-14 交易流程
再 次 , 攻 擊 者 將 2500 萬 DAI 充 值 進 ValueMultiVaultBank 合約,如圖 2-1-15,計算鑄幣 時會將 DAI 轉換為 3CRV,此處鑄了 2495.6 萬的 3CRV,並 且攻擊者獲得與之等價的 mvUSD。
圖 2-1-15 交易流程
此時,攻擊者將剩下的 9100 萬 DAI 和 3100 萬 USDT 通 過 Curve 兌 換 成 USDC , 如 圖 2-1-16 , 這 將 導 致 DAI/USDC/USD 池中 USDC 價格升高。
圖 2-1-16 交易流程
完成兌換後,攻擊者利用 mvUSD 提出 3CRV,由於上一 步的操作使得 USDC/3CRV 的值擡高,本次兌換將兌換出高 於之前所鑄的 2500 萬 3CRV,本次兌換獲得 3309 萬 3CRV, 如圖 2-1-17。
圖 2-1-17 交易流程
最後,攻擊者緊接着通過 Curve 將 USDT 和 DAI 贖回, 並將 3CRV 兌換成 DAI,此次將兌換超 3300 萬的 DAI,如 圖 2-1-19,相比於之前存入的 2500 萬 DAI 攻擊者共獲利 800 萬 DAI。
圖 2-1-18 交易流程
圖 2-1-19 交易流程
(4) Pickle Finance 被攻擊事件
北京時間 11 月 22 日,DeFi 項目 Pickle Finance 遭到 黑客攻擊,本次攻擊事件是由於重入漏洞導致的,損失金 額高達 2000 萬美元。
經國家區塊鏈漏洞庫國家區塊鏈漏洞庫技術專家團隊 分析 ,合約漏 洞 存 在 於 ControllerV4 合 約 中 的 swapExactJarForJar 函數。從代碼中可以看到,該函數共傳入了六個參數;前四個參數攻擊者分別可控, _fromJar、_toJar、_fromJarAmount、_toJarMinAmount, 通過可控函數,攻擊者可以傳入非法參數進行攻擊。如圖 2-1-20。
圖 2-1-20 合約代碼
攻 擊 者 首 先 將 自 己 的 合 約 地 址 填 入 _fromJar 與 _toJar,並將_fromJarAmount 的值設為被攻擊合約的账 戶余額,約 2000 萬。函數首先會取出_fromJar 與_toJar 的 token 地址,由於該參數被攻擊者控制,攻擊者可以調 用_fromJar 的 safeTransferFrom 函數,將數值 2000 萬 作為參數傳入合約,如圖 2-1-21。
圖 2-1-21 合約代碼
隨後,程序判斷了合約中的 DAI 數量是否能達到攻擊 者的兌換要求;如果不足,則通過其他方式兌換來補足 DAI 的差值,如圖 2-1-22。
圖 2-1-22 合約代碼
最後,程序將账戶中的 DAI 轉移到攻擊者账戶上,攻 擊者通過此攻擊方法獲利。如圖 2-1-23。
圖 2-1-23 合約代碼
(5) Lendf.Me 項目被攻擊事件
北京時間 4 月 19 日,DeFi 項目 Lendf.Me 遭到黑客重 入攻擊,攻擊者不間斷的利用合約重入漏洞對其發起攻 擊,從而使自己的余額持續翻倍,最後掏空整個 Lendf.Me 的账戶。經分析,該漏洞存在於 Lendf.Me 合約中 supply 函數。該漏洞導致黑客可以在 Lendf.Me 账戶中余額不變 的情況下將余額取出。接下來從代碼層面來分析本次攻擊 事件發生的根本原因以及攻擊流程。
首先瀏覽整個 supply 函數代碼邏輯,可以發現該函數 流 程 首 先 獲 取 了 用 戶 當 前 的 账 戶 余 額 並 保 存 在localResults.userSupplyCurrent 變 量 中 , 緊 接 着 , supply函數將用戶當前账戶余額與本次傳入的參數相加, 得到了用戶本次調用 supply 函數後最新余額值,並放在 localResults.userSupplyUpdated 變量中,如圖 2-1-24。
圖 2-1-24 合約代碼
接下來 supply 函數調用了 doTransferln 函數,該函 數會調用到用戶的鉤子函數 tokensToSend,如圖 2-1-25。
圖 2-1-25 合約代碼
此時,攻擊者在自身鉤子函數中,通過調用 Lendf.Me 合約中的 withdraw 函數,取出了自己的账戶余額。 而程序回到 Lendf.Me 合約繼續執行,在函數結尾處更 新用戶余額,如圖 2-1-26。
圖 2-1-26
合約代碼 由於之前程序已將攻擊者最新余額賦值給了臨時變 量,所以此時程序所用數據是攻擊者取出余額之前的數 值,而並非當前最新余額值。因此,該合約執行完畢後, 攻擊者余額並未減少,從而達到了竊取資產的目的。整個 攻擊過程如圖 2-1-27 所示。
圖 2-1-27 攻擊過程圖
(6) OUSD 遭“經典重入攻擊”事件
在本次攻擊中,首先,攻擊者通過 dYdX 閃電貸貸出 7 萬枚 ETH,並將 ETH 兌換成了相應的 USDT 和 DAI。
其次,攻擊者向 Vault 中轉入 750 萬的 USDT,從而使 自己的資產在 Vault 中佔比達到 50%以上。
接下來,攻擊者調用合約中的 mintMultiple()函數, 並將 2,050 萬枚 DAI 與惡意合約中的虛假參數傳入,鑄幣 函數接收到 2,050 萬枚 DAI,但是在訪問另一個參數時其 實調用的是攻擊者的惡意合約,為了觸發 rebase(),攻 擊者在攻擊合約中再次存入 2,000 枚 USDT。正常合約在 轉账之後,會進行結算,更新 Vault 總價格,然後通過 rebase()進行分配,但此時合約被劫持,還未將這 2,050 萬的 DAI 算入 Vault 總價格,所以在進行 rebase()的時 候,會將這 2,050 萬枚 DAI 全部當作收益進行分配。
由於攻擊者在 Vault 中佔比超過 50%,所以攻擊者會在 沒有任何付出的情況下分配到超 1,025 萬的 DAI;之後合 約正常執行,攻擊者又獲得由 oUSD.mint 所鑄的 OUSD, 其價格與存入 DAI 相等。 最後,攻擊者贖回之前存入的資金,並將獲得的資金 歸還閃電貸。最終,攻擊者獲利大約 33,27 萬枚 OUSD。 攻擊過程如下圖 2-1-28 所示。
圖 2-1-28 攻擊過程圖
2.詐騙/釣魚相關事件
2020 年,據國家區塊鏈漏洞庫監測,詐騙/釣魚安全事 件共發生 204 起,發生月份主要集中在 4 月、5 月以及 9 月,其中 4 月安全事件發生數量最多,有 40 件。
圖 2-2-1 全年詐騙/釣魚安全事件數量統計圖
目前區塊鏈技術發展時間較短,而且對於用戶有一定 門檻要求,大多用戶缺乏相關技術知識或者安全意識相對 薄弱,給了詐騙分子可乘之機。下面本文選出了具有代表 性的 3 個詐騙事件進行分析和討論。
(1) PIEXGO 詐騙事件
PIEXGO 是由一名叫做大空翼的人所創辦的一家交易平 臺,這位創始人之前在兩年的時間內通過 IOTA 衆籌達到 了 3.6 萬倍的收益率,當時使用單價 0.001 元衆籌了 10 萬元的 IOTA,兩年之後漲至單價 36 元。PIEXGO 平臺吸引了大量追隨者,短短一個月的時間, 大空翼就通過該平臺的 PXG 幣募集到約 1.5 億人民幣的 ETH。但在 PXG 上线交易前,原定的 10 億發行量突然增發 10 倍,共發行了 100 億,這使得 PXG 的價格出現斷崖式下跌, 原本 0.06 元的募集價格,一度下跌至 0.01 元甚至歸零。
在今年 5 月 26 日平臺發布公告稱其技術團隊無法滿足 平臺發展,需將其關閉,而且平臺 CTO 不配合交接而導致 無法提幣,用戶無法在其關閉之前將資產提出。
(2) DCFplus 跑路事件
“DCFplus”項目上线後,最开始以 0.15 美元的價格 認購,但是 DCFplus 幣大多被內部人員購走。 之後項目方通過場外大肆宣揚炒作,以 4 美元左右的 價格賣給他人,之後項目策劃者又以 1 美元左右的價格進 行收購。一來一回,就騙取了投資人 70%左右的資金。最 後項目方攜帶騙取的贓款跑路。
(3) Twitter 大規模入侵詐騙事件
北京時間 2020 年 7 月 15 日,Twitter 遭受到了史上最 為嚴重的安全事故,黑客通過入侵 Twitter 系統從而獲得 用戶账戶權限。受害人群包括政界與商界名人,如:奧巴 馬、拜登、比爾蓋茨、巴菲特等,還包括大型互聯網公司, 如:蘋果、優步等。黑客通過他們的 Twitter 账號向外發送推文,稱將比特幣發送到特定地址,發送者將獲得雙倍 比特幣的返還,這條推文其實是一條釣魚信息。
截止事件發生當日,該特定地址已經收到超過 12 枚比 特幣。折合人民幣 80 多萬元。
3.勒索軟件相關事件
2020 年,據國家區塊鏈漏洞庫監測,勒索軟件安全事 件共發生 143 起,發生月份主要集中在 6 月、8 月、9 月、 10 月、11 月以及 12 月,其中 10 月安全事件發生數量最 多,有 18 件。
圖 2-3-1 全年勒索軟件安全事件數量統計圖
勒索軟件選擇的攻擊目標大多是一些國有企業、大型 私人企業等,如加油站、醫院、軍隊、學校等,這些機構 具有數據量大、數據機密、數據時效緊迫等特點,一旦被 勒索軟件攻擊,大多企業為了減少損失,會選擇支付贖金。 而由於區塊鏈上用戶都是匿名的特性,資金轉移後也很難 追回,所以大多黑客利用勒索軟件進行勒索時往往都採用 加密貨幣的支付方式,這也為案件偵破帶來了極大的困 難。下面本文選出了具有代表性的 2 個安全事件進行簡要 分析。
(1) 美國差旅公司 CWT 遭到黑客勒索軟件攻擊
美國差旅公司 CWT 受到勒索軟件攻擊,導致該公司 30 萬臺電腦被黑客鎖定,該公司已向黑客支付了 450 萬美元 的比特幣贖金。 該黑客使用的是一款名為 Ragnar Locker 的勒索軟件, 該軟件通過加密計算機的文件來進行勒索攻擊,被勒索軟 件加密的文件將無法使用,只能通過黑客給出的密鑰才能 夠解密,而攻擊者給出密鑰的條件就是支付相應贖金。最 後 CWT 公司支付了 450 萬美元的贖金。
(2) 加州大學舊金山分校被勒索軟件攻擊。
加州大學舊金山分校被一個名為 Netwalker 的黑客團 夥進行了勒索軟件攻擊,被攻擊後,該攻擊者通過郵件向 該校發送贖金通知,並要求對方支付 300 萬美元的贖金。 加州大學由於新冠疫情的影響,回復攻擊者只能支付 78 萬美元。最終經過雙方談判,加州大學支付了 116.4 個比特幣(約 114 萬美元),之後黑客也將解密程序發送給 了該校。
4.交易平臺相關事件
2020 年,據國家區塊鏈漏洞庫監測,交易平臺安全事 件共發生 31 起,發生月份主要集中在 2 月、5 月、9 月以 及 10 月,其中 5 月安全事件發生數量最多,有 5 件。
圖 2-4-1 全年交易平臺安全事件數量統計圖
交易平臺具有交易頻繁、資金流動量大、系統龐大等 特點,系統維護難度相對較大,使得攻擊者針對交易平臺 進行攻擊的頻率相對較高。本文歸納了 4 個熱點事件。
(1) 交易平臺 Travelex 遭受惡意軟件攻擊
位於倫敦的交易平臺 Travelex 受到惡意軟件攻擊,導 致該網絡系統長時間保持脫機狀態,並且影響到了其服務 的相關企業,致使某些企業網絡服務也處於脫機狀態。黑 客要求其支付 230 萬美元的贖金。
(2) 加密交易平臺 Liquid 遭入侵
北京時間 11 月 13 日,Liquid 交易平臺遭黑客入侵, 攻擊者通過更改 DNS 記錄,控制了內部大量電子郵件账 戶,導致攻擊者能夠破壞部分基礎設施以及訪問交易平臺 的文檔。 目前,攻擊者可能已經竊取了用戶姓名、地址、電子 郵件、密碼等信息。所幸用戶資金未被竊取,相對安全。
(3) 庫幣熱錢包被盜
北京時間 9 月 26 日,庫幣熱錢包發生盜竊事件,本次 事件共造成約 1.5 億美元的虛擬資產損失,事件發生主要 原因是由於錢包私鑰被泄露。 而與往常黑客不同的是,本次黑客在盜出大量虛擬資 產後,並未按照往常黑客那樣銷聲匿跡或通過各種方式洗 幣,而是將虛擬資產分別轉到各大交易平臺進行套現,隨 後庫幣在聯系各大中心化交易平臺後,對黑客所盜的資金 進行了凍結。
(4) 交易平臺 Eterbase 遭到黑客攻擊
加密貨幣交易平臺 Eterbase 被黑客攻擊,其中六個錢 包被入侵,其內 540 萬美元的資金被盜走。 黑客將盜取的資金通過交易平臺兌換成其他虛擬資 產;而交易平臺表示,他們有足夠的資金來彌補此次損失。
5.數字錢包相關事件
2020 年,據國家區塊鏈漏洞庫監測,數字錢包安全事 件共發生 41 起,發生月份主要集中在 3 月、7 月、8 月以 及 10 月,其中 8 月安全事件發生數量最多,有 13 件。
圖 2-5-1 全年數字錢包安全事件數量統計圖
數字錢包存有大量資產,一旦被黑客掌握,不用通過 各種復雜的攻擊方式,就可將其中的資金洗劫一空,下面 選出了 2 個具有代表性的安全事件進行簡要分析。
(1) 巨鯨账號“zhoujianfu”遭受黑客攻擊
2020年錢包被盜事件中,最為引人注目的是巨鯨账號 “zhoujianfu”遭受黑客攻擊事件。然而本事件並非為鏈 上攻擊,而是通過 SIM 卡進行假冒身份攻擊。 當黑客得知了受害人真實身份信息後,通過某些手段 擁有了受害人的 SIM 卡權限,通過 SIM 的驗證碼機制,將 其錢包账號權限劫持,隨後將其資產盜出,總共盜出資產 價值約 2.6 億人民幣。
被盜出的 BTC 被攻擊者通過復雜的手段進行洗幣,使 得資金的追蹤難度大大增加。據消息稱,在進行資金轉移 的過程中其中一些虛擬資產已流向交易平臺。
(2) Nexus Mutual 創始人個人錢包被攻擊
2020 年 12 月 14 日,DeFi 保險平臺 Nexus Mutual 創 始人私人錢包遭受到黑客的攻擊,此次攻擊是因為黑客修 改了受害人計算機上的 MetaMask 插件所導致的,造成了 800 萬美元的損失。
當受害人使用硬件錢包進行交易的時候,被攻擊者修 改的 MetaMask 插件出現了一筆惡意交易,使受害人誤以 為此筆交易是自己將要進行的交易,就將此筆交易進行了 批准,隨後這筆資金就轉到了攻擊者的地址中。
雖然攻擊者並未盜取到受害人的錢包私鑰,也未盜取 受害人的身份信息,但攻擊者通過技術手段加上帶有誘騙 的攻擊方式,成功的實施了攻擊。
6.公鏈相關事件
2020 年,據國家區塊鏈漏洞庫監測,公鏈相關安全事 件共發生 17 起,發生月份主要集中在 7 月、8 月以及 11 月,其中 11 月安全事件發生數量最多,有 4 件。
圖 2-6-1 全年公鏈安全事件數量統計圖
隨着量子計算機的出現,以及挖礦硬件租賃市場的存 在,使得 51%攻擊成為可能。本小節選出了 3 個具有代表 性的公鏈安全事件進行簡要分析。
(1) Filecoin 測試網無限增發漏洞
2020 年 5 月 28 日,某技術團隊發現 Filecoin 測試網 存在無限增發漏洞。之後,該技術團隊通過該漏洞實現了 48 億枚 FIL 的增發,從而驗證了漏洞的有效性。在無限 增發漏洞原理公布之後,已經有用戶增發了 93 億枚 FIL 在測試網上。前後總共增發量超 198 億枚 FIL。FileCoin 團隊在發現該漏洞後及時修復了漏洞。
(2) Aeternity 遭 51%攻擊
2020 年 12 月 7 日,Aeternity 遭受到 51%攻擊,此次 攻擊黑客共進行了 3 步操作。首先黑客在 12 月 3 日收集 大量 AE 作為攻擊成本,總額高達 2900 萬;12 月 6 日, 攻擊者挖出了一條未公开的鏈,此鏈長於公鏈,並在較長 鏈上向自己的账戶轉入 2752 萬 AE,隨後在公鏈將 AE 花 掉;12 月 7 日,攻擊者將較長鏈廣播出去,從而較長鏈 得到了認可,攻擊者向自己轉入 2752 萬 AE 的交易被正常 打包,使得資產再次回到自己账戶中,而之前花費的 AE 失效。本次攻擊造成近 400 萬美元的損失。
(3) ETC 遭遇 51%攻擊
2020 年 8 月,ETC 共遭受到了 3 次 51%攻擊。8 月 1 日, ETC 遭受到第一次攻擊,此次攻擊導致 3000 多個區塊重 組,攻擊者獲利超 560 萬美元;8 月 6 日,ETC 遭受到第 二次攻擊,此次攻擊導致 4000 多個區塊重組,攻擊者獲 利超 170 萬美元;8 月 30 日,ETC 遭受到第三次攻擊,此次攻擊導致 7000 多個區塊重組,攻擊者第三次獲利尚不 明確。
7.其它相關事件
2020 年,據國家區塊鏈漏洞庫監測,其它區塊鏈相關 安全事件共發生 16 起,這些事件主要集中在 6 月和 8 月, 分別發生 3 件。
圖 2-7-1 全年其它安全事件數量統計圖
(1) 俄羅斯憲法修正案電子投票系統的區塊鏈遭到攻擊
2020 年 6 月 27 日,基於區塊鏈技術的俄羅斯憲法修正 案電子投票系統遭到攻擊。受到攻擊之後俄國政府表示, 網絡安全專家已經在努力對所受攻擊的節點進行修復,但 尚不明確是否修復成功。雖然遭到黑客攻擊,但本次電子 投票也將成功寫入區塊鏈上,該事件並未造成系統故障。
(2) ICON 軟件更新出現漏洞
2020 年 8 月 22 日,ICON 發布了一個新版本軟件,該 軟件存在漏洞,一個名叫 Shin 的用戶利用該漏洞為自己 鑄造了大約 1400 萬個 ICX。隨後 ICON 聯系交易平臺凍結 了他的帳戶,並稱他為“惡意攻擊者”。但 Shin 表示他 並未違反任何規定,因此他的行為並不屬於計算機欺詐和 濫用行為。
(3) Plus Token 網絡傳銷案件
2020 年 11 月 26 日,“Plus Token”網絡傳銷案在江 蘇省鹽城市宣判。犯罪團夥成員被判處 2-11 年不等的有 期徒刑並處罰金 12 萬至 600 萬不等。該案件是公安機關 破獲的首起以數字貨幣為交易媒介網絡傳銷案,涉案資金 總額高達 400 億元。
三、攻擊原理分析
2020年區塊鏈安全事件的攻擊原理主要有合約漏洞、 DDoS 攻擊、51%算力攻擊以及業務邏輯缺陷等,其中,合約漏洞攻擊發生最多,達 45 次,佔比 66%;業務邏輯缺 陷發生 12 起,佔比 16%;DDOS 攻擊發生 9 次,佔比 12%; 51%攻擊發生了 8 次,佔比 11%。
圖 3-0-1 攻擊事件原理分布圖
1.合約漏洞
智能合約在區塊鏈系統扮演重要的角色,由於合約代 碼的开源性、合約中承載了大量的虛擬數字資產等特性, 使得智能合約成為越來越多黑客的攻擊目標。下面本文選 出了合約漏洞中的 3 個經典漏洞進分析和討論並給出了 相關的防護建議。
(1) 重入漏洞
以太坊允許在一個智能合約中調用另一個合約,而如 果調用的合約是攻擊者的惡意合約,那么攻擊者可以重新 發起對該合約的調用,從而導致在合約第一次還未執行完 的情況下,就錯誤的進入到一些惡意操作中。比如,在通過正常合約進行資金轉入操作的時候,如果正常合約未對攻擊者傳入的參數進行檢查,就極易發生 重入攻擊。當攻擊者傳入的是自己的惡意合約地址,在調 用外部合約的時候,則會進入攻擊者的惡意合約執行;之後,惡意合約可以再次調用正常資金轉入合約,此時合約 通過攻擊者的余額增量來為攻擊者計算所提供鑄幣數量, 攻擊者在第一次調用正常合約時可以傳入 0,而在惡意合 約第二次調用正常合約時傳入 100,那么第二次調用的正 常合約將為攻擊者提供相應數量的鑄幣,但由於第二次調 用的正常合約操作結束時,第一次調用到正常合約操作尚 未結束,攻擊者的余額增量已經是 100 了,而非第一次傳 入的0,因而正常合約再次為攻擊者提供相同數量的鑄幣。 最終,就將導致攻擊者存入一次資金,卻獲得了兩份相同 價值的鑄幣。攻擊流程如下圖 3-1-1 所示.圖 3-1-1 重入攻擊原理圖
再比如,同樣利用上述方式,若資金轉入合約在調用 外部合約之前,將攻擊者的余額存放於變量,則攻擊者就 可以在攻擊合約中調用相關余額提取函數,在正常合約執 行完畢之前將余額提出,而最後正常合約函數使用之前的 余額變量將攻擊者余額進行更新,這就將導致黑客取出了 資產,但余額並未改變。攻擊流程如下圖 3-1-2。
圖 3-1-2 重入攻擊原理圖
重入漏洞發生的原因主要有兩方面:一是未對參數進 行檢查和篩選,二是代碼先後邏輯設計不嚴謹。如何降低 重入攻擊風險?开發者需要在設計以及編寫代碼過程中 時刻保持嚴謹的心態,並加強安全審計工作的开展。例如, 可以在合約中添加檢驗標志,用來表示合約是否執行完 畢,若檢測到該合約已經被用戶調用過且還未結束,則退出合約執行;對於第一種一份資金獲得兩份等價鑄幣攻擊 方式,可在合約最开始算出所需提供鑄幣的數量,而非在 調用了外部合約之後再進行計算,這樣就可以避免將第二次存入的資金當作第一次存入資金來計算需要提供的鑄 幣數量;而對於第二種取出余額但余額不變的攻擊方式, 可在合約最後再計算用戶余額值,這樣當攻擊者中途取出 余額後,合約也能按照當前最新余額來進行計算,而非攻 擊者除去余額前的值進行計算。
(2) 整數溢出漏洞
程序中每個變量在儲存數據時,都有一個數據類型, 而一般數據類型都有一個特定的長度,這個長度能表示出 該變量能存儲數據的最大值;超過該最大值,則會導致溢 出。例如,當需要利用加法或乘法來計算轉账總額時,若 運算方式只是簡單的賦值運算,而不對其進行溢出檢查, 則可能引發整數溢出漏洞,如 2^255*2 或 2^255+2^255, 由於 uint256 所能存儲的最大值為 2^256-1,這兩個運算 都將導致向上溢出,最高位的數據會被丟棄,所得結果均 為 0。
圖 3-1-3 溢出原理圖
另一方面是向下溢出,例如利用賦值運算計算轉账之 後的余額,如不將轉帳前余額與轉账額度進行對比或對運 算進行溢出檢查,將導致在運算過程中轉账額度大於轉帳 前的账戶余額,當被減數小於減數的情況下,將會發生向 下溢出。
圖 3-1-4 溢出原理圖
在進行數據計算的過程中,務必要注意並防範數據溢 出風險,在進行代碼審計時,由於代碼量巨大,所以不管 在代碼編寫還是安全審計過程中,都必須尤為細致。例如, 在進行運算之前可以先對結果進行一個判斷,如果發現存 在溢出,則不再進行計算,如判斷兩數相加後是否大於原 來的數,或者兩數相減時被減數是否大於減數等;還可以 使用 SafeMath 庫,可以避免溢出發生。
(3) 訪問權限漏洞
在編寫智能合約過程中,某些私有變量及函數是不能 在權限之外進行訪問、調用、修改的;但在代碼編寫過程中,因修飾符使用不當、函數調用邏輯不嚴謹等過失行為, 都會導致權限攻擊的發生。 例如,在進行管理員設置的函數中,若沒有對函數的 訪問進行限制,如使用 public 修飾函數,那么黑客將可 以自行調用該函數,為自己賦予管理員權限,從而進行其 他非法操作。 要想防止訪問權限攻擊,最主要的就是要有合理的權 限分配設計,以及正確的訪問關系模型,嚴謹地使用權限 修飾符。
2.業務邏輯缺陷
DeFi 項目的業務邏輯設計復雜,利用閃電貸這種新型 產品進行攻擊的 DeFi 安全事件在過去的一年裏層出不 窮。這些安全問題的深層次原因在於,在設計業務邏輯時, 未考慮到某些關鍵性因素,如:彈性供應機制、增發機制、 清算機制設計不合理、鏈上價格及其他信息可被低成本操 控等,導致了惡意套利、惡意增發等問題。
這些問題並非 是由單純的代碼編寫錯誤導致的,更多與業務邏輯設計緊 密相關,因此在項目上线前要進行嚴格的操作/業務流程 測試,仔細分析業務設計中的薄弱環節,防止類似問題發 生。
3. DDoS 攻擊
2020 年各個領域 DDoS 攻擊事件中,主要是針對於各個 中心化交易平臺發起的。DDoS 攻擊名為分布式拒絕服務 攻擊,是指攻擊者通過技術手段控制多臺傀儡機,通過這 些傀儡機,攻擊者可以向某個或某些網絡目標構造並發送 大量請求,這將導致目標主機性能或網絡帶寬消耗殆盡, 使得受害系統無法正常運行並且無法對外提供服務。DDoS 攻擊比普通 DoS 攻擊更具有破壞性且更難防範。
圖 3-3-1 攻擊方式
想要避免 DDoS 攻擊難度比較大。發起 DDoS 攻擊的主 機所發出請求的目的是為了佔滿帶寬以及目標主機資源, 單個請求並無攻擊性,而且該攻擊手段屬於分布式攻擊, 這使得防御系統很難察覺且不容易對攻擊地址進行攔截。
4. 51%算力攻擊
51%攻擊指的是攻擊者掌握了全網 50%以上的哈希計算 算力,擁有超過 50%的算力,攻擊者就能修改自己的交易 記錄、廢棄其余礦工开採的區塊、阻止交易確認等行為。 例如,攻擊者花費一筆虛擬貨幣購买了一件商品,同時,將虛擬貨幣發送給了自己另一個账戶。當購买商品的 交易被確認後,會被打包到 A 鏈的區塊中,支付的虛擬貨 幣轉到商家的账戶。此時,攻擊者發起 51%攻擊,將轉到 自己另一個账戶的那筆交易打包進 B 鏈上的區塊,並在之 後 B 鏈組合成一條最長合法鏈,而礦工也將從 B 鏈後面繼 續挖礦,之前 A 鏈的區塊就將被丟棄,商家账戶的虛擬貨 幣也將無法使用。
圖 3-4-1 攻擊原理圖
四、CNVD 區塊鏈漏洞例舉
國家區塊鏈漏洞平臺 2020 年全年收錄漏洞 373 條。其 中高危漏洞 86 個,佔比 23%;中危漏洞 273 個,佔比 73%; 低危漏洞 14 個,佔比 4%。
圖 4-1-1 漏洞等級分布圖
1.高危漏洞 2020 年國家區塊鏈漏洞共享平臺共收錄區塊鏈高危漏 洞 86 個。
(1)雙生樹漏洞
2020 年 11 月 10 日,國家區塊鏈漏洞平臺收錄了雙生樹漏洞(CNVD-2020-66571),攻擊者可以利用此漏洞在 不影響區塊哈希的前提下,篡改部分區塊數據。
(2)Sinoc 公鏈拒絕服務漏洞
2020 年 9 月 29 日,國家區塊鏈漏洞平臺收錄了 Sinoc 公鏈拒絕服務漏洞(CNVD-2020-55001),攻擊者可以利 用此漏洞發起拒絕服務攻擊。
(3)底層網絡請求處理不當拒絕服務漏洞
2020 年 3 月 22 日,國家區塊鏈漏洞平臺收錄了底層網 絡請求處理不當拒絕服務漏洞(CNVD-2020-30134),攻 擊者可以利用此漏洞發起拒絕服務攻擊。
(4)Bitool 文件上傳漏洞
2020 年 2 月 13 日,國家區塊鏈漏洞平臺收錄了 Bitool 文件上傳漏洞(CNVD-2020-30138),攻擊者可以通過上 傳惡意木馬對服務器進行攻擊,造成重大損失。
(5)Neo CLI 節點客戶端拒絕服務漏洞
2020 年 12 月 08 日,國家區塊鏈漏洞平臺收錄了 Neo CLI 節點客戶端拒絕服務漏洞(CNVD-2021-02009),攻 擊者通過構造惡意腳本發送到公鏈上,可以造成全部共識 節點進程崩潰,最終造成主網拒絕服務。
2.中危漏洞 2020 年國家區塊鏈漏洞共享平臺共收錄區塊鏈中危漏 洞 273 個。
(1)GasToken2 緩衝器溢出漏洞2020 年 2 月 18 日,國家區塊鏈漏洞平臺收錄了 GasToken2 緩衝器溢出漏洞(CNVD-2020-30136),由於 該緩衝器未使用 safemath 函數,攻擊者可以對其發動整 數溢出攻擊。
(2)Sinoc 公鏈邏輯缺陷漏洞 2020 年 6 月 19 日,國家區塊鏈漏洞平臺收錄了 Sinoc 公鏈邏輯缺陷漏洞(CNVD-2020-55002),攻擊者可以在 未獲得身份認證的情況下進行惡意操作,例如:刪除地址 账戶導致資金損失、添加新地址、查看系統日志記錄信息 和 RPC 調用示例等。
(3)ETHLend 邏輯缺陷漏洞 2020年6月30日,國家區塊鏈漏洞平臺收錄了ETHLend 邏輯缺陷漏洞(CNVD-2020-35586),攻擊者可以利用該 漏洞造成整數溢出,從而繞過關鍵判斷,導致超額購买虛 擬數字資產。
(4) BIXToken 智能合約邏輯缺陷漏洞 2020年6月3日,國家區塊鏈漏洞平臺收錄了BIXToken 智能合約邏輯缺陷漏洞(CNVD-2020-31663),此漏洞會 導致被攻擊的账戶永遠無法解鎖其被鎖倉的代幣。
(5)AsacCoin 智能合約整數溢出漏洞 2020 年 3 月 22 日,國家區塊鏈漏洞平臺收錄了 AsacCoin 智能合約整數溢出漏洞(CNVD-2020-30135),合約可以構造一個較大的數據向某一地址增發虛擬數字 資產,由於其漏洞將導致整數溢出,最後使該接收虛擬數 字資產地址余額變為 0 或很小。
五、其他安全問題
除了上述常見漏洞以外,還存在一些其它類型的漏洞, 本章將對其中三種常見漏洞導致的安全問題進行介紹。
1. 彈性供應漏洞
據國家區塊鏈漏洞庫監測,北京時間 2020 年 8 月 12 日,DeFi 項目 YAM Finance 由於項目機制進行彈性供應 Rebase 時存在漏洞,使得在第二次 Rebase 時額外鑄造了 大量虛擬資產,而維護治理需要提交與總額成正比的虛擬 資產,額外鑄造了大量虛擬資產使得維護治理需要提交的 虛擬資產也就大幅增加,這將導致無人能提供足夠的虛擬 資產來對其進行維護治理,若無法治理,其中的虛擬資產 將被鎖定且無法使用。
2.清算漏洞
據國家區塊鏈漏洞庫監測,流動性挖礦項目 Soda 被人 發現存在一個清算漏洞,該漏洞可導致項目中 20000 個虛 擬資產被清算掉,漏洞發現者向項目开發組提出該漏洞但 未引起开發組重視,故發現者將其中的一個虛擬資產清算掉,並發文警告。之後开發人員迅速停止了該項目借款功 能。 3.時間鎖定漏洞 據國家區塊鏈漏洞庫監測,DeFi 項目 BaconSwap 和 shroom.finance存在時間鎖定漏洞,該漏洞能導致項目所 有者可以繞過時間鎖來無限增發虛擬資產。對此漏洞,項 目方暫時沒有提供相應解決方案。
六、對策建議
一是在系統上线前進行專業的安全與操作/業務流程 審計工作,切勿為了節省時間與成本而倉促上线;
二是系 統上线後做好數據監控維護工作,能保證第一時間發現異 常並進行處理;
三是加強安全意識與完善應急流程,能在 發現異常的情況下及時止損,修復系統,將損失降到最低;
四是個人應加強安全意識,提高對區塊鏈技術的了解,切 勿相信涉嫌非法金融活動的宣傳,如包含一夜暴富、穩賺 不賠、躺賺等相關字眼;
五是妥善保管好錢包私鑰,涉及 大額資金可以通過硬件錢包進行存儲,並在使用錢包的過 程中注意安全防護;
六是加強對區塊鏈技術體系安全風險 和防護手段的研究,推進適應區塊鏈技術機制的安全保障 體系建設;
七是積極开展區塊鏈系統安全評估和智能合約 形式化驗證,提前發現安全隱患;八是加強區塊鏈漏洞庫建設和應用,提高區塊鏈安全事件的發現、分析、預警和 應急處置能力。
參考文獻
[1] 國家區塊鏈漏洞庫.《區塊鏈漏洞定級細則》,2020
[2] 國家區塊鏈漏洞庫.《區塊鏈技術架構安全要求》, 2020
[3] 國家區塊鏈漏洞庫.《DeFi 網絡安全態勢報告》, 2020
[4] 信通院.《區塊鏈安全白皮書-技術應用篇》,2018
[5] 信通院.《區塊鏈安全白皮書(1.0 版)》,2019
[6] 信通院.《區塊鏈白皮書(2019 年)》,2019
[7] 信通院.《全球區塊鏈應用十大趨勢》,2017
[8] 中國移動,中國電信,中國聯通.《區塊鏈電信行業應 用白皮書(1.0 版)》[R],2019
[9] Muhammad Izhar Mehar,Charles Louis Shier,Alana Giambattista,Elgar Gong,Gabrielle Fletcher,Ryan Sanayhie,Henry M Kim,Marek Laskowski. 《Understanding a revolutionary and flawed grand experiment in blockchain: the DAO attack》,Journal of Cases on Information Technology (JCIT) 21 (1), 19-32,2019
[10] Congcong Ye,Guoqiang Li,Hongming Cai,YonggenGu,Akira Fukuda. 《 Analysis of security in blockchain: Case study in 51%-attack detecting》,2018 5th International Conference on Dependable Systems and Their Applications (DSA), 15-24,2018
[11] Dey Somdip. 《 A proof of work: Securing majority-attack in blockchain using machine learning and algorithmic game theory》,International Journal of Wireless and Microwave Technologies (IJWMT), 1-9, 2018
[12] Muhammad Saad,Jeffrey Spaulding,Laurent Njilla,Charles Kamhoua,Sachin Shetty,DaeHun Nyang,David Mohaisen. 《 Exploring the attack surface of blockchain:A comprehensive survey》,IEEE Communications Surveys & Tutorials 22 (3),1977-2008,2020
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
狗狗幣價格展望:10億美元資金湧入後的DOGE能否觸及10美元大關?
狗狗幣(DOGE)當前正處於積極的上漲軌道上,其價格穩固於0.1381美元附近,並在盤中一度觸及0...
BNB Chain 的 meme Summer$FOUR傳承 CZ “4” 文化
自 2023 年开始,一張Binance首席執行官趙長鵬 ( CZ ) 經常在其推特账號上發手比“...
幣安發錢了 BNB HODLer 空投首發「Banana Gun」 幣價飆升創新高
今日凌晨,幣安宣布了第一期HODLer 空投的代幣為BANANA,其是Banana Gun 機器人...