團隊介紹
通付盾區塊鏈安全團隊(SharkTeam)專注于區塊鏈和智能合約安全,由擁有多年一線網絡安全及區塊鏈實戰經驗的團隊成員組成,精通區塊鏈和智能合約底層原理,具備完善的漏洞挖掘和智能合約審計能力,可提供全面的威脅建模、合約審計、應急響應服務,已幫助多個知名區塊鏈項目發現并修復安全漏洞,致力于保護用戶數字資產安全與隱私安全。
” In Math,We Trust !”
內容概覽
智能合約這一概念由計算機學家和法學家尼克·薩博在20世紀90年代提出,是區塊鏈至關重要的組成部分,極大地擴展了區塊鏈的應用場景與現實意義,目前區塊鏈與智能合約技術已被廣泛地應用于股權眾籌、游戲、保險、供應鏈、物聯網等領域。
但伴隨著區塊鏈和智能合約產業的不斷發展,隨之而來的安全事件也不斷爆發。相比于普通的程序而言,智能合約更容易成為攻擊者的目標。一方面,智能合約通常用于管理區塊鏈平臺上的數字資產,對智能合約的攻擊可能會為攻擊者帶來更高的經濟價值;而更為重要的是,引入智能合約的初衷在于借助區塊鏈的特性來保證合約的可信賴,而智能合約漏洞會使合約出現非預期的行為,從而可能使其變為一份“不平等合約”,而失去了智能合約最根本的意義。
僅2021年第一季度就已發生SushiSwap第二次被攻擊、Alpha Finance 與 Cream被攻擊、Yearn.finance閃電貸攻擊、Furucombo被攻擊、PAID Network被攻擊、DODO資金池被盜、Roll被攻擊、EasyFi密鑰泄漏等一系列安全事件,不僅給用戶造成了巨大的經濟損失,同時也使得智能合約的公平、可信賴受到挑戰和質疑。一次又一次的攻擊事件表明,智能合約的安全形勢已十分嚴峻,對智能合約的相關安全漏洞開展研究并保障其安全已十分迫切。
通付盾區塊鏈安全團隊(SharkTeam)在第一季度選取了主流的41個區塊鏈項目,并對覆蓋高級語言層、虛擬機層、區塊鏈層、業務邏輯層的75項常見安全問題進行了安全掃描,共計發現安全問題2192項。《通付盾2021Q1智能合約安全態勢感知報告》(以下簡稱為“報告”)從漏洞位置分布、危害等級分布和項目類型三個角度進行相關數據分析。
漏洞位置分布
智能合約的安全漏洞主要來自于高級語言、虛擬機、區塊鏈和業務邏輯四個層面。
報告數據顯現,目前智能合約安全問題重點集中在高級語言層,共發現1500項問題。具體分布如下:

高級語言層
高級語言是開發者進行智能合約編寫的工具。以太坊智能合約開發有多種可以使用的高級語言,其中最為常用的是 Solidity語言。高級語言層面為智能合約帶來的安全威脅主要有兩個原因,一個是高級語言自身設計的缺陷所引入的安全問題,另一個則是開發者在編寫高級語言過程中因為忽視代碼質量而引入的安全漏洞。報告數據顯示,漏洞主要集中在“命名不規范”、“編譯器版本不一致”、“Solidity版本過時”等方面,其中“命名不規范”漏洞數量最多,有517個。

虛擬機層
虛擬機是編譯后的智能合約字節碼執行器。以太坊的虛擬機及其字節碼的設計規范被定義在以太坊技術黃皮書中,是各種以太坊客戶端實現以太坊虛擬機的標準指導手冊。虛擬機層面的安全威脅主要有兩個方面,一是以太坊黃皮書設計智能合約字節碼規范和運行機制本身的一些缺陷,二是不同的以太坊客戶端在實現虛擬機的過程中,因沒有嚴格按照手冊實現而引入的問題。報告數據顯示,問題主要集中在重入漏洞,其中“亂序引起的重入”最多,有62個。

區塊鏈層
智能合約依靠區塊鏈來提供去中心化、不可篡改和信任等特性,區塊鏈平臺對智能合約的運行也有很多影響。區塊鏈對于智能合約來說,雖然是其安全可信的根基,但區塊鏈本身的很多特性也會給智能合約帶來安全風險。報告數據顯示,區塊鏈層的漏洞主要集中在“隨機性不足”和“時間戳依賴”,其中“時間戳依賴”最多,有17個。

