文/蔡孟凌
近年來不少企業都開始想邁入 Web3 的數位浪潮,在著迷於區塊鏈的技術和商業模式時,我們不能不留意「區塊鏈的資安議題」。我們將會就這個主題展開一系列的討論,本期先從區塊鏈的底層技術、智能合約切入,之後會再陸續探討區塊鏈應用的各種資安風險。
智能合約(Smart Contracts)最早是在1994年由 Nick Szabo 提出的概念,不過一直到 2015 年以太坊的創辦人Vitalik 推出了智能合約,並運行於以太坊上,才更廣為運用。
[ 加入 CIO Taiwan 官方 LINE 與 Facebook ,與全球CIO同步獲取精華見解 ]
智能合約其實和普通合約一樣,透過一段代碼去執行一組協議(命令),唯一的差別在於智能合約是運行在去中心化的區塊鏈環境上,並儲存在一個公共資料庫中,不能被更改,當協議中的條件得到滿足時,交易即會發生。因此,智能合約可以說是區塊鏈應用中最重要的功能之一,因為它實現了沒有第三方的可信任交易。在 2019 年底湧現的去中心化金融(Decentralized Finance,DeFi)浪潮吸引人們的目光,也就是讓借款者與放貸者直接透過智能合約完成借貸,因此智能合約也開始被廣泛被應用在各種場景。
然而,隨著區塊鏈的快速發展之下,各種智能合約充斥在市場上,如何維護智能合約的安全和高效執行,成為一個重要的議題。例如因智能合約的漏洞所引起的攻擊,導致參與者鉅額的損失,為了更好因應這樣的困境,開始有人提出應該要對區塊鏈做更全面的安全與正確性驗證。
區塊鏈安全
許多研究開始針對區塊鏈安全做探究,Alharby 和 Moorsel 發現區塊鏈中常見的風險包括 51% 攻擊、私鑰保管、犯罪活動、雙重支付問題、資訊洩漏等。另外在交易過程中,如果沒有按照正確的順序執行或是礦工惡意修改區塊的時間戳記,都可能會影響智能合約的正確性。目前已經有相關工具可以檢測,例如由新加坡國立大學研究人員於 2016 年 1 月開發的 Oyente 是第一個用於分析和檢測智能合約安全的工具,它能分析智能合約並回傳可能的 bug 攻擊(圖1)。
目前主要的合約檢測工具有:MythX、Mythril、Slither、 Contract-Library、 Echidna、 Manticore、 Oyente、 Securify、 SmartCheck、 Octopus、 sFuzz、 Vertigo 等。這些工具檢測的方式大多是以比對目前資料庫所蒐集到的漏洞程式碼來做比對,進行判斷是否與資料庫的內容一致,不過針對跨合約函數調用相關的漏洞有其侷限性。
智能合約漏洞掃描與審計
由於智能合約設計缺陷引起的漏洞也會造成巨大的損失,而且一旦觸發,合約就無法更改或停止,有時智能合約上的一個小錯誤可能就會破壞整個協議。例如穩定幣協議 Beanstalk Farms 被駭客盜走價值超過八千萬美元的加密貨幣,連帶造成超過 1.8 億美元的損失;2022 年 6 月 24 日以太坊與 Harmony 間跨鏈橋 Horizon 遭到攻擊,損失金額約 1 億美元;區塊鏈研究機構 Chainalysis 於 2021 年發布的報告指出,當年因加密駭客攻擊事件,受害者損失的總資產金額就高達 77 億美金!
由此可見,智能合約的安全性在區塊鏈上格外重要,在智能合約中涵蓋的各式代碼及程序若產生缺陷及失誤,將會導致安全上的漏洞,進而影響整個項目或系統的運行。現行已經有公司推出「區塊鏈合約檢測服務」( Blockchain Contract Audit,BCA ),針對區塊鏈佈署程式與智能合約漏洞提出相關建議及修正,並提供相應的審閱報告,為企業與項目的發行多一層安全保障。
以智能合約安全審計來說,包含 Web3 項目的上線前的代碼安全審計、項目運行時的風險預警與監控、加密貨幣被盜資產追回等安全審計與防禦部署服務。這樣的審計尤其對於委託乙方開發智能合約(例如 DeFi、NFT、GameFi 等)的甲方額外重要,由第三方做檢測可以減少相對的風險。
[ 閱讀所有蔡孟凌的文章 ]
整體來說,過去我們在開發程式所需要注意的資安問題,在區塊鏈的應用上亦然。和傳統資安不同的是,當智能合約在區塊鏈平台是做程式化的資產移轉,而這些資產都是加密貨幣(數位資產)時,會必須承擔交易加密貨幣的風險,而通常會比傳統的資安漏洞所造成的財物損失更多、影響範圍更大。
我們在智能合約的安全研究尚未成熟、區塊鏈隱私安全技術的侷限等,再加上目前並沒有法規明確規範,因此在損害賠償與責任歸屬也難以認定,這部分也是當前必須謹慎應對的問題。
(本文授權非營利轉載,請註明出處:CIO Taiwan)