本文由國家互聯網應急中心主編,授權金色財經首發。
編委會
主編:國家互聯網應急中心
聯合編制:成都鏈安科技有限公司
北京長亭科技有限公司
蘇州鏈原信息科技有限公司
杭州派盾信安科技有限公司
天融信科技集團股份有限公司
北京知道創宇信息技術股份有限公司
杭州安恒信息技術股份有限公司
北京眾享比特科技有限公司
真相網絡科技有限公司
目錄
一、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成為了黑客攻擊的重點目標。
百度Apollo首發 “Apollo 001”系列紀念數字藏品:金色財經報道,據百度Apollo智能駕駛官方公眾號,百度Apollo全網首發首款 “Apollo 001”系列紀念數字藏品,以百度汽車機器人為主體形象,每款對應一個百度Apollo自動駕駛重要里程碑事件。據悉,該數字藏品將于2022年7月8日 09:55發布汽車機器人家族全家福空投款。[2022/7/7 1:58:19]
閃電貸本身是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)HarvestFinance攻擊事件
北京時間2020年10月26日,HarvestFinance遭受閃電貸攻擊,該攻擊事件共造成2400萬美元的損失。本次攻擊是由于黑客控制預言機上數字貨幣價格導致的。攻擊者首先從閃電貸UniswapV2貸出1800多萬USDT和5000萬USDC,并將USDT通過Curve兌換成USDC,如圖2-1-9。
圖2-1-9交易流程
接下來黑客再向Harvest中存入5000萬的USDC,由于上一步USDT兌換USDC的操作,使得Curvey池中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)ValueDeFi協議攻擊事件
北京時間2020年11月15日,ValueDeFi協議遭受閃電貸攻擊,本次攻擊是由于黑客操控DAI/USDC/USD池中的價格引發的。
首先,攻擊者通過閃電貸貸出80000ETH以備攻擊使用。其次,攻擊者先通過UniswapV2兌換出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價格升高。
LBank藍貝殼于4月9日16:50首發 BOSON:據官方公告,4月9日16:50,LBank藍貝殼首發BOSON(Boson Protocol),開放USDT交易,4月9日16:00開放充值,4月12日16:00開放提現。上線同一時間開啟充值交易BOSON瓜分10,000 USDT。
LBank藍貝殼于4月9日16:50開啟充值交易BOSON瓜分10,000 USDT。用戶凈充值數量不少于1枚BOSON ,可按凈充值量獲得等值1%的BOSON的USDT空投獎勵;交易賽將根據用戶的BOSON交易量進行排名,前30名可按個人交易量占比瓜分USDT。詳情請點擊官方公告。[2021/4/9 20:02:26]
圖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)PickleFinance被攻擊事件
北京時間11月22日,DeFi項目PickleFinance遭到黑客攻擊,本次攻擊事件是由于重入漏洞導致的,損失金額高達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全部當作收益進行分配。
LBANK藍貝殼于3月22日18:00首發 DORA,開放USDT交易:據官方公告,3月22日18:00,LBANK藍貝殼首發DORA(Dora Factory),開放USDT交易,現已開放充值。
資料顯示,Dora Factory 是基于波卡的 DAO 即服務基礎設施,基于 Substrate 的開放、可編程的鏈上治理協議平臺,為新一代去中心化組織和開發者提供二次方投票、曲線拍賣、Bounty 激勵、跨鏈資產管理等可插拔的治理功能。同時,開發者可以向這個 DAO 即服務平臺提交新的治理模塊,并獲得持續的激勵。[2021/3/22 19:07:06]
由于攻擊者在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萬美元的比特幣贖金。該黑客使用的是一款名為RagnarLocker的勒索軟件,該軟件通過加密計算機的文件來進行勒索攻擊,被勒索軟件加密的文件將無法使用,只能通過黑客給出的密鑰才能夠解密,而攻擊者給出密鑰的條件就是支付相應贖金。最后CWT公司支付了450萬美元的贖金。
?(2)加州大學舊金山分校被勒索軟件攻擊。
加州大學舊金山分校被一個名為Netwalker的黑客團伙進行了勒索軟件攻擊,被攻擊后,該攻擊者通過郵件向該校發送贖金通知,并要求對方支付300萬美元的贖金。加州大學由于新冠疫情的影響,回復攻擊者只能支付78萬美元。最終經過雙方談判,加州大學支付了116.4個比特幣(約114萬美元),之后黑客也將解密程序發送給了該校。
4.交易平臺相關事件
首發 | 百度推動246家博物館線上藏品上鏈:金色財經訊,近日,百度超級鏈聯合百度百科,基于區塊鏈技術創建 “文博藝術鏈”,推動百科博物館計劃中的246家博物館線上藏品上鏈。基于“文博藝術鏈”,百度將與博物館共同推動線上藏品版權的確權與維護,同時探索線上藏品版權數字化交易方式,為合作的博物館提供更全面的服務和更多的權益。據介紹,此項目將分階段進行,一期將完成線上藏品的入鏈確權,為每一件藏品生產專屬的版權存證證書。讓每一名用戶可以在百度百科博物館計劃的PC端和WAP端的藏品頁查看證書。后續,百度還將推動AI與區塊鏈技術在文博領域的結合應用,用來保障上鏈數據與藏品相匹配,為后續進行藏品圖像版權數字化交易奠定基礎。[2019/1/30]
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)NexusMutual創始人個人錢包被攻擊
2020年12月14日,DeFi保險平臺NexusMutual創始人私人錢包遭受到黑客的攻擊,此次攻擊是因為黑客修改了受害人計算機上的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團隊在發現該漏洞后及時修復了漏洞。
IMEOS首發 BM表示EOS合約具有整數溢出保護:據金色財經合作媒體IMEOS報道:近日ETH出現多個ERC20智能合約的處理溢出錯誤,BM在推特上發表評論:新的ETH契約Bug可能會破壞整個Token的供應,讓持有者留下無價值Token.這就算為什么代碼不能成為法律,隨即表示EOS erc合約不容易受到這種攻擊。而EOS官方群也有人表示擔憂EOS是否具有整數溢出保護?BM回應:有很多C ++模板類可以封裝類型并檢查溢出。[2018/4/25]
?(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)PlusToken網絡傳銷案件
2020年11月26日,“PlusToken”網絡傳銷案在江蘇省鹽城市宣判。犯罪團伙成員被判處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^2552^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個。
雙生樹漏洞
2020年11月10日,國家區塊鏈漏洞平臺收錄了雙生樹漏洞,攻擊者可以利用此漏洞在不影響區塊哈希的前提下,篡改部分區塊數據。?
Sinoc公鏈拒絕服務漏洞
2020年9月29日,國家區塊鏈漏洞平臺收錄了Sinoc公鏈拒絕服務漏洞,攻擊者可以利用此漏洞發起拒絕服務攻擊。
底層網絡請求處理不當拒絕服務漏洞
2020年3月22日,國家區塊鏈漏洞平臺收錄了底層網絡請求處理不當拒絕服務漏洞,攻擊者可以利用此漏洞發起拒絕服務攻擊。?
Bitool文件上傳漏洞
2020年2月13日,國家區塊鏈漏洞平臺收錄了Bitool文件上傳漏洞,攻擊者可以通過上傳惡意木馬對服務器進行攻擊,造成重大損失。
NeoCLI節點客戶端拒絕服務漏洞
2020年12月08日,國家區塊鏈漏洞平臺收錄了NeoCLI節點客戶端拒絕服務漏洞,攻擊者通過構造惡意腳本發送到公鏈上,可以造成全部共識節點進程崩潰,最終造成主網拒絕服務。
2.中危漏洞2020年國家區塊鏈漏洞共享平臺共收錄區塊鏈中危漏洞273個。
GasToken2緩沖器溢出漏洞2020年2月18日,國家區塊鏈漏洞平臺收錄了GasToken2緩沖器溢出漏洞,由于該緩沖器未使用safemath函數,攻擊者可以對其發動整數溢出攻擊。
Sinoc公鏈邏輯缺陷漏洞2020年6月19日,國家區塊鏈漏洞平臺收錄了Sinoc公鏈邏輯缺陷漏洞,攻擊者可以在未獲得身份認證的情況下進行惡意操作,例如:刪除地址賬戶導致資金損失、添加新地址、查看系統日志記錄信息和RPC調用示例等。
ETHLend邏輯缺陷漏洞2020年6月30日,國家區塊鏈漏洞平臺收錄了ETHLend邏輯缺陷漏洞,攻擊者可以利用該漏洞造成整數溢出,從而繞過關鍵判斷,導致超額購買虛擬數字資產。
BIXToken智能合約邏輯缺陷漏洞2020年6月3日,國家區塊鏈漏洞平臺收錄了BIXToken智能合約邏輯缺陷漏洞,此漏洞會導致被攻擊的賬戶永遠無法解鎖其被鎖倉的代幣。
AsacCoin智能合約整數溢出漏洞2020年3月22日,國家區塊鏈漏洞平臺收錄了AsacCoin智能合約整數溢出漏洞,合約可以構造一個較大的數據向某一地址增發虛擬數字資產,由于其漏洞將導致整數溢出,最后使該接收虛擬數字資產地址余額變為0或很小。?
五、其他安全問題
除了上述常見漏洞以外,還存在一些其它類型的漏洞,本章將對其中三種常見漏洞導致的安全問題進行介紹。
1.彈性供應漏洞
據國家區塊鏈漏洞庫監測,北京時間2020年8月12日,DeFi項目YAMFinance由于項目機制進行彈性供應Rebase時存在漏洞,使得在第二次Rebase時額外鑄造了大量虛擬資產,而維護治理需要提交與總額成正比的虛擬資產,額外鑄造了大量虛擬資產使得維護治理需要提交的虛擬資產也就大幅增加,這將導致無人能提供足夠的虛擬資產來對其進行維護治理,若無法治理,其中的虛擬資產將被鎖定且無法使用。
2.清算漏洞
據國家區塊鏈漏洞庫監測,流動性挖礦項目Soda被人發現存在一個清算漏洞,該漏洞可導致項目中20000個虛擬資產被清算掉,漏洞發現者向項目開發組提出該漏洞但未引起開發組重視,故發現者將其中的一個虛擬資產清算掉,并發文警告。之后開發人員迅速停止了該項目借款功能。3.時間鎖定漏洞據國家區塊鏈漏洞庫監測,DeFi項目BaconSwap和shroom.finance存在時間鎖定漏洞,該漏洞能導致項目所有者可以繞過時間鎖來無限增發虛擬資產。對此漏洞,項目方暫時沒有提供相應解決方案。
?六、對策建議
一是在系統上線前進行專業的安全與操作/業務流程審計工作,切勿為了節省時間與成本而倉促上線;
二是系統上線后做好數據監控維護工作,能保證第一時間發現異常并進行處理;
三是加強安全意識與完善應急流程,能在發現異常的情況下及時止損,修復系統,將損失降到最低;
四是個人應加強安全意識,提高對區塊鏈技術的了解,切勿相信涉嫌非法金融活動的宣傳,如包含一夜暴富、穩賺不賠、躺賺等相關字眼;
五是妥善保管好錢包私鑰,涉及大額資金可以通過硬件錢包進行存儲,并在使用錢包的過程中注意安全防護;
六是加強對區塊鏈技術體系安全風險和防護手段的研究,推進適應區塊鏈技術機制的安全保障體系建設;
七是積極開展區塊鏈系統安全評估和智能合約形式化驗證,提前發現安全隱患;八是加強區塊鏈漏洞庫建設和應用,提高區塊鏈安全事件的發現、分析、預警和應急處置能力。
參考文獻?
國家區塊鏈漏洞庫.《區塊鏈漏洞定級細則》,2020?
國家區塊鏈漏洞庫.《區塊鏈技術架構安全要求》,2020?
國家區塊鏈漏洞庫.《DeFi網絡安全態勢報告》,2020?
信通院.《區塊鏈安全白皮書-技術應用篇》,2018?
信通院.《區塊鏈安全白皮書》,2019?
信通院.《區塊鏈白皮書》,2019?
信通院.《全球區塊鏈應用十大趨勢》,2017?
中國移動,中國電信,中國聯通.《區塊鏈電信行業應用白皮書》,2019?
MuhammadIzharMehar,CharlesLouisShier,AlanaGiambattista,ElgarGong,GabrielleFletcher,RyanSanayhie,HenryMKim,MarekLaskowski.《Understandingarevolutionaryandflawedgrandexperimentinblockchain:theDAOattack》,JournalofCasesonInformationTechnology(JCIT)21(1),19-32,2019?
CongcongYe,GuoqiangLi,HongmingCai,YonggenGu,AkiraFukuda.《Analysisofsecurityinblockchain:Casestudyin51%-attackdetecting》,20185thInternationalConferenceonDependableSystemsandTheirApplications(DSA),15-24,2018?
DeySomdip.《Aproofofwork:Securingmajority-attackinblockchainusingmachinelearningandalgorithmicgametheory》,InternationalJournalofWirelessandMicrowaveTechnologies(IJWMT),1-9,2018?
MuhammadSaad,JeffreySpaulding,LaurentNjilla,CharlesKamhoua,SachinShetty,DaeHunNyang,DavidMohaisen.《Exploringtheattacksurfaceofblockchain:Acomprehensivesurvey》,IEEECommunicationsSurveys&Tutorials22(3),1977-2008,2020
為了慶祝幣安 流動性挖礦上線BNB挖礦功能,幣安將開啟新一輪交易大賽活動。活動時間:2021年03月09日上午8:00-2021年03月16日上午8:00參與流動性挖礦交易排名賽,瓜分40,00.
1900/1/1 0:00:00尊敬的用戶: Hotbit即將在開啟FSXU(FlashXUltra)數字資產服務 具體安排如下: 充值時間:2021年03月08日14:00??(香港時間)交易時間:2021年03月08日16.
1900/1/1 0:00:0020個月之前,全球5G尚處于起步階段,只有零星少數國家開始商用5G,我國則剛剛發放5G牌照。如今,全球已建成123張5G商用網絡,5G商用終端達到335款。全球5G商用速度之快超乎想象.
1900/1/1 0:00:00頭條 DeFi協議BigDataProtocol總鎖倉量突破64億美元星球日報訊官方數據顯示,截止3月8日凌晨8:00,DeFi協議BigDataProtocol總鎖倉量突破64億美元.
1900/1/1 0:00:00尊敬的用戶: Hotbit即將在開啟MDC(MediCash)數字資產服務。 具體安排如下: 充值時間:2021年03月08日16:00??(香港時間)交易時間:2021年03月08日18:00.
1900/1/1 0:00:00美國新冠病株變異,疫情形勢仍不樂觀,美國參議院3月7日通過1.9萬億美元新冠救助法案修正案,加密市場受此影響,展現出強烈看漲預期:BTC資金費率明顯上漲.
1900/1/1 0:00:00