EOS.CYBEX孵化團隊鏈安科技發現EOS智慧合約可能出現溢位漏洞
編輯:鉛筆盒
據EOS.CYBEX孵化專案鏈安科技訊息,其研發的面向區塊鍊形式化驗證平臺VaaS發現,如果合約開發者不夠仔細,則基於EOS區塊鏈的代幣合約也同樣可能存在BEC代幣合約類似的整數溢位漏洞。
眼下Beauty Chain 美蜜/BEC代幣被盜事件,由於一行程式碼的安全漏洞引發其市值一夜歸零。該漏洞,由於合約開發者經驗不足導致合約程式碼中的bathTransfer函式出現了整型溢位的漏洞,使黑客利用該漏洞盜走
57,896,044,618,658,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000.792003956564819968 個BEC代幣。
針對此漏洞,成都鏈安科技通過其研發的VaaS形式化驗證平臺對EOS區塊鏈平臺的智慧合約進行了整型溢位漏洞檢查和安全驗證,發現基於EOS平臺開發類似智慧合約同樣可能出現整型溢位漏洞。下面以EOS代幣合約為例對該型別漏洞進行描述,該例項中設計並實現了一個向多人轉賬的智慧合約核心函式transfer,其原始碼如圖1所示:
圖1 transfer函式原始碼,同時向4個人轉賬
假設攻擊者呼叫該合約的transfer函式同時向4個人進行轉賬操作,並將balance引數的值設為2的63次方,函式呼叫過程如圖2所示,
圖2 黑客呼叫transfer函式同時向4人轉賬
接著,查詢以上地址餘額可發現,被轉賬人(tester)的餘額(100)沒有減少,而接收者(tester1、tester2、tester3、tester4)的賬戶餘額由於amount變數的溢位產生了非常大的數目(2的63次方),如圖3所示,
漏洞分析:balance是uint64資料型別,當取值為2的63次方時,由於小於uint64可取值的最大值,於是繞過了對balance的溢位邊界檢查;但是,當amount=balance*4計算時,amount便發生了溢位,使其值等於0,由於amount此時繞過了被減數大於減數的檢查,從而實現不消耗被轉賬人的balance的情況下,讓轉賬人的balance獲取非常大的值(2的63此方)。
為此,成都鏈安科技提示基於EOS的智慧合約開發者,在開發智慧合約的時候,應警覺整數溢位漏洞可能帶來的嚴重後果,對於每一步運算操作均進行邊界檢查。
針對此類問題,我們提出如下四種解決方案:
1. 在智慧合約部署前,通過VaaS平臺進行安全性和功能正確性的形式化驗證,事先預防這類問題的發生;目前VaaS平臺已經支援以太坊,EOS,Fabric等主流區塊鏈平臺智慧合約的形式化驗證,提供了高度自動化的智慧合約漏洞檢查,安全性、功能正確性的形式化驗證。
2. 我們正在針對EOS,以太坊等平臺開發安全的智慧合約開發模板,規範智慧合約的開發,提高合約安全性,同時降低合約開發門檻和難度;
3. 向社群提供經過VaaS平臺驗證的合約核心模組,使用者通過呼叫這些模組開發自己的智慧合約,以減少合約安全漏洞和邏輯漏洞的發生。如,我們正在基於EOS開發經過VaaS平臺形式化驗證的安全運算模組(如類似太坊SafeMath模組),以防止運算中導致的溢位和零除等漏洞。後續,我們將繼續為EOS、以太坊等多個社群開發更多的合約功能模組,供合約開發者使用。
4. 建議合約開發者使用EOS區塊鏈平臺提供的智慧合約程式設計Math
API介面則可防止該型別溢位漏洞。如,合約開發者可將uint型別的資料,先轉換成doule型別的資料,然後再使用EOS區塊鏈平臺提供的Math API中的double_add、double_mult等函式進行運算,最後將計算結果再轉換成uint型別資料輸出。通過我們的實驗和測試,發現該函式在進行大數相乘出現溢位的時候,會返回較大的值,無溢位出現,於是可以有效避免上述整型溢位的漏洞。但是VaaS同時也檢測出,Math API介面沒有對負數情況進行檢查,如果double運算的結果為負數,在將其強制轉換成uint型別時,將同時返回一個錯誤的較大的數值,針對此問題開發者需謹慎使用。
VaaS平臺將為建立安全的EOS社群不斷貢獻自己的力量。
歡迎大家關注我們的微信公眾號,或者給我們發郵件:
vaas@lianantech.com
本文僅代表作者個人觀點,不代表區塊鏈鉛筆的立場,不構成投資建議,內容僅供參考。
3分鐘瞭解什麼是區塊鏈?(中文動畫)|(英文動畫教程)
3分鐘瞭解比特幣挖礦和區塊鏈共識機制?(中文動畫)|(英文動畫教程)
關注本公眾號後,進入公眾號
回覆關鍵詞可以查閱資料,以下是部分關鍵詞
回覆 WEF ,檢視《WEF:世界經濟論壇認為區塊鏈是網際網路金融行業的未來報告》
回覆 智慧合約 ,檢視《巴克萊銀行報告》
回覆 moody ,檢視《穆迪120個區塊鏈專案報告》
回覆 SWIFT ,檢視SWIFT《區塊鏈對證券交易全流程產生的影響及潛力》報告
回覆 論文11 ,檢視論文《可擴充套件的去中心區塊鏈》
回覆 埃森哲2 ,檢視埃森哲《區塊鏈每年可以為投資銀行節省120億美元》報告
回覆 聯合國報告 ,檢視聯合國報告《數字貨幣和區塊鏈技術在構建社會和可信金融之間扮演的角色》
回覆 使用者特性 ,檢視普林斯頓大學首本比特幣教科書初稿《比特幣使用者的特性(Characteristics of Bitcoin Users)》
回覆 普林斯頓 ,檢視普林斯頓大學首本比特幣教科書初稿《比特幣和數字貨幣技術(Bitcoin and Cryptocurrency Technologies)》
回覆 IMF,檢視國際貨幣基金組織報告《Virtual Currencies and Beyond: Initial Considerations》
回覆 DTCC ,檢視美國存管信託清算公司報告《DTCC: 擁抱分散式》
回覆 廣發 ,檢視報告《科技前沿報告:區塊鏈:正快速走進公眾和政策視野》
回覆 川財1 ,檢視報告《川財證券:區塊鏈技術調研報告之一:具有顛覆所有行業的可能性》
回覆 川財2 ,檢視報告《川財證券:區塊鏈技術調研報告之二:區塊鏈技術進化論-區塊鏈技術的國內實踐和展望》
回覆 桑坦德 ,檢視桑坦德銀行報告《The Fintech 2.0 Paper: rebooting financial services》
回覆 拜占庭 ,檢視《拜占庭將軍問題詳解》
回覆 論文1 ,檢視論文《比特幣閃電網路:可擴充套件的離線即時支付》
回覆 論文2 ,檢視論文《比特幣骨幹協議》
回覆 論文3 ,檢視論文《數字貨幣是否應該進入Barbados央行國際儲備貨幣組合中》
回覆 幫助 ,檢視本公眾號全部關鍵詞列表
相關文章
- 以太坊智慧合約 Hexagon 存在溢位漏洞Go
- ERC20 智慧合約整數溢位系列漏洞披露
- 智慧合約安全之整型溢位
- EOS開發完全解析(六):手摸手實現第一個EOS智慧合約——Hello EOS
- 3.06 EOS智慧合約(上)
- 3.08 EOS智慧合約(下)
- 從CVE復現看棧溢位漏洞利用
- EOS智慧合約與DApp開發入門教程APP
- 3.10 EOS智慧合約案例實踐
- ERC223智慧合約ATN幣出現owner許可權竊取漏洞
- 區塊鏈平臺EOS現系列高危安全漏洞區塊鏈
- 長沙幣安鏈智慧合約開發技術
- 【許曉笛】開發第一個 EOS 智慧合約
- EOS系統合約鏈賬戶介紹
- Bsc幣安鏈智慧合約Dapp開發技術搭建APP
- 區塊鏈智慧合約開發區塊鏈
- 多行文字溢位時出現省略號
- 以太坊智慧合約開發第四篇:實現Hello World智慧合約
- 從零開始復現 DIR-815 棧溢位漏洞
- 【許曉笛】 EOS 智慧合約案例解析(3)
- 【許曉笛】 EOS 智慧合約案例解析(2)
- 【許曉笛】 EOS智慧合約案例解析(1)
- BSC鏈智慧合約dapp系統定製開發(現成原始碼搭建)APP原始碼
- MikroTik RouterOS 中發現了可遠端利用的緩衝區溢位漏洞ROS
- 這些智慧合約漏洞,可能會影響你的賬戶安全!
- 什麼是智慧合約漏洞?
- 【劉文彬】【精解】EOS智慧合約演練
- EOS基礎全家桶(十三)智慧合約基礎
- Dapp智慧合約遊戲鏈遊開發丨智慧合約遊戲鏈遊系統開發案例版APP遊戲
- 智慧合約鏈遊開發詳情丨智慧合約鏈遊系統開發(開發方案)及原始碼分析原始碼
- 區塊鏈BSC智慧合約DAPP開發區塊鏈APP
- DLink 815路由器棧溢位漏洞分析與復現路由器
- 馬蹄鏈Dapp智慧合約(系統開發)案例丨馬蹄鏈MATIC智慧合約技術開發原理APP
- BEC合約出現重大漏洞,攻擊者可無限生成代幣
- CODESYS V3遠端堆溢位漏洞復現(環境配置+復現過程)
- EOS基礎全家桶(十五)智慧合約進階2
- 美鏈BEC合約漏洞技術分析
- DAPP幣安鏈智慧合約系統開發規則(原始碼示例)APP原始碼