作者:啟明星辰ADLab
1 概述
隨着區塊鏈、以太坊技術的興起和不斷成熟,安全問題也隨之而來,今年智能合約漏洞已經讓多個區塊鏈項目價值瞬間歸零。智能合約的開發語言、設計模式、運行機制都與傳統應用有較大差異,它既有傳統的安全風險(如整數溢出等),又有獨特的新型風險(如私有變量不“私有”和特殊類型變量覆蓋等)。研發人員如果不能深刻理解這些核心原理,則很容易編寫出存在漏洞的智能合約;惡意合約也可以通過這種方法留下隱蔽漏洞,欺騙合約投資人並暗地裡收割。本文以WCTF2018的一道智能合約漏洞賽題[1]為例,從solidity語言特性出發,深度解讀以太坊智能合約漏洞原理和攻擊利用。
2 漏洞合約分析
該合約是一個銀行類合約,用戶可以存入eth到該合約,並在存入到期之後取出。原題對該合約描述如下: