區塊鏈技術引起了全球企業的興趣。其優勢包括不可篡改和透明性,這促使寶馬和博世等金融業以外的傳統企業嘗試使用智能合約來創建更高效的供應鏈並製造更智能的工程產品。
智能合約本質上是編碼到特定區塊鏈的軟件,它可以正式化並執行多方之間的協議,從而消除了對可信第三方中介的需求,節省了時間,並允許基於多方共識的驗證。它們可用於各種活動,例如遺囑、象棋遊戲甚至轉讓契約。
儘管區塊鏈具有顛覆性的潛力和備受推崇的功能,但過去兩年針對智能合約的搶劫數量卻增加了 12 倍以上。如果他們如此聰明,為什麼我們會看到搶劫案如此大量增加?
為了更好地理解,讓我們澄清一下區塊鏈和智能合約之間的關係。
去中心化
將區塊鏈網路(如亞馬遜的 AWS 平台)及其每個智慧合約視為伺服器。有了區塊鏈,就不再存在可供駭客利用的單一集中式伺服器,這使得網路犯罪分子更難以使用傳統的駭客方法,例如特洛伊木馬、實體攻擊和勒索軟體。區塊鏈透過消除網路的單點故障來應對這些問題。
雖然區塊鏈網路無法完全被駭客攻擊,但區塊鏈所支援的許多分散式應用程式和智慧合約卻可以被駭客攻擊。
由於去中心化金融(DeFi)的成功和影響力逐漸擴大,大量價值正在透過智慧合約轉移,這對駭客來說很有吸引力。隨著現實世界資產代幣化的增加,更多資產轉移到鏈上,這種威脅可能只會加劇。駭客攻擊對這個新興的區塊鏈產業構成了嚴重威脅,因為從智慧合約竊取的資產極難恢復。
對智能合約的威脅
與所有程式碼一樣,智能合約也容易出現人為錯誤。這些錯誤可能以打字錯誤、規格誤述或更嚴重的錯誤的形式出現,這些錯誤可用於破解或「欺騙」智能合約。與區塊鏈相反,不能保證合約經過同行評審或驗證。
雖然智慧合約審計可以避免錯誤的編碼,但其他威脅更為複雜。例如,預設可見性漏洞是一個常見錯誤,當未指定函數的可見性並且某些函數被公開時,就會發生這種錯誤。例如,駭客可以存取鑄幣功能並創建數十億個相關代幣。幸運的是,可以透過執行審核來防止此漏洞,確保所有功能預設為私有。
由編碼錯誤引起的另一個更複雜和嚴重的威脅是重入攻擊。當攻擊者利用智能合約的外部函數呼叫並部署惡意智能合約與持有資金的智能合約進行互動時,就會發生這種情況。
2016 年以太坊早期發生的 DAO 事件證明了此類攻擊的危險性,並最終導致了以太坊經典的誕生。防止重入攻擊並不簡單,但有一些框架和協定可以減輕損害,其中包括 CEI(檢查、效果和互動)、重入防護等。
如果您精通智能合約程式碼,那麼閱讀程式碼本身總是一個巨大的優勢。正如在搬進新公寓之前閱讀合約可以保護您免受任何意外一樣,能夠閱讀智慧合約的程式碼可以揭示缺陷、惡意功能或不起作用或沒有意義的功能。
但是,如果您是不太精通技術的最終用戶,請僅使用具有廣泛使用的可公開存取程式碼的智慧合約。與編譯的智能合約相反,編譯的智能合約的程式碼是隱藏的,人們無法查看它,這是首選。
解決智能合約漏洞
我們不要忘記,大多數智能合約管理員都會給自己留下一些管理權限,通常是為了在發布後進行更改。要存取這些權限,管理員需要使用他們的私鑰。這些私鑰是另一個漏洞,如果它們沒有正確保管(即在離線冷庫中),以某種方式獲得存取權限的駭客可以更改智慧合約並將資金轉移到他們希望的任何地方。
最近,歐洲議會強制要求採用終止開關機制,以減輕智能合約遭到破壞時造成的損害。雖然監管機構的目的是為人們提供更多對其個人資料的保護,但該法案引起了 Web3 社群的擔憂。
如果實施不正確,終止開關可能會破壞整個智能合約以及其中儲存的任何價值。更好的實施方式是啟動暫停功能,在出現安全威脅時,該功能可以凍結智慧合約,並在問題解決後重新啟動它。