安比(SECBIT)實驗室發現極罕見的由乘方運算導致整數溢出,進而引發虛假燒幣的安全漏洞。
7 月 5 日,安比(SECBIT)實驗室發現 OnPlace (OPL) Token 合約中存在整數溢出漏洞(CVE-2018-13151 fake-burn)。該合約燒幣功能存在乘方運算可導整數溢出,通過精心構造指數,使得燒幣的實際值爲零(虛假燒幣)。
黑客可通過構造攻擊參數,在自身餘額並不減少的情況下,觸發燒幣 Burn()
事件。
安比(SECBIT)實驗室已於 7 月 16 日嘗試郵件聯繫項目方,對方尚無反饋。
建議項目方立即廢棄該合約,並重新發布修復後合約。DApp 開發者和項目方切勿信任此合約的燒幣 Burn()
事件。
問題合約地址:0x12AC8d8F0F48b7954bcdA736AF0576a12Dc8C387
OPL Token 目前並未上線交易所,但目前仍有較活躍的交易,疑似處於衆籌階段。
問題合約代碼 burnWithDecimals()
函數中 10 ** _dec
這一乘方操作存在整數溢出漏洞,可使計算結果爲 0
。若 _dec
傳入值大於 255
,則最終 _value
值會被更新爲 0
。
黑客可通過構造攻擊參數,在自身餘額並不減少的情況下,觸發燒幣 Burn()
事件。如果有 DApp 監聽此事件並根據燃燒代幣的數值進行下一步操作,黑客則完成了虛假燒幣操作,後果將十分嚴重。
安比(SECBIT)實驗室提醒開發者,乘方操作極易發生溢出,而常見 SafeMath 只涉及了加減乘除操作,開發者使用時應當慎之又慎。
事實上此合約還存在其他問題,如 burnWithDecimals()
中的乘法操作也沒有做整數溢出防護,emission()
函數也有類似問題。
另外安比(SECBIT)實驗室風險監控平臺顯示,存在同樣問題的合約還有一個。
地址 | 合約名稱 | 交易量 |
---|---|---|
0x745Fa4002332C020f6a05B3FE04BCCf060e36dD3 | Quartex (QTX) | 2 |
該問題已收錄至 智能合約風險列表, 該列表由安比(SECBIT)實驗室發起共建並持續維護,我們將不間斷更新問題 Token 合約信息 [1]。
智能合約風險列表倉庫地址 https://github.com/sec-bit/awesome-buggy-erc20-tokens
安比(SECBIT)實驗室再次呼籲,項目方發行 Token 一定要慎之又慎,遵守智能合約安全開發規範,引入安全審計流程,必要的時候採用形式化驗證 手段,確保萬無一失。
智能合約形式化驗證示例:https://github.com/sec-bit/tokenlibs-with-proofs
參考文獻
[1] 智能合約風險列表(awesome-buggy-erc20-tokens) https://github.com/sec-bit/awesome-buggy-erc20-tokens
以上數據均由安比(SECBIT)實驗室提供,合作交流請聯繫[email protected]。
安比(SECBIT)實驗室
安比(SECBIT)實驗室專注於區塊鏈與智能合約安全問題,全方位監控智能合約安全漏洞、提供專業合約安全審計服務,在智能合約安全技術上開展全方位深入研究,致力於參與共建共識、可信、有序的區塊鏈經濟體。
安比(SECBIT)實驗室創始人郭宇,中國科學技術大學博士、耶魯大學訪問學者、曾任中科大副教授。專注於形式化證明與系統軟件研究領域十餘年,具有豐富的金融安全產品研發經驗,是國內早期關注並研究比特幣與區塊鏈技術的科研人員之一。研究專長:區塊鏈技術、形式化驗證、程序語言理論、操作系統內核、計算機病毒。