OnPlace(OPL) 合約中驚現虛假燒幣漏洞 (CVE-2018-13151)

安比(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)實驗室創始人郭宇,中國科學技術大學博士、耶魯大學訪問學者、曾任中科大副教授。專注於形式化證明與系統軟件研究領域十餘年,具有豐富的金融安全產品研發經驗,是國內早期關注並研究比特幣與區塊鏈技術的科研人員之一。研究專長:區塊鏈技術、形式化驗證、程序語言理論、操作系統內核、計算機病毒。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章