當前位置:
首頁 > 新聞 > 我轉了一次賬,丟了10倍的錢

我轉了一次賬,丟了10倍的錢

小宅是一家互聯網公司的小職員,區塊鏈還沒火起來的時候他買了點幣,火了之後也算個玩幣玩家。

幣圈不好混,被割韭菜的也多,誰都不知道接下來會踩著什麼坑。小宅人老實,從不做那些靠幣致富的美夢,誰知道還是悲劇了。

事情的起因是小宅要給另一個幣友轉賬,沒有以太坊,就找有以太坊的玩家通過代理方式轉賬,結果不出半天發現除了轉出給幣友的錢(token),自己賬戶在另外兩個代幣的錢(token)也飛了。

小宅斯巴達了,查了半天怎麼都不知道這幣飛去了哪。

晚上時候他發了個朋友圈,天台見吧朋友們。

小宅最後上沒上天台不知道,畢竟故事是編的,但攻擊手段是真的。就在剛剛落幕的DEFCON上,360獨角獸安全團隊的安全專家鄭玉偉講了一個《以太坊智能合約重放攻擊》議題。

技術細節

相比其他DEFCON上的議題,這個議題有點「另類」,用鄭玉偉的話說就議題內容組織是太學術性了。

「DEFCON上大多是破解秀這種很有意思的議題,我們則更像一個學術課題。」雖然被吐槽議題過於嚴肅,但鄭玉偉演講完走下舞台時候還是被其他白帽子們包圍了。

重放攻擊這個詞誰都聽著熟,指的就是身份欺詐,主要被用作報文的重放。智能合約這個熱詞聽著也熟,懂不懂區塊鏈的都能扯上智能合約,但這兩個詞加在一起就是新鮮的攻擊手段了。據鄭玉偉小哥說,他們團隊發現以太坊上一些智能合約由於簽名設計不當,存在被重放攻擊可能。

具體來說,有一個場景,假如有兩個用戶,A給B轉帳,而A沒有以太坊,所以通過委託代理C來轉賬。A在委託代理轉帳的時候會調用transferproxy這個介面,這個介面會用到一個簽名。由於這個簽名內容的設計存在問題,導致簽名可以被重複使用。此時攻擊者可以在另一個合約上重放這個交易將A在這個合約上的token轉走。

「我們用自己的賬戶在存在漏洞的其中兩個合約進行實驗驗證,由於實驗中的兩個合約在委託代理交易時簽名的內容相同,攻擊者通過重放交易成功的從發送者那裡獲得了雙份收入。」實現該攻擊的白振軒小哥說道。

舉個「栗子」,一個用戶A他在北京銀行有一個賬戶,在招商銀行也有一個賬戶,現在他通過銀聯(代理角色)在北京銀行給另外一個用戶B轉帳。由於轉賬時的簽名內容存在問題,這筆交易發送給招商銀行也會被確認,這樣,A在招商銀行也會給B轉出與北京銀行相同的金額。

在區塊鏈上的所有交易都是可以查到的,誰在某時間通過代理的方式做了一次轉帳交易輕易就能得知,在查到之後可以提取相應的簽名就可以對其發起攻擊。實際上這裡的簽名內容和代理是誰並無關係,作出一個新的代理替換之前的代理,只要受害者在第二個合約上有token就可以轉走了。

這也就是小宅只是通過代理轉了一次賬卻莫名其妙其他賬戶里的錢也飛了的原因。

發現過程

說起來,整個議題的準備過程都很「趕趟兒」,就是時間緊。

今年4月初的時候,鄭玉偉和一位研究區塊鏈開發的朋友聊到了一起,兩人一合計:你熟悉區塊鏈開發過程,我熟悉安全分析技術,那何不把這兩個方面結合在一起搞搞看?

兩人開始先瞄準的是雷電網路,閃電網路這些協議層面,找了一圈沒有收穫。於是把目光轉向了簽名範圍這個方向,發現簽名設計的很多合約都有問題,接著往下研究還真有事兒。

他們先從以太坊提供的ERC20介面,發現介面在使用 Ecrecover 這個API時候可能會存在一些問題,然後針對這些條件進行掃描,機器篩選後又進行了人工審計,最終篩選出來有問題的52個合約。

這52個有問題的合約都可以被發起上面提到的重放攻擊,據說根據網路上部署的有漏洞的簽名內容相同的合約數量,特定情況下,攻擊者甚至可獲得10倍以上的收入。

為什麼是10倍?

「我們將這52個合約按照簽名設計分組,只有簽名內容完全一樣才劃分成一組,同一組之間可以互相重放。」鄭玉偉告訴雷鋒網。

其中有10個合約的簽名設計完全一樣,除了包含A的賬戶信息,B的賬戶信息以及每次的轉賬的token數量,手續費,以及nonce外,沒有額外附加信息。至於剩下的合約則在簽名內容中添加了特定字元串,字元串相同的合約之間可以進行重放攻擊。

發現了這種攻擊方式以後,他們有意參加當年的DEFCON大會,眼看著5月1號就是議題徵集截止日期。

拼一把!

四人小團隊分工明確,4月20號左右開始驗證攻擊,全部驗證完成之後已經到了4月28號,此時議題報告還沒寫,於是團隊某位博士小哥哥被大家推了出去,趕在5月1號截止之前提交了議題。

