韓國國家級區塊鏈項目ICON(ICX)智能合約代碼近日被爆代碼存在安全漏洞,使transfer功能失效。雖然黑客無法利用這次漏洞盜幣,但該漏洞會導致包括轉賬、交易等重要功能無法正常使用。據聞,項目方已積極投入大量資源修復漏洞并保證交易不受影響。
ICON到底出了什么安全漏洞?
在ICX的合約中,有一個功能可以開啟/關閉合約的轉賬功能。最初,此功能的設計是只有ICX合約的所有者擁有調用它的權限;由于代碼寫錯了邏輯運算符號,導致除了合約所有者之外的任何人都能隨意開啟和關閉該合約的轉賬功能。
讓我們來看一下這段代碼:
require(msg.sender != walletAddress); // 錯誤!
從代碼邏輯上來看,“!=” 表示“不等于”, “==” 表示“等于”.
很明顯的,這行代碼應該寫成:
require(msg.sender == walletAddress); // 正確!
事后來看,這幾行代碼所展現的錯誤很直接了當,可開發過程中要面對的是成百上千行代碼,這樣的繁雜就會帶來對漏洞的忽略。而傳統檢測和安全審計服務不僅耗時耗力,還容易出現人為失誤,導致不必要的損失。
怎么保證智能合約代碼無漏洞?
為了探求如何能避免這類型的錯誤再次發生,小編請CertiK(Certik.org)--形式化驗證平臺幫忙做了一個深入檢測,了解到CertiK如何通過將智能標簽運用到源代碼中,快速并且全自動化的檢測安全漏洞。

上圖就是CertiK檢測ICX漏洞的實際過程,完整的演示了漏洞的驗證過程及修復建議。據悉,ICX智能合約已經在上線做過多輪的安全“審計”,但可是這樣的錯誤還是成了漏網之魚。如果ICX當時能使用CertiK的形式化驗證服務,這次事故很可能可以避免。
最后,小編還是要提醒智能合約要上線的各位,盡早讓形式化驗證平臺為你的合約保駕護航。
附上ICX源代碼:

版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。