麻豆国内精品欧美在线-麻豆国内精品久久久久久-麻豆国产在线观看一区二区-麻豆国产在线观看免费-麻豆国产原创-麻豆国产一区二区在线观看

【警告】這個漏洞會讓你的代幣歸零,來了解一下!區塊鏈

區塊鏈趣談 2018-07-22 07:35
分享到:
導讀

始作俑者是黑客,他們瞄準的是這些項目中的溢出漏洞,試圖一擊必殺。

轉載公眾號:【白話區塊鏈


今年4月起,一些Token相繼開始自我膨脹,一夜間供應量突破上限千億倍,雖是發行者無心之失,并且挽救妥當,沒有直接損失,但此舉卻激起持幣者的恐慌,幣價大跌。

始作俑者是黑客,他們瞄準的是這些項目中的溢出漏洞,試圖一擊必殺。

一、什么是溢出漏洞?

溢出漏洞的全名是“緩沖區溢出漏洞”,緩沖區是內存里的一塊地皮,用來存放變量,變量是運算過程中變來變去的值,比如“當前時間”,每過一毫秒,這個變量就更新一小下。

如果把緩沖區看成一副背面向上的麻將牌,那么變量就是翻出來的牌,變量值就雕刻在上面。計算過程變化,變量也會變化,比如“發財”會變成“紅中”、甚至兩個“東風”。

?

但是,不管變量怎么變,程序預先給變量設定好的邊界永遠不變。

比如上圖,如果運算中變量變得特別大,超出預先設定好的邊界(黃框),那么計算機就把超出邊界的值寫到黃框外面(“發”的右邊),但是,等其他程序要去調用這個變量時,讀到的只是黃框內的數值。這樣,不單讀取的數值會出錯,而且可能覆蓋其他變量的值,導致五迷三道的錯誤。

明白這個原理,我們很容易理解面對漏洞的黑客是如何下手的。

轉賬金額由轉賬者輸入,傳給變量,在代碼里,只要設置轉賬金額小于代幣總量即可,本來不會出現溢出。但為提高操作效率,很多項目都有多人轉賬(或批量轉賬)的功能,即:轉賬總額 = 人數 × 每人轉賬金額,同時,判斷能否轉賬的條件是:轉賬總額小于賬戶余額。

那么,漏洞來了:

黑客把“每人轉賬金額”設置成天文數字,那么由于溢出漏洞的存在,正確的數字溢到邊界外,導致系統看到的轉賬總額很小,誤以為轉賬總額小于賬戶余額,執行轉賬,最終給目標賬戶按“每人轉賬金額”入賬,但程序自己卻無法意識到“每人轉賬金額”是一個天文數字。

上面一段沒有看懂的話,舉例說明你肯定能懂:假設賬戶余額是10。在沒溢出前,轉賬總額計算結果是9999,10小于9999,代碼判斷不能轉賬;如果轉賬的總額為10001,但此時就溢出了,計算機不會拿10001去和10比較,而是拿0001去比較(也就是1)去和10比較,1小于10,所以執行轉賬,溢出的悲劇就此發生!

那是不是溢出漏洞沒法救呢?

不是的,只要增加一行代碼,做溢出判斷即可。但是,在千萬種加密數字貨幣中,總有一些項目開發者因為token上市太激動而“疏忽了”溢出判斷代碼,也總有個別項目會被“專業漏洞挖掘師傅戳中,悲劇由此而生。

那么,我們能不能從根本上防止溢出漏洞呢?

答案是不能。

二、溢出漏洞的根源

很多項目發行時使用以太坊網絡,而以太坊網絡使用的是賬戶余額模式,即用最新數據覆蓋原有數據,賬戶余額模式本身沒有問題,但它的復雜性卻是溢出漏洞的根源。因為所有交易以結果為準,而過程卻需要人為控制,也就是說,萬一代碼里藏著致命漏洞,作惡者可以利用它操縱交易,最終讓項目”雷暴“。

沒有”雷暴“的項目不代表必然沒有溢出漏洞,可能問題現在剛好還沒被發現。

與以太坊賬戶余額系統相對應的模式是UTXO,UTXO的核心是基于交易記錄,模型保證每筆交易的進出總量相等,而且可追溯,UTXO注重交易本身的安全性,天然沒有這道裂痕,這就是比特幣在安全性上高出以太坊一個頭的原因:比特幣使用UTXO模式。

以太坊的創始人Vitalic曾出于安全上的考慮,想把以太坊從賬戶余額模式換成UTXO模式,但執行下去發現,一旦為了安全性使用了UTXO模型,就很難兼顧以太坊性能,換句話說,也就是慢。

UTXO必須得靠以太坊底層的支持,但是隨著開發的逐步深入,Vitalic發現其困難深不見底,不單數據庫較大,而且很難實現接口程序,相當于一場大規模變性手術,需要幾年時間和幾億元的投入,不知道V神在拿起刀的一刻還有沒有信心。

那么,我們能否借鑒主流操作系統的經驗來杜絕溢出漏洞呢?答案是很難。

