一些智慧合約存在筆誤,一個字母可造成代幣千萬市值蒸發!
在昨日,BCSEC安全團隊發現了某已經流通於多個交易所的ERC20代幣存在一個高危漏洞,隨後便通報給了廠商,沒有馬上披漏。但是今天BCSEC安全團隊發現此漏洞已經被利用,而且廠商已經進行了相應的措施,於是我們決定將此漏洞詳情進行披漏。
編碼筆誤問題
在開發者進行編碼的過程中,出現筆誤是非常常見的問題,有些筆誤非常隱蔽,在IDE不進行提示或報錯的情況下,用人眼非常難以發現,而且這種問題在以往的傳統安全中就發生過不少。
2016年Chrome V8引擎因開發者筆誤造成任意程式碼執行
由開發者筆誤把>= 錯誤地寫成了 ==造成的CloudFlare漏洞洩露海量使用者資訊
...
這些是在以往開發者在傳統應用上由於編碼筆誤造成的嚴重漏洞,而上面的例子僅是冰山一角。
在傳統應用中出現了這種漏洞的時候,常見的做法是直接釋出新版本通過升級來修補漏洞。
但在區塊鏈應用上,修復漏洞將變得異常艱難。
然而,在區塊鏈應用漏洞難以修復的情況下,還是出現了很多非常低階的筆誤問題。
LCX、YEED等ERC20代幣存在可被任意關停交易的漏洞,而其根本原因竟是由於開發者將許可權判斷中的==寫成了!=,最終導致許可權判斷失效。
ERC20代幣FuturXe存在任意轉賬漏洞,其根本原因是由於開發者將可用餘額判斷中的<寫成了>=,最終導致可有餘額判斷失效。
...
以上編碼筆誤問題都直接造成了非常嚴重的經濟損失,而其原因僅僅是開發者將某個字元寫錯造成。
建構函式筆誤
在關鍵操作的程式碼中,任何一個字元都必須要謹慎,而建構函式是進行非常敏感的初始化操作。
這時候若存在編碼筆誤會造成怎樣的影響呢,我們來看下面這個案例。
MorphToken,一個具有數千萬市值萬的ERC20代幣。
以上是MorphToken的部分程式碼,仔細看這段程式碼其實是沒有問題的,但是這個合約繼承了一個名為Owned的合約,而問題就出在這裡,我們繼續看。
乍一看,沒有問題,一段短而精悍的鑑權合約。
但是我們仔細看看建構函式
function owned() public
我們再看看合約名
contract Owned
發現問題沒有?合約名和建構函式大小寫不一致!
這會造成什麼問題?建構函式被識別為普通函式,任何人可以竊取owner許可權...
這不是個例。
BCSEC團隊使用內部掃描器就掃描出來50多種筆誤合約,而其中可以竊取owner許可權的更是有十多個。
如何預防?
使用solidity高於0.4.22的編譯器,並把建構函式寫為constructor。
這是solidity編譯器再0.4.22新增的一個特性,可以將建構函式寫為constructor避免程式設計師筆誤。
漏洞已經被黑客利用
在昨天我們發現此漏洞的時候我們及時通報給了廠商,但廠商並沒有給予回應。
我們打算等待廠商修復之後再進行披漏!
然而!就在13小時前,漏洞就已經被利用!
0x82d71f44fe03a0ecfe6765d45a871b7b9c30dd3e使用者竊取了owner許可權
隨後此使用者開始利用owner許可權對自己進行發幣!
而管理員的反應也非常迅速,於是他們展開了一場巔峰對決。。。
0x1ff使用者就是原管理員,在原管理員發現漏洞之後火速使用了數次漏洞函式,原管理員和黑客在爭奪owner許可權!
最終,原管理員終於奪回了owner許可權!並使用合約函式拉黑了黑客的賬戶。
這場對決到到此結束,我們來看看市場反應。
果不其然,跌到了歷史最低!
而這位黑客已經功成身退,賺的盆滿缽滿了。
黑客賣了近60萬個Morph ,大約價值為430個以太坊,換成人民幣就是130萬!
最後 ,官方也釋出了公告。
總結
關於區塊鏈的程式碼只要被去中心化後相要再修復是非常艱難的,所以上公鏈之前必須要對程式碼進行多方審計,而且不能放過任何一個細節。
相關文章
- Dapp 合約代幣系統開發智慧合約APP
- 用solidity語言開發代幣智慧合約Solid
- 智慧合約DAPP代幣合約做市質押系統開發demoAPP
- Defi代幣預售合約LP質押挖礦系統開發(智慧合約元件分析)元件
- 代幣智慧合約流動性質押挖礦開發穩定版丨代幣智慧合約流動性質押挖礦系統開發方案
- 代幣智慧合約質押流動性挖礦分紅開發丨代幣智慧合約質押流動性挖礦分紅系統開發
- 13個月內騰訊和阿里市值蒸發6萬億人民幣阿里
- DAPP代幣預售/智慧合約/NFT質押合約系統開發/Solidity編寫APPSolid
- DAPP合約代幣燃燒挖礦系統開發丨智慧合約DAPP技術框架APP框架
- 如何編寫一個可升級的智慧合約
- 用智圖SmartX智慧合約讓你10秒發行自己的代幣
- DAPP公鏈代幣質押挖礦系統開發(智慧合約)APP
- DApp智慧合約鏈上盲盒代幣挖礦系統開發APP
- DAPP公鏈代幣智慧合約質押挖礦系統開發APP
- 智慧合約代幣流動性挖礦系統開發功能分析
- DAPP代幣智慧合約質押挖礦系統開發方案搭建APP
- Defi/dapp代幣質押(智慧合約)持幣生息系統開發專案設計APP
- 在 NEO 上釋出代幣合約
- IDO代幣預售智慧合約系統dapp開發技術原理APP
- 2018年1月比特幣市值蒸發440億美元比特幣
- 代幣合約系統開發搭建丨DAPP代幣模式專案開發技術方案APP模式
- defi/dapp/lp代幣合約挖礦系統開發(開發案例)丨代幣合約挖礦系統開發(原始碼及說明)APP原始碼
- DAPP/Defi代幣智慧合約質押挖礦系統技術開發原理APP
- DAPP智慧合約燃燒代幣挖礦原始碼系統開發技術APP原始碼
- 智慧合約DeFi質押代幣模式系統開發流程制度方案(成熟技術)模式
- Go-Ethereum 1.7.2 結合 Mist 0.9.2 實現代幣智慧合約的例項Go
- DAPP合約代幣分紅模式系統開發案例APP模式
- dapp合約代幣理財系統開發方案模式APP模式
- Demo/代幣質押合約系統開發功能/DAPP合約系統開發專案方案APP
- 長沙幣安鏈智慧合約開發技術
- 快速上手第一個智慧合約
- 【許曉笛】開發第一個 EOS 智慧合約
- DAPP智慧合約代幣流動性挖礦系統開發(技術細節)APP
- ARB鏈質押挖礦代幣空投dapp系統開發智慧合約定製APP
- ARB鏈代幣空投小遊戲專案dapp系統開發智慧合約定製遊戲APP
- 代幣合約流動性質押挖礦開發原始碼版丨代幣合約流動性質押挖礦系統開發(成熟方案)原始碼
- B安鏈合約代幣預售挖礦系統開發
- DAPP代幣挖礦模式系統開發|DAPP合約APP模式