8月11日,鄭玉偉在DEFCON演講這個選題。據說前幾天他們團隊做了一個統計,利用代理轉賬的交易有多少,掃描結果顯示有三百四十多條。這個數字在龐大的交易中其實九牛一毛,從這三百四十多個交易中再篩選出處於同一組合約可能發生重放攻擊的交易更少,也就是說目前尚沒發現在野利用。

但仍然存在很大風險,在知道某個賬戶在存在漏洞合約上token數量很多的情況下, 攻擊者甚至可以依照漏洞合約依葫蘆畫瓢部署一個新合約, 誘導用戶,例如通過贈幣幫忙測試的形式,在自己的新合約上做一次代理轉賬,就可以通過重放的方式,將用戶在漏洞合約上的token都轉走。倘若有人動了歪腦筋,那又會多一大批「天台夥伴」。

這種針對智能合約的重放攻擊是否有修復方式?

鄭玉偉表示,防護上,由於智能合約代碼即是法律的特性,一旦部署不可更改。所以對於用戶而言,確保在有漏洞的的合約上不要留餘額。對於合約發行方而言,只能發行新合約,在新合約中修復漏洞,將原合約的用戶遷移走。

這屆黑客大會還有啥?

世界頂級信息安全會議BlackHat和DEFCON剛剛在美國拉斯維加斯落幕,有意思的議題還有很多。

比如360無線電安全研究部的兩位小哥哥曹鴻健、秦明闖帶來的Ghost Tunnel(「幽靈隧道」)攻擊就是一種適用於隔離網路環境下的傳輸方式,利用wifi無線信號來傳輸數據。

攻擊者利用GhostTunnel 與目標設備建立一個「隱蔽隧道」,在目標完全無感知的情況下與其進行數據通信。它可以通過USB-HIB把攻擊的程序釋放到目標上去,並植入木馬或者竊取文件。

具體來說,不論是 windows 還是蘋果、安卓,都有管理無線網路或者進行網路傳輸的一套系統API,這個系統API可以操作wifi模塊,收發無線數據包。惡意代碼通過HID方式植入到系統,並利用系統API操作,整個過程被攻擊方是無感知的,無法從wifi網路狀態看出任何問題。」

也就是說,只要掌握這種方式,你就可以輕易從圖書館後桌妹子電腦上竊取一波資料,如果裡面有她的簡歷之類的更「收穫頗豐」。

據曹鴻健說,這一攻擊方式是他們在去年發現的,在問到有何手段檢測或是避免時,他表示如果想發現這種攻擊需要用一些特殊手段,比如可以通過對wifi流量進行審計,發現無線數據中的異常流量,比如對ghosttunnel 通信中的特徵比對,還有就是根據大量異常的probe quest 和beacon 數據幀來判斷。

至於避免,如果攻擊代碼已經植入,基本不可避免,只能防止其被植入。 可以從防止社會工程學攻擊角度防禦,不隨便插入不可靠的usb設備。

另一個有意思的議題是關於Lora智能水表安全分析。

水表這個研究對象在所有議題中是最「親民」的了(畢竟隔壁是炫酷的特斯拉),但這東西似乎家家戶戶都有,一旦被攻擊十分麻煩。

曾穎濤告訴雷鋒網,Lora是一種專利,是一種比較新的無線傳輸的方式。他們有對這種無線傳輸的方式有對接數據,廠商在用這些 Lora 傳輸方式的時候,認為這種傳輸方式是比較安全可靠的。

「但是我們團隊自己做了一個小硬體,把一些射頻的參數寫入我們的射頻晶元寄存器上",將自有的硬體偽造成網關,把水表傳到網關的數據嗅探下來,然後分析數據內容。」

據曾穎濤說,他們找到一個市面上水表的廠商,發現可以從沒有加密的數據中逆向得到傳輸的數據是什麼,傳輸的水量是多少。比如他們可以在一個小區裡面部署足夠多的節點,把所有住戶的數據清算進行用戶數據分析,得到每一個住戶的生活起居習慣是怎樣的,甚至可以分析出職業的信息。

對於普通的吃瓜群眾,隱私數據泄露足夠可怕。

「或者我們可以偽造一個網關設備,在知道某住戶水表ID之後,可以偽造ID設備給網關發一個數據,數據可以任意被我們修改,而且這種傳輸方式是不用物理接觸水表的,只要在小區裡面有部署足夠多的嗅探節點,我們就可以把所有的ID保存下來。」

當然 Lora 同樣可以部署在其他的領域上面,比如說一些閥門的控制,或者井蓋、路燈之類的。一般的水表只是把自己探測到的感測器的數值傳給網關端,網關端對數字進行一些校驗和判斷,沒有下髮指令的操作在裡面,但是有些閥門控制之後是可以通過遠程的方式把這些閥門進行控制,比如說重複的關閘和開閘。

試想一下如果躲在暗處之人能輕易操控你家中設備閥門,水表電錶如果不算嚴重,那如果是煤改氣閥門呢?更可怕的是普通群眾對這種攻擊方式根本無法察覺更不可能採取防禦。

那是否有修復方法?

曾穎濤告訴雷鋒網,針對Lora的攻擊廠商可以對所有傳輸的數據內容進行加密處理,並在傳輸的數據中加入計數值和簽名或者採用Lora聯盟發布的LoraWan規範協議。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

3D 姿態識別進我家,網紅小哥 Siraj 帶你走進高科技
聯璧金融被立案偵查;銀聯將向huawei pay開放1000多家銀行

TAG:雷鋒網 |