「韓國以太坊」ICON爆代碼漏洞,所有交易暫停
矽谷Live / 實地探訪 /熱點探秘/ 深度探討
韓國國家級區塊鏈項目ICON(ICX)智能合約代碼近日被爆代碼存在安全漏洞,使transfer功能失效。雖然黑客無法利用這次漏洞盜幣,但該漏洞會導致包括轉賬、交易等重要功能無法正常使用。據聞,項目方已積極投入大量資源修復漏洞並保證交易不受影響。
ICON到底出了什麼安全漏洞?
在ICX的合約中,有一個功能可以開啟/關閉合約的轉賬功能。最初,此功能的設計是只有ICX合約的所有者擁有調用它的許可權;由於代碼寫錯了邏輯運算符號,導致除了合約所有者之外的任何人都能隨意開啟和關閉該合約的轉賬功能。
讓我們來看一下這段代碼:
require(msg.sender != walletAddress); // 錯誤!
從代碼邏輯上來看,「!=」 表示「不等於」, 「==」 表示「等於」.
很明顯的,這行代碼應該寫成:
require(msg.sender == walletAddress); // 正確!
事後來看,這幾行代碼所展現的錯誤很直接了當,可開發過程中要面對的是成百上千行代碼,這樣的繁雜就會帶來對漏洞的忽略。而傳統檢測和安全審計服務不僅耗時耗力,還容易出現人為失誤,導致不必要的損失。
怎麼保證智能合約代碼無漏洞?
為了探求如何能避免這類型的錯誤再次發生,小編請CertiK(Certik.org)--形式化驗證平台幫忙做了一個深入檢測,了解到CertiK如何通過將智能標籤運用到源代碼中,快速並且全自動化的檢測安全漏洞。
上圖就是CertiK檢測ICX漏洞的實際過程,完整的演示了漏洞的驗證過程及修復建議。據悉,ICX智能合約已經在上線做過多輪的安全「審計」,但可是這樣的錯誤還是成了漏網之魚。如果ICX當時能使用CertiK的形式化驗證服務,這次事故很可能可以避免。
最後,小編還是要提醒智能合約要上線的各位,儘早讓形式化驗證平台為你的合約保駕護航。
附上ICX源代碼:
TAG:矽谷密探 |