胡立
在比特幣擊穿6 000美元底線后,以太坊又爆隱患。近日,區(qū)塊鏈安全公司PeckShield披露了一個(gè)安全漏洞:通過(guò)發(fā)送一個(gè)惡意報(bào)文,攻擊者可向以太坊發(fā)動(dòng)攻擊。一旦成功,以太坊2/3的節(jié)點(diǎn)將停擺。
“致命報(bào)文”
這個(gè)漏洞,被命名為:“致命報(bào)文”。它出現(xiàn)在以太坊官方客戶端geth上。后者對(duì)于以太坊至關(guān)重要:有大約70%的節(jié)點(diǎn)運(yùn)行在geth之上,包括交易所和礦池這些關(guān)鍵節(jié)點(diǎn)。通過(guò)這個(gè)漏洞,攻擊者可以直接讓以太坊癱瘓,一旦成功,以太坊市場(chǎng)將面臨巨震。
PeckShield揭示了“致命報(bào)文”的漏洞細(xì)節(jié):以太坊的核心,在于所有的客戶端都必須遵守同樣的協(xié)議,以保持共識(shí)。這些協(xié)議由RLPx、DeVp2p和其他子協(xié)議組成,后者包括以太坊線路協(xié)議、輕量級(jí)以太坊協(xié)議等。
為了支持輕量級(jí)的客戶端,輕量級(jí)以太坊子協(xié)議允許以太坊節(jié)點(diǎn)在同步獲取區(qū)塊時(shí),僅下載區(qū)塊的頭部,需要時(shí)再獲取區(qū)塊的其他部分。為了實(shí)現(xiàn)這一功能,還需要一個(gè)全節(jié)點(diǎn)(或archive節(jié)點(diǎn))作為L(zhǎng)ES服務(wù)器,為輕量級(jí)節(jié)點(diǎn)提供服務(wù)。
在向LES服務(wù)器請(qǐng)求區(qū)塊頭部時(shí),LES客戶端會(huì)發(fā)起類(lèi)型為GetBlockHeaders的消息,而LES服務(wù)器的消息處理器負(fù)責(zé)相應(yīng)的解析工作。
然而,對(duì)作為輸入的請(qǐng)求,LES服務(wù)器并未驗(yàn)證其有效性。攻擊者可以構(gòu)造形如query.Skip = -1(0xFFF...F)這樣的惡意請(qǐng)求。
當(dāng)query.Skip+1被作為待分配數(shù)組的最大長(zhǎng)度參數(shù),傳遞至GetBlockHashesFromHash()方法時(shí),長(zhǎng)度為0的數(shù)組即被分配并返回。隨后,通過(guò)索引query.Skip = 0xFFF…F訪問(wèn)該長(zhǎng)度為0的數(shù)組時(shí),LES服務(wù)器就會(huì)徹底崩潰。
“在發(fā)現(xiàn)漏洞后的第一時(shí)間,我們就向以太坊基金會(huì)提交了漏洞報(bào)告。目前,以太坊geth客戶端的開(kāi)發(fā)團(tuán)隊(duì),已發(fā)布了相應(yīng)的補(bǔ)丁,”P(pán)eckShield說(shuō)道。
因此,雖然這次漏洞危害面廣,危險(xiǎn)性大,但并沒(méi)有對(duì)以太坊造成實(shí)際損失。PeckShield公司表示,“這只是一系列漏洞中的一個(gè),我們會(huì)隨時(shí)公布其他的漏洞?!?/p>
以太坊黑歷史
這不是以太坊第一次爆出安全漏洞,也不會(huì)是最后一次。在歷史上,以太坊曾出現(xiàn)過(guò)兩次重大漏洞事件。最著名的一次,是2016年6月的“The DAO大劫案”。它直接導(dǎo)致了以太坊的硬分叉。
The DAO是部署在以太坊網(wǎng)絡(luò)上的最大眾籌項(xiàng)目。黑客發(fā)現(xiàn)了其安全漏洞:其智能合約第666行代碼的首字母“t”,被誤寫(xiě)成了“T”。區(qū)塊鏈歷史上最嚴(yán)重的攻擊事件,就此發(fā)生。6個(gè)小時(shí)里,黑客竊取了The DAO 30%的以太幣———1 200萬(wàn)個(gè),它們當(dāng)時(shí)價(jià)值約6 000萬(wàn)美元。
這次的攻擊還引發(fā)了區(qū)塊鏈誕生至今最具爭(zhēng)議的事情之一。為將損失降到最小,以太坊團(tuán)隊(duì)決定修改以太坊軟件的代碼,強(qiáng)行把The DAO的所有資金,轉(zhuǎn)到一個(gè)特定的退款合約地址,以?shī)Z回黑客手中的資產(chǎn)。
因?yàn)閷?duì)此事看法迥異,以太坊分裂成了兩條鏈,一條是以太坊(ETH),一條是以太坊經(jīng)典(ETC)。它們各自代表不同的社區(qū)共識(shí)和價(jià)值觀。
2017年7月,Parity被爆出現(xiàn)重大安全漏洞:其多重簽名合約wallet.sol存在bug。官方確認(rèn),因?yàn)榇耸拢?50 000 ETH(約價(jià)值3 000萬(wàn)美元)被盜。但通過(guò)對(duì)比以太坊上的智能合約,一群計(jì)算機(jī)專(zhuān)家得出結(jié)論:這次攻擊至少造成了1.54億美元的損失。這一金額,是The DAO事件損失的3倍多。
賣(mài)水好生意
目前,全世界的數(shù)字貨幣已經(jīng)超過(guò)2 000種,市值超過(guò)3 300億美元,這是一個(gè)廣闊的市場(chǎng)。人人淘金時(shí),賣(mài)水就有市場(chǎng)。安全漏洞頻現(xiàn)時(shí),堵漏就成了好生意。
越來(lái)越多專(zhuān)注于區(qū)塊鏈安全的團(tuán)隊(duì),正在如春后雨筍般出現(xiàn)。知道創(chuàng)宇、慢霧科技、白帽匯、Haloblock.io、PeckShield等公司,都重兵投入?yún)^(qū)塊鏈安全領(lǐng)域?!霸趨^(qū)塊鏈產(chǎn)業(yè)發(fā)展初期,安全事件已經(jīng)頻繁暴露在各個(gè)環(huán)節(jié),包括:交易所、礦池、錢(qián)包、智能合約……因此,區(qū)塊鏈安全公司在早期區(qū)塊鏈生態(tài)建設(shè)上,起著關(guān)鍵作用?!盤(pán)eckShield公司工作人員表示。
目前,市場(chǎng)上的區(qū)塊鏈安全公司,不僅提供智能合約審計(jì)服務(wù),還要提供一整套安全防護(hù)解決方案??梢哉f(shuō),區(qū)塊鏈安全服務(wù)正逐漸從上面的業(yè)務(wù)層轉(zhuǎn)向更底層,著力從代碼層面解決漏洞問(wèn)題。對(duì)于區(qū)塊鏈?zhǔn)袌?chǎng)來(lái)說(shuō),這是一個(gè)健康的現(xiàn)象。