新一代安全公司如何學習保護區塊鏈代碼
今年9月初,由Cameron和Tyler Winklevoss創建的加密公司“雙子信托”宣布,該公司已獲得紐約州監管機構的批準,將推出一套與美元價值掛鉤的數字代幣。
這種被稱為“雙子幣”的代幣可以在以太坊區塊鏈上通過一個叫做“智能合約”的專門程序來發送。為了確認它的代幣實際上是由傳統美元支持的,雙子公司公布了一份獨立會計師事務所的報告。該公司還發布了一份獨立的審計報告,重點不是財務,而是來自紐約一家名為Trail of Bits的安全公司的基礎軟件代碼。
“評估的目的是發現漏洞,讓攻擊者只對發行商Gemini進行操作,”在Gemini發布的一封信中,該公司首席執行官Dan Guido寫道,他解釋說,測試中發現的任何問題都是固定的。
Trail of Bits是數家為智能合同提供技術安全審計的公司之一,這些公司負責為區塊鏈創業公司募集資金,以及在區塊鏈網絡上構建的復雜數字市場等一切交易,從最初的代幣發行到融資。智能合約是由支持區塊鏈的計算機運行的專用程序,通常具有在滿足某些條件時接收和分發加密貨幣或其他數字代幣的能力。專家們說,寫這些程序需要新的思維方式,這可能會讓沒有經驗的程序員不知所措。
悉尼區塊鏈軟件和網絡安全公司Sigma Prime的主管Mehdi Zerouali說:“實際上,編寫智能合約是一個完整的、不同的新模式。”
"有一些漏洞是令人震驚的"
所有的軟件都有漏洞,但由于智能合約通常是決定誰擁有寶貴的加密資產的唯一方式,所以他們代碼中的缺陷可能是災難性的。當然,如果他們被發現,他們可能會被黑客們利用來竊取加密資金。根據ICO追蹤公司CoinSchedule的數據,僅今年一年,公司就通過ICO募集了超過200億美元的資金。
“有一些缺陷是驚人的,”Guido告訴Fast Company。“如果你制作了它們,它們不僅高度嚴格,而且對于查看您的智能合約代碼的人來說,它們也是非常明顯的。”
其中最著名的錯誤是一個分散的、由以太坊驅動的投資基金The DAO,它代表了分布式自治組織。2016年,黑客利用代碼中的漏洞盜取了約5000萬美元的加密貨幣,不過后來以太坊本身也做了調整,以歸還被盜的資金。
自那以后,安全專家一直在努力尋找可能導致智能合約發生故障的因素,并開發工具來幫助自動檢查代碼中的錯誤。他們還對新的智能合同進行了審計,這些合同通常會公開發布,這些合同可以幫助投資者和最終用戶放心,他們不會因為程序故障而損失資金。
Trail of Bits發布了一些開源工具,用于分析和測試用Solidity編寫的程序,Solidity是一種常用的編程語言,用于編寫智能合約。Guido說,開發Solidity程序的標準工具不像開發更成熟的語言那樣復雜,因此它們可以讓bug在部署專門的軟件之前一直運行。
“它缺乏許多其他現代語言所具有的安全保障,”他說。
當智能合同被愚蠢的錯誤所困擾時
智能合同可能會成為可能影響其他軟件的一些相同類型的 bug 的犧牲品, 如基本算術錯誤或程序員無意中重用了多個值的相同變量名。但是, 它們也可能受到特殊類別的錯誤的影響: 可利用對區塊鏈代碼可用的計算能力的限制來觸發拒絕服務攻擊, 以超出其處理能力的數據來壓倒智能合同。對某些數值的大小的限制會導致錯誤, 在這種情況下, 過多的數字會回退到零, 類似于臭名昭著的 Y2K bug。這可能會導致大量賬戶被削減至幾美分,甚至是負余額。
一些不安全的代碼可以使用自動分析工具檢測, 而無需進行過多的人工干預: 如果一個合同允許任何用戶提取其資金, 這可能是一個錯誤, 連鎖安全公司聯合創始人兼首席科學家Petar Tsankov說。該公司是一家瑞士初創公司,從久負盛名的技術大學蘇黎世分校分拆出來。ChainSecurity 開發了一種稱為 Securify 的工具, 它可以快速地發現和標記凝固代碼中潛在的問題。
但是其他的bug只是在合同實際應該做的事情的背景下被發現, 這意味著安全審核的第一階段通常是與開發人員坐下來, 以準確理解他們的合同希望完成什么。
Tsankov 說: "通常, 關于合同應該做什么, 有非常非正式的文件。
然后,通常會出現一種混合的人類分析和自動化測試,以確定是否有可能使合同違反其規范。Bits 的蹤跡開發了一種稱為Echidna的工具, 它可以通過各種輸入快速執行智能合約,尋找讓代碼出錯的方法。當發現錯誤時,安全測試人員將為開發人員標記他們,并幫助確保他們在代碼部署到實時的公共區塊鏈之前就得到了解決。
安全公司通常會說,他們的客戶在了解常見錯誤后,在編寫安全的智能合同代碼方面越來越熟練。Zerouali說,隨著技術的成熟和程序員共享有效的實踐,這種模式以前在包括web本身在內的科技行業的其他角落都出現過。
但與此同時加密創業公司曾一度只需要對最初發行代幣的合同進行審計,現在卻在利用其ICO收入來構建更復雜的產品。Tsankov說,其中包括更復雜的智能合同,它們需要審計自己的bug。
“現在,他們都開始回到我們身邊,”他說。“復雜性的程度正在迅速上升。