三、不可避免的裂縫

我們平時使用的操作系統(如:Windows、MacOS、Android和iOS等)處處都有緩沖區,本來會有很多溢出漏洞,但由于大量工程師多年的維護,主流操作系統的溢出漏洞少之又少??墒?,新發行的代幣代碼中,溢出漏洞被發現的概率天然很高。

代幣的安全漏洞分兩類:

第一類底層公鏈的漏洞,即以太坊的漏洞,一旦被黑客抓包可能血流成河。這方面以太坊防守得很好,這兩年扛起很多幣的ICO,沒有發生過事故,不過這只代表過去,隨著以太坊的升級之路往前走,新代碼隨時會伴隨新漏洞。

第二類是代幣本身的漏洞,開篇的漏洞就屬于這種,黑客攻擊起來最多損傷一種幣,其他幣不受影響,需要開發者自己小心。

考慮到底層公鏈以太坊沒有使用UTXO結構,隨著升級漏洞難免會出現,基于以太坊發行的新幣流通時間較短,所以可以判定,溢出漏洞不會停止,甚至會圈養一批職業漏洞挖掘者

職業漏洞挖掘者天然會遭遇職業交易所的抵抗,比如延長提幣時間,回滾非法交易等,直接損失也許能止住,但從那刻起,持幣者心里的恐懼就會像蘑菇云一樣騰起,久久不散。

結語

人們最早發現“溢出漏洞”是在1972年,而后十多年的時間里沒人把它當回事。1988年有個叫莫里斯的大一新生碼了一篇99行的代碼,利用溢出漏洞造成6000多臺計算機宕機昏迷、損失過億,最終把自己送進大牢。

而后有很多人依靠溢出漏洞潛入學校系統,修改成績。因為損失有限而且難以察覺,在很多行業里,溢出漏洞并不是什么大不了的事。但是,金融領域卻完全不一樣。

金融機構會對代碼進行安全審計,避免低級失誤摧毀高級項目。但是,在加密數字貨幣世界,一盆代碼剛寫完只需拍一下回車就能往市場里端,很多投資人背著雙手聽完項目發布會,心潮澎湃面帶緋紅地下單,而對審核代碼這件事卻缺乏重視,悲劇自然不可避免。

沒有人可以保證開發人員都擁有完美的邏輯,沒有人可以保證測試人員可以測出所有的錯誤,但代碼審計可以在一定程度上保證合約安全性,否則你必須承擔像某些項目那樣的風險:在代碼里隱隱地藏著一些白皮書里沒寫的帝王級功能:隨意發行、凍結或銷毀任何人賬戶里的Token【具體分析請參考https://medium.com/unchained-reports/bancor-unchained-all-your-token-are-belong-to-us-d6bb00871e86】。

代碼審計需要專業度,甚至出高價請專業的審計機構檢查都顯得很便宜。但即使這樣,也很難避免藏在深處的其他漏洞。而對于我們這些非專業人士而言,最好的代碼審計員是時間,只有時間才能幫我們篩出沒有裂縫的項目。

所以,不用著急,慢慢來。

附:

某個被溢出攻擊的項目代碼,看完這篇文章后,耐心讀讀,你一定能讀懂。

那些有問題的代碼產生了有問題的結果,被以太坊的網絡一直記錄著,永遠沒有辦法抹去。

?

?


——End——

『聲明:文章為作者獨立觀點,不代表白話區塊鏈立場,亦不構成任何投資意見或建議?!?/strong>


漏洞 溢出 代碼 項目 變量
分享到:

1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。


專題報道

主站蜘蛛池模板: 91成| 操比图片 | 国内精品视频九九九九 | 欧美亚洲第一区 | 欧美日韩国产精品自在自线 | chinese男同志同性twink | 22sihu国产精品视频影视资讯 | 5g影院天天爽爽 | 欧美一级片在线免费观看 | 国产精品国产国产aⅴ | 我的青梅竹马是消防员2季未增删免费 | 美女被免费视频 | 91国内精品线免费播放 | 操美女 | 蛮荒的童话未删减在线观看 | 国内精品免费一区二区三区 | aaaa黄色片| 性xxxxⅹhd成人 | 免费视频亚洲 | 22sihu国产精品视频影视资讯 | 国内9lporm自拍视频区 | 大桥未久aⅴ一区二区 | 国产在线影院 | 成人欧美视频在线看免费 | 日岳母小说 | 亚洲国产成人久久综合一区 | 黄 色 成 年人在线 幻女free性俄罗斯第一次摘花 | 2015小明台湾永久区域免费 | 成人免费观看网欧美片 | 2021年国内自拍 | 亚洲欧美日韩精品久久亚洲区 | 亚洲国产精品久久久久久 | 国内精品自产拍在线观看91 | 亚洲一区二区福利视频 | 四虎1515hh.com| 欧美日韩在线观看一区二区 | 国产91在线精品狼人 | 亚洲欧美日韩另类在线一 | 91国内精品线免费播放 | 国产视频在线一区 | 魔法满屋免费观看完整版中文 |