CertiK:Github用戶(hù)1400枚比特幣被盜事件分析
北京時(shí)間8月31日,CertiK天網(wǎng)系統(tǒng) (Skynet) 檢測(cè)到,Github用戶(hù)“1400BitcoinStolen”1400枚比特幣被盜事件的代幣,已開(kāi)始被輸送到多個(gè)不同的地址當(dāng)中。
受害者在electrum的Github issue中講述了自己丟失了1400個(gè)比特幣并貼出了自己的比特幣錢(qián)包地址.在區(qū)塊鏈瀏覽器(參考鏈接3)中可以看到8月30日一共1404枚BTC(價(jià)值1670萬(wàn)美元)從他的錢(qián)包中被取出,存入了黑客的錢(qián)包中。
事件還原與分析
該用戶(hù)使用的是Electrum比特幣錢(qián)包,上次使用是在2017年。此后Electrum已經(jīng)發(fā)布了安全更新,但該用戶(hù)一直沒(méi)有安裝。
用戶(hù)在使用Electrum進(jìn)行交易時(shí),錢(qián)包會(huì)向服務(wù)器廣播一筆交易,如果這筆交易出現(xiàn)了問(wèn)題,服務(wù)器將返回錯(cuò)誤信息并以彈窗的形式展現(xiàn)給用戶(hù)。
3.3.2版本之前的Electrum錢(qián)包不會(huì)對(duì)服務(wù)器返回的錯(cuò)誤信息進(jìn)行驗(yàn)證,甚至還會(huì)對(duì)返回的信息進(jìn)行html渲染(參考鏈接4)。
值得一提的是,任何人都可以去搭建一個(gè)Electrum節(jié)點(diǎn)服務(wù)器。如果一個(gè)用戶(hù)連接到了攻擊者的服務(wù)器并發(fā)起了一筆交易,服務(wù)器可以返回任何設(shè)計(jì)好的錯(cuò)誤信息。比如返回一個(gè)讓用戶(hù)去更新Electrum錢(qián)包的錯(cuò)誤信息,如下圖所示。
然而,圖中的鏈接指向了攻擊者自己寫(xiě)的惡意軟件,一旦用戶(hù)下載安裝該軟件并把自己的錢(qián)包導(dǎo)入其中,錢(qián)包里所有的比特幣就會(huì)被攻擊者轉(zhuǎn)走。
這其實(shí)本質(zhì)上是一種釣魚(yú)攻擊,但由于攻擊者發(fā)出的釣魚(yú)信息是通過(guò)Electrum官方錢(qián)包展示出來(lái)的,很多人都會(huì)信以為真。
在本次事件中,受害者的錢(qián)包連接上了攻擊者所控制的服務(wù)器,導(dǎo)致其收到了服務(wù)器發(fā)出的釣魚(yú)信息,進(jìn)而被攻擊者轉(zhuǎn)走了自己的所有比特幣。
Electrum錢(qián)包存在的該問(wèn)題早在2018年底就引起了廣泛討論(參考鏈接4)。
Electrum官方在2019年,錢(qián)包版本3.3.4中對(duì)該問(wèn)題進(jìn)行了修復(fù),后續(xù)版本的Electrum錢(qián)包不再會(huì)將服務(wù)器返回的內(nèi)容直接展示給用戶(hù),也不會(huì)對(duì)其進(jìn)行html渲染。
此外,由于舊版本的錢(qián)包仍然存在這個(gè)問(wèn)題,因此所有的正常的服務(wù)器會(huì)對(duì)3.3版本之前的錢(qián)包進(jìn)行拒絕服務(wù)(DoS)攻擊,以強(qiáng)制用戶(hù)進(jìn)行更新(參考鏈接5)。
建議
- 用戶(hù)在使用錢(qián)包進(jìn)行交易的時(shí)候,需確保錢(qián)包為最新版本,已防舊版本的錢(qián)包可能存在可被黑客利用的漏洞。
- 用戶(hù)在下載錢(qián)包更新的時(shí)候要注意驗(yàn)證下載URL是否與官方一致,在下載完成后要對(duì)錢(qián)包的簽名進(jìn)行驗(yàn)證。
- 對(duì)于錢(qián)包開(kāi)發(fā)團(tuán)隊(duì),需要尋找專(zhuān)業(yè)團(tuán)隊(duì)做好測(cè)試工作,以免項(xiàng)目出現(xiàn)漏洞給用戶(hù)帶來(lái)?yè)p失。
參考鏈接:
- https://github.com/spesmilo/electrum/issues/5072
- https://zhuanlan.zhihu.com/p/53920688
- https://www.blockchain.com/btc/tx/2db616f5b4545805dc1de59bc65b21b548c0d553ab187fa1625ef73c727f1e54
- https://github.com/spesmilo/electrum/issues/4968
- http://twitter.com/electrumwallet/status/1106479573917724672