業務邏輯層
區塊鏈項目的業務邏輯目前越來越復雜,也面臨越來越多的業務安全問題,以DeFi為例,如資產凍結、鏈上私有數據未加密、缺少external聲明等問題并非由單純的代碼編寫錯誤導致,更多與業務邏輯設計緊密相關,因此在項目上線前要進行嚴格的業務流程測試,仔細分析設計中的薄弱環節,防止業務問題的發生。報告數據顯示,“缺少external聲明”出現的頻率最高,有473個。

威脅等級分布
漏洞本質是非故意、非預期的安全缺陷或風險,基于國家區塊鏈漏洞庫《區塊鏈漏洞定級細則》,并結合業務特點及應用場景將威脅等級分為高、中、低、消息四個等級。主要依據漏洞的危害程度、利用難度,輔以其他因素綜合判定。危害程度主要根據機密性影響、完整性影響、可用性影響三個維度定義;利用難度主要根據攻擊向量、攻擊復雜度、認證三個維度定義。
報告數據顯示,智能合約安全問題主要集中在消息級,共發現1785項漏洞。具體分布如下:

報告對每個威脅等級的漏洞都進行了詳細的分析,以“高危”漏洞為例:高危漏洞一般指中低利用難度且對智能合約的機密性、完整性、可用性或其經濟模型產生惡劣影響,可對合約業務系統造成大量經濟損失、局部功能不可用、大范圍數據錯亂、權限管理失控、關鍵功能失效、公信力下降,或間接影響與之關聯的其他智能合約正確運行并造成大量損失等嚴重且多數不可逆的危害。報告數據顯示,高危漏洞主要集中在“影子狀態變量”、“任意地址發布以太幣”、“修改器中有外部變量”、“修改器修改狀態變量”等,其中“修改器中有外部變量”最多,有11個。

項目類型分布
本次選取的41個項目包含:抵押借貸、現貨交易、穩定幣交易、保險&衍生品交易、支付&理財、錨定幣等類型。
報告數據顯示,目前安全問題主要集中在現貨交易項目中,發現1084項漏洞。分布如下:

攻擊原理分析
未知攻焉知防,結合41個項目的綜合審計結果及第一季度實際發生的8起典型安全事件,報告從合約漏洞、密鑰泄露、經濟攻擊、流量攻擊、算力攻擊5個方面分析了相關攻擊原理并提出防范建議。
合約漏洞
智能合約本質上是一段運行在區塊鏈上的代碼,其極大地擴展了區塊鏈的業務范圍,同時區塊鏈也為智能合約提供了更好的運行環境。部署在區塊鏈上的智能合約具有公開透明、自動化獨立執行、不可更改以及天然帶有經濟屬性并攜帶數字資產等特性,因此智能合約越來越受到黑客的關注與攻擊。因為大多數智能合約都是開源的,黑客可以研究現有的合約漏洞,并根據發現的合約漏洞發起攻擊,給用戶造成了極大的經濟損失。
密鑰泄露:
區塊鏈賬戶地址屬于匿名賬戶,其賬戶的安全性完全依賴于賬戶對應的私鑰的安全性。持有賬戶的私鑰,相當于擁有對賬戶以及賬戶資產的絕對控制權。
智能合約中的一些特殊賬戶,其安全性對整個合約甚至整個項目有著極大的影響,例如owner賬戶、鑄幣賬戶,掌握了其私鑰,就可以利用這些賬戶對合約進行某些不合法的操作。若擁有了owner賬戶的私鑰,則可能利用該owner賬戶直接調用owner地址的驗證,從而對合約進行重新初始化、隨意修改狀態變量等非法操作;若擁有的鑄幣賬戶的私鑰,則可以利用該鑄幣賬戶無限制的鑄幣,然后盜取大量數字資產,從而引起賬戶的重大的損失。Roll被攻擊就是因為用戶賬戶的私鑰被黑客盜取引起的大量資金被盜的典型安全事件。
經濟攻擊:
DeFi項目的業務邏輯設計復雜,利用閃電貸這種新型產品進行攻擊的DeFi事件在過去的一年里層出不窮。這些安全問題的深層次原因在于,在設計業務邏輯時,未考慮到某些關鍵性因素,如:彈性供應機制、增發機制、清算機制設計不合理、鏈上價格及其他信息可被低成本操控等,導致了惡意套利、惡意增發等問題。攻擊者通過操縱 AMM 資產池內的資產價格或者資產數量使關聯協議蒙受損失,我們不妨稱之為經濟攻擊。至今出現的經濟攻擊通常分為哄抬套利和操縱預言機兩種手法。
流量攻擊:
在區塊鏈網絡中的流量攻擊被稱之為DDoS(distributed denial-of-service)攻擊。是指網絡被大量的流量或特定信息蓄意淹沒,從而引發系統崩潰。此類攻擊的目標通常為知名企業(如各個中心化交易平臺等)。這些攻擊通常不以獲取個人信息或劫持系統為目的,而是為了制造巨大的混亂。從本質上講,發動此類攻擊的黑客的相當于網絡恐怖分子。
想要避免DDoS攻擊難度比較大,但也可以通過允許更多用戶加入分布式網絡,以更好地抵御DDoS攻擊,進而增強網絡的安全性。不僅如此,區塊鏈技術也允許網絡用戶出租額外帶寬,以支持那些流量過載的網絡。這樣一來,DDoS攻擊的成功率也將顯著降低。
算力攻擊:
當系統中有合作關系的惡意節點所控制的算力,超過誠實節點所控制的算力,系統就是有被攻擊的風險。這種由惡意節點控制超過50%算力所發起的攻擊,稱為51%算力攻擊。
通常基于PoW(工作量證明)共識機制的加密貨幣,存在51%算力攻擊的威脅較大,比如比特幣、比特現金和目前階段的以太坊等;而非PoW共識算法的加密貨幣則能較好的避免51%算力攻擊,如基于DPoS(委托權益證明)共識機制的EOS、TRON等。
安全建議
智能合約是部署和運行在區塊鏈上的程序。借助區塊鏈,智能合約可以實現各類去中心化應用(DApp)。與傳統程序一樣,智能合約中存在漏洞也在所難免。然而不同的是,智能合約運行在更為開放的環境中,并天生帶有金融屬性,且升級成本極高。這意味著其對安全的要求更高,任何一點瑕疵都可能帶來無法預估的后果。構建智能合約安全體系,我們建議從以下幾個方面著力。
技術安全
智能合約安全本身是一個系統性和專業性極強的工程,需要綜合考慮合約平臺底層安全、合約設計與實現安全、合約生態工具安全、合約交互與數據安全等各方面,任何一個環節出現細微問題都會留下極大的隱患。
業務安全
作為去中心化應用的核心部分,智能合約還需要可靠的設計。糟糕的設計可能會引入難以發現的深層次安全問題,這類問題往往無法簡單通過掃描源代碼發現。智能合約設計者需要綜合考慮業務邏輯、多角色權限和博弈、區塊鏈共識等多方面因素。合約業務邏輯設計與實現應不存在明顯安全問題。
部分智能合約會受管理員控制,而部分管理員甚至擁有極高的特殊權限,特定場景下會威脅合約其他用戶的資產安全。為了智能合約安全,我們一方面需要警惕超級管理員作惡,另一方面需要考慮管理員身份被盜用所帶來的后果。接口調用權限、管理員權限等需要劃分清晰。
安全服務
作為區塊鏈平臺上管理數字資產的重要組成部分,智能合約的安全性必將受到越來越多的關注。智能合約項目方應與具有專業安全能力的服務商合作,提高智能合約的安全性。
通付盾區塊鏈安全團隊為客戶提供高級別的區塊鏈安全服務,區塊鏈安全專家團隊7*24小時為智能合約提供全生命周期的安全保障,服務包括:VIP安全審計服務、VIP合規審計服務、安全事故應急響應等,幫助客戶構建智能合約安全體系。項目方可參照通付盾區塊鏈安全團隊的安全建議,完善合約開發和發布流程,從設計、開發、測試、審計到部署、監控、應急響應,保護智能合約全生命周期安全。
獲取通付盾智能合約安全態勢感知季報2021Q1
關注“通付盾”訂閱號,后臺回復關鍵詞“智能合約”,下載報告全文。