0
小宅是一家互聯(lián)網(wǎng)公司的小職員,區(qū)塊鏈還沒(méi)火起來(lái)的時(shí)候他買了點(diǎn)幣,火了之后也算個(gè)玩幣玩家。
幣圈不好混,被割韭菜的也多,誰(shuí)都不知道接下來(lái)會(huì)踩著什么坑。小宅人老實(shí),從不做那些靠幣致富的美夢(mèng),誰(shuí)知道還是悲劇了。
事情的起因是小宅要給另一個(gè)幣友轉(zhuǎn)賬,沒(méi)有以太坊,就找有以太坊的玩家通過(guò)代理方式轉(zhuǎn)賬,結(jié)果不出半天發(fā)現(xiàn)除了轉(zhuǎn)出給幣友的錢(token),自己賬戶在另外兩個(gè)代幣的錢(token)也飛了。
小宅斯巴達(dá)了,查了半天怎么都不知道這幣飛去了哪。
晚上時(shí)候他發(fā)了個(gè)朋友圈,天臺(tái)見(jiàn)吧朋友們。
小宅最后上沒(méi)上天臺(tái)不知道,畢竟故事是編的,但攻擊手段是真的。就在剛剛落幕的DEFCON上,360獨(dú)角獸安全團(tuán)隊(duì)的安全專家鄭玉偉講了一個(gè)《以太坊智能合約重放攻擊》議題。
技術(shù)細(xì)節(jié)
相比其他DEFCON上的議題,這個(gè)議題有點(diǎn)“另類”,用鄭玉偉的話說(shuō)就議題內(nèi)容組織是太學(xué)術(shù)性了。
“DEFCON上大多是破解秀這種很有意思的議題,我們則更像一個(gè)學(xué)術(shù)課題?!彪m然被吐槽議題過(guò)于嚴(yán)肅,但鄭玉偉演講完走下舞臺(tái)時(shí)候還是被其他白帽子們包圍了。
重放攻擊這個(gè)詞誰(shuí)都聽(tīng)著熟,指的就是身份欺詐,主要被用作報(bào)文的重放。智能合約這個(gè)熱詞聽(tīng)著也熟,懂不懂區(qū)塊鏈的都能扯上智能合約,但這兩個(gè)詞加在一起就是新鮮的攻擊手段了。據(jù)鄭玉偉小哥說(shuō),他們團(tuán)隊(duì)發(fā)現(xiàn)以太坊上一些智能合約由于簽名設(shè)計(jì)不當(dāng),存在被重放攻擊可能。
具體來(lái)說(shuō),有一個(gè)場(chǎng)景,假如有兩個(gè)用戶,A給B轉(zhuǎn)帳,而A沒(méi)有以太坊,所以通過(guò)委托代理C來(lái)轉(zhuǎn)賬。A在委托代理轉(zhuǎn)帳的時(shí)候會(huì)調(diào)用transferproxy這個(gè)接口,這個(gè)接口會(huì)用到一個(gè)簽名。由于這個(gè)簽名內(nèi)容的設(shè)計(jì)存在問(wèn)題,導(dǎo)致簽名可以被重復(fù)使用。此時(shí)攻擊者可以在另一個(gè)合約上重放這個(gè)交易將A在這個(gè)合約上的token轉(zhuǎn)走。
“我們用自己的賬戶在存在漏洞的其中兩個(gè)合約進(jìn)行實(shí)驗(yàn)驗(yàn)證,由于實(shí)驗(yàn)中的兩個(gè)合約在委托代理交易時(shí)簽名的內(nèi)容相同,攻擊者通過(guò)重放交易成功的從發(fā)送者那里獲得了雙份收入?!睂?shí)現(xiàn)該攻擊的白振軒小哥說(shuō)道。
舉個(gè)“栗子”,一個(gè)用戶A他在北京銀行有一個(gè)賬戶,在招商銀行也有一個(gè)賬戶,現(xiàn)在他通過(guò)銀聯(lián)(代理角色)在北京銀行給另外一個(gè)用戶B轉(zhuǎn)帳。由于轉(zhuǎn)賬時(shí)的簽名內(nèi)容存在問(wèn)題,這筆交易發(fā)送給招商銀行也會(huì)被確認(rèn),這樣,A在招商銀行也會(huì)給B轉(zhuǎn)出與北京銀行相同的金額。
在區(qū)塊鏈上的所有交易都是可以查到的,誰(shuí)在某時(shí)間通過(guò)代理的方式做了一次轉(zhuǎn)帳交易輕易就能得知,在查到之后可以提取相應(yīng)的簽名就可以對(duì)其發(fā)起攻擊。實(shí)際上這里的簽名內(nèi)容和代理是誰(shuí)并無(wú)關(guān)系,作出一個(gè)新的代理替換之前的代理,只要受害者在第二個(gè)合約上有token就可以轉(zhuǎn)走了。
這也就是小宅只是通過(guò)代理轉(zhuǎn)了一次賬卻莫名其妙其他賬戶里的錢也飛了的原因。
說(shuō)起來(lái),整個(gè)議題的準(zhǔn)備過(guò)程都很“趕趟兒”,就是時(shí)間緊。
今年4月初的時(shí)候,鄭玉偉和一位研究區(qū)塊鏈開(kāi)發(fā)的朋友聊到了一起,兩人一合計(jì):你熟悉區(qū)塊鏈開(kāi)發(fā)過(guò)程,我熟悉安全分析技術(shù),那何不把這兩個(gè)方面結(jié)合在一起搞搞看?
兩人開(kāi)始先瞄準(zhǔn)的是雷電網(wǎng)絡(luò),閃電網(wǎng)絡(luò)這些協(xié)議層面,找了一圈沒(méi)有收獲。于是把目光轉(zhuǎn)向了簽名范圍這個(gè)方向,發(fā)現(xiàn)簽名設(shè)計(jì)的很多合約都有問(wèn)題,接著往下研究還真有事兒。
他們先從以太坊提供的ERC20接口,發(fā)現(xiàn)接口在使用 Ecrecover 這個(gè)API時(shí)候可能會(huì)存在一些問(wèn)題,然后針對(duì)這些條件進(jìn)行掃描,機(jī)器篩選后又進(jìn)行了人工審計(jì),最終篩選出來(lái)有問(wèn)題的52個(gè)合約。
這52個(gè)有問(wèn)題的合約都可以被發(fā)起上面提到的重放攻擊,據(jù)說(shuō)根據(jù)網(wǎng)絡(luò)上部署的有漏洞的簽名內(nèi)容相同的合約數(shù)量,特定情況下,攻擊者甚至可獲得10倍以上的收入。
為什么是10倍?
“我們將這52個(gè)合約按照簽名設(shè)計(jì)分組,只有簽名內(nèi)容完全一樣才劃分成一組,同一組之間可以互相重放。”鄭玉偉告訴雷鋒網(wǎng)。
其中有10個(gè)合約的簽名設(shè)計(jì)完全一樣,除了包含A的賬戶信息,B的賬戶信息以及每次的轉(zhuǎn)賬的token數(shù)量,手續(xù)費(fèi),以及nonce外,沒(méi)有額外附加信息。至于剩下的合約則在簽名內(nèi)容中添加了特定字符串,字符串相同的合約之間可以進(jìn)行重放攻擊。
發(fā)現(xiàn)了這種攻擊方式以后,他們有意參加當(dāng)年的DEFCON大會(huì),眼看著5月1號(hào)就是議題征集截止日期。
拼一把!
四人小團(tuán)隊(duì)分工明確,4月20號(hào)左右開(kāi)始驗(yàn)證攻擊,全部驗(yàn)證完成之后已經(jīng)到了4月28號(hào),此時(shí)議題報(bào)告還沒(méi)寫(xiě),于是團(tuán)隊(duì)某位博士小哥哥被大家推了出去,趕在5月1號(hào)截止之前提交了議題。
8月11日,鄭玉偉在DEFCON演講這個(gè)選題。據(jù)說(shuō)前幾天他們團(tuán)隊(duì)做了一個(gè)統(tǒng)計(jì),利用代理轉(zhuǎn)賬的交易有多少,掃描結(jié)果顯示有三百四十多條。這個(gè)數(shù)字在龐大的交易中其實(shí)九牛一毛,從這三百四十多個(gè)交易中再篩選出處于同一組合約可能發(fā)生重放攻擊的交易更少,也就是說(shuō)目前尚沒(méi)發(fā)現(xiàn)在野利用。
但仍然存在很大風(fēng)險(xiǎn),在知道某個(gè)賬戶在存在漏洞合約上token數(shù)量很多的情況下, 攻擊者甚至可以依照漏洞合約依葫蘆畫(huà)瓢部署一個(gè)新合約, 誘導(dǎo)用戶,例如通過(guò)贈(zèng)幣幫忙測(cè)試的形式,在自己的新合約上做一次代理轉(zhuǎn)賬,就可以通過(guò)重放的方式,將用戶在漏洞合約上的token都轉(zhuǎn)走。倘若有人動(dòng)了歪腦筋,那又會(huì)多一大批“天臺(tái)伙伴”。
這種針對(duì)智能合約的重放攻擊是否有修復(fù)方式?
鄭玉偉表示,防護(hù)上,由于智能合約代碼即是法律的特性,一旦部署不可更改。所以對(duì)于用戶而言,確保在有漏洞的的合約上不要留余額。對(duì)于合約發(fā)行方而言,只能發(fā)行新合約,在新合約中修復(fù)漏洞,將原合約的用戶遷移走。
這屆黑客大會(huì)還有啥?
世界頂級(jí)信息安全會(huì)議BlackHat和DEFCON剛剛在美國(guó)拉斯維加斯落幕,有意思的議題還有很多。
比如360無(wú)線電安全研究部的兩位小哥哥曹鴻健、秦明闖帶來(lái)的Ghost Tunnel(“幽靈隧道”)攻擊就是一種適用于隔離網(wǎng)絡(luò)環(huán)境下的傳輸方式,利用wifi無(wú)線信號(hào)來(lái)傳輸數(shù)據(jù)。
攻擊者利用GhostTunnel 與目標(biāo)設(shè)備建立一個(gè)“隱蔽隧道”,在目標(biāo)完全無(wú)感知的情況下與其進(jìn)行數(shù)據(jù)通信。它可以通過(guò)USB-HIB把攻擊的程序釋放到目標(biāo)上去,并植入木馬或者竊取文件。
具體來(lái)說(shuō),不論是 windows 還是蘋(píng)果、安卓,都有管理無(wú)線網(wǎng)絡(luò)或者進(jìn)行網(wǎng)絡(luò)傳輸?shù)囊惶紫到y(tǒng)API,這個(gè)系統(tǒng)API可以操作wifi模塊,收發(fā)無(wú)線數(shù)據(jù)包。惡意代碼通過(guò)HID方式植入到系統(tǒng),并利用系統(tǒng)API操作,整個(gè)過(guò)程被攻擊方是無(wú)感知的,無(wú)法從wifi網(wǎng)絡(luò)狀態(tài)看出任何問(wèn)題?!?/p>
也就是說(shuō),只要掌握這種方式,你就可以輕易從圖書(shū)館后桌妹子電腦上竊取一波資料,如果里面有她的簡(jiǎn)歷之類的更“收獲頗豐”。
據(jù)曹鴻健說(shuō),這一攻擊方式是他們?cè)谌ツ臧l(fā)現(xiàn)的,在問(wèn)到有何手段檢測(cè)或是避免時(shí),他表示如果想發(fā)現(xiàn)這種攻擊需要用一些特殊手段,比如可以通過(guò)對(duì)wifi流量進(jìn)行審計(jì),發(fā)現(xiàn)無(wú)線數(shù)據(jù)中的異常流量,比如對(duì)ghosttunnel 通信中的特征比對(duì),還有就是根據(jù)大量異常的probe quest 和beacon 數(shù)據(jù)幀來(lái)判斷。
至于避免,如果攻擊代碼已經(jīng)植入,基本不可避免,只能防止其被植入。 可以從防止社會(huì)工程學(xué)攻擊角度防御,不隨便插入不可靠的usb設(shè)備。
另一個(gè)有意思的議題是關(guān)于Lora智能水表安全分析。
水表這個(gè)研究對(duì)象在所有議題中是最“親民”的了(畢竟隔壁是炫酷的特斯拉),但這東西似乎家家戶戶都有,一旦被攻擊十分麻煩。
曾穎濤告訴雷鋒網(wǎng),Lora是一種專利,是一種比較新的無(wú)線傳輸?shù)姆绞健K麄冇袑?duì)這種無(wú)線傳輸?shù)姆绞接袑?duì)接數(shù)據(jù),廠商在用這些 Lora 傳輸方式的時(shí)候,認(rèn)為這種傳輸方式是比較安全可靠的。
“但是我們團(tuán)隊(duì)自己做了一個(gè)小硬件,把一些射頻的參數(shù)寫(xiě)入我們的射頻芯片寄存器上",將自有的硬件偽造成網(wǎng)關(guān),把水表傳到網(wǎng)關(guān)的數(shù)據(jù)嗅探下來(lái),然后分析數(shù)據(jù)內(nèi)容?!?/p>
據(jù)曾穎濤說(shuō),他們找到一個(gè)市面上水表的廠商,發(fā)現(xiàn)可以從沒(méi)有加密的數(shù)據(jù)中逆向得到傳輸?shù)臄?shù)據(jù)是什么,傳輸?shù)乃渴嵌嗌佟1热缢麄兛梢栽谝粋€(gè)小區(qū)里面部署足夠多的節(jié)點(diǎn),把所有住戶的數(shù)據(jù)清算進(jìn)行用戶數(shù)據(jù)分析,得到每一個(gè)住戶的生活起居習(xí)慣是怎樣的,甚至可以分析出職業(yè)的信息。
對(duì)于普通的吃瓜群眾,隱私數(shù)據(jù)泄露足夠可怕。
“或者我們可以偽造一個(gè)網(wǎng)關(guān)設(shè)備,在知道某住戶水表ID之后,可以偽造ID設(shè)備給網(wǎng)關(guān)發(fā)一個(gè)數(shù)據(jù),數(shù)據(jù)可以任意被我們修改,而且這種傳輸方式是不用物理接觸水表的,只要在小區(qū)里面有部署足夠多的嗅探節(jié)點(diǎn),我們就可以把所有的ID保存下來(lái)?!?/p>
當(dāng)然 Lora 同樣可以部署在其他的領(lǐng)域上面,比如說(shuō)一些閥門的控制,或者井蓋、路燈之類的。一般的水表只是把自己探測(cè)到的傳感器的數(shù)值傳給網(wǎng)關(guān)端,網(wǎng)關(guān)端對(duì)數(shù)字進(jìn)行一些校驗(yàn)和判斷,沒(méi)有下發(fā)指令的操作在里面,但是有些閥門控制之后是可以通過(guò)遠(yuǎn)程的方式把這些閥門進(jìn)行控制,比如說(shuō)重復(fù)的關(guān)閘和開(kāi)閘。
試想一下如果躲在暗處之人能輕易操控你家中設(shè)備閥門,水表電表如果不算嚴(yán)重,那如果是煤改氣閥門呢?更可怕的是普通群眾對(duì)這種攻擊方式根本無(wú)法察覺(jué)更不可能采取防御。
那是否有修復(fù)方法?
曾穎濤告訴雷鋒網(wǎng),針對(duì)Lora的攻擊廠商可以對(duì)所有傳輸?shù)臄?shù)據(jù)內(nèi)容進(jìn)行加密處理,并在傳輸?shù)臄?shù)據(jù)中加入計(jì)數(shù)值和簽名或者采用Lora聯(lián)盟發(fā)布的LoraWan規(guī)范協(xié)議。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。