丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
政企安全 正文
發(fā)私信給郭佳
發(fā)送

0

以太坊生態(tài)缺陷導(dǎo)致的一起億級(jí)代幣盜竊大案

本文作者: 郭佳 2018-03-21 08:48
導(dǎo)語(yǔ):?jiǎn)伪槐I的且還未轉(zhuǎn)出的以太幣價(jià)值就高達(dá)現(xiàn)價(jià) 2 千萬(wàn)美金,還有代幣種類(lèi) 164 種,總價(jià)值難以估計(jì)。

本篇文章原創(chuàng)者為慢霧安全團(tuán)隊(duì),雷鋒網(wǎng)授權(quán)轉(zhuǎn)載。

近日,慢霧安全團(tuán)隊(duì)觀測(cè)到一起自動(dòng)化盜幣的攻擊行為,攻擊者利用以太坊節(jié)點(diǎn) Geth/Parity RPC API 鑒權(quán)缺陷,惡意調(diào)用 eth_sendTransaction 盜取代幣,持續(xù)時(shí)間長(zhǎng)達(dá)兩年,單被盜的且還未轉(zhuǎn)出的以太幣價(jià)值就高達(dá)現(xiàn)價(jià) 2 千萬(wàn)美金,還有代幣種類(lèi) 164 種,總價(jià)值難以估計(jì)(很多代幣還未上交易所正式發(fā)行)。如下圖:

以太坊生態(tài)缺陷導(dǎo)致的一起億級(jí)代幣盜竊大案

攻擊過(guò)程

安全團(tuán)隊(duì)綜合受害者情報(bào)、Reddit 資訊及蜜罐日志分析,回溯攻擊行為,可能為:

全球掃描 8545 端口(HTTP JSON RPC API)、8546 端口(WebSocket JSON RPC API)等開(kāi)放的以太坊節(jié)點(diǎn),發(fā)送 eth_getBlockByNumber、eth_accounts、eth_getBalance 遍歷區(qū)塊高度、錢(qián)包地址及余額

不斷重復(fù)調(diào)用 eth_sendTransaction 嘗試將余額轉(zhuǎn)賬到攻擊者的錢(qián)包

當(dāng)正好碰上節(jié)點(diǎn)用戶(hù)對(duì)自己的錢(qián)包執(zhí)行 unlockAccount 時(shí),在 duration 期間內(nèi)無(wú)需再次輸入密碼為交易簽名,此時(shí)攻擊者的 eth_sendTransaction 調(diào)用將被正確執(zhí)行,余額就進(jìn)入攻擊者的錢(qián)包里了

備注:

unlockAccount 函數(shù)介紹

該函數(shù)將使用密碼從本地的 keystore 里提取 private key 并存儲(chǔ)在內(nèi)存中,函數(shù)第三個(gè)參數(shù) duration 表示解密后 private key 在內(nèi)存中保存的時(shí)間,默認(rèn)是 300 秒;如果設(shè)置為 0,則表示永久存留在內(nèi)存,直至 Geth/Parity 退出。詳見(jiàn):

https://github.com/ethereum/go-ethereum/wiki/Management-APIs#personal_unlockaccount

攻擊時(shí)間線

我們?cè)?Etherscan 上對(duì)攻擊者錢(qián)包地址進(jìn)行細(xì)致的分析,得到如下主要攻擊時(shí)間線:

2016/02/14 03:59:14 PM 第一次 IN(進(jìn)賬),這天是情人節(jié)

2016/02/16 06:33:30 PM 第二次 IN,時(shí)隔 2 天,猜測(cè)自動(dòng)化攻擊程序首次上線

2016/05/19 07:46:33 PM 第一次 OUT(出賬),此時(shí)共 IN 51 筆

2016/07/20 06:35:57 PM 第二次 OUT,此時(shí)共 IN 57筆

2017/05/11 06:34:35 PM Shapeshift(知名交易所) IN 7 筆,跨度 71 天

2017/06/10 02:39:53 AM OUT 最后一筆,此時(shí)共 IN 約 207 筆

2017/06/21 07:46:49 AM f2pool(知名礦池) IN 36 筆,跨度 4 小時(shí)

這種時(shí)間線的跟蹤可以側(cè)面輔助分析攻擊者的行為痕跡。

影響態(tài)勢(shì)

通過(guò)安全團(tuán)隊(duì)對(duì)全球約 42 億 IPv4 空間進(jìn)行掃描探測(cè),發(fā)現(xiàn)暴露在公網(wǎng)且開(kāi)啟 RPC API 的以太坊節(jié)點(diǎn)有 1 萬(wàn)多個(gè)。這些節(jié)點(diǎn)都存在被直接盜幣攻擊的高風(fēng)險(xiǎn)。

以太坊生態(tài)缺陷導(dǎo)致的一起億級(jí)代幣盜竊大案

以太坊生態(tài)缺陷導(dǎo)致的一起億級(jí)代幣盜竊大案

以太坊生態(tài)缺陷導(dǎo)致的一起億級(jí)代幣盜竊大案

防御建議

更改默認(rèn)的 RPC API 端口,配置方法如:--rpcport 8377 或 --wsport 8378

更改 RPC API 監(jiān)聽(tīng)地址為內(nèi)網(wǎng),配置方法如:--rpcaddr  192.168.0.100 或 --wsaddr  192.168.0.100

配置 iptables 限制對(duì) RPC API 端口的訪問(wèn),舉例:只允許 192.168.0.101 訪問(wèn) 8545 端口:
iptables -A INPUT -s 192.168.0.101 -p TCP --dport 8545 -j ACCEPT
iptables -A INPUT -p TCP --dport 8545 -j DROP

賬戶(hù)信息(keystore)不要存放在節(jié)點(diǎn)上 (因?yàn)橘~戶(hù)不在節(jié)點(diǎn)上,所以就不會(huì)用到 unlockAccount 了)

任何轉(zhuǎn)賬均用 web3 的 sendTransaction 和 sendRawTransaction 發(fā)送私鑰簽名過(guò)的 transaction

私鑰物理隔離(如冷錢(qián)包、手工抄寫(xiě))或者高強(qiáng)度加密存儲(chǔ)并保障密鑰的安全

進(jìn)一步思考

通過(guò)這個(gè)事件的追蹤調(diào)查及攻擊手法的完整復(fù)現(xiàn),我們?cè)桨l(fā)意識(shí)到網(wǎng)絡(luò)空間遵循黑暗森林法則,這個(gè)法則參考自《三體》:“宇宙就是一座黑暗森林,每個(gè)文明都是帶槍的獵人,像幽靈般潛行于林間,輕輕撥開(kāi)擋路的樹(shù)枝,竭力不讓腳步發(fā)出一點(diǎn)兒聲音,連呼吸都必須小心翼翼,他必須小心,因?yàn)榱种械教幎加信c他一樣潛行的獵人,如果他發(fā)現(xiàn)了別的生命,能做的只有一件事,開(kāi)槍消滅之。”

我們仔細(xì)復(fù)盤(pán)了這起持續(xù)兩年且現(xiàn)在還在活躍的攻擊的所有細(xì)節(jié),如果我們是攻擊者,我們一個(gè)腳本工程就可以輕松拿下全球數(shù)以萬(wàn)計(jì),甚至百萬(wàn)千萬(wàn)的數(shù)字資產(chǎn)。

我們需要特別提下攻擊者的手法,不知道大家有沒(méi)有注意到,攻擊的第一步為什么調(diào)用的是 eth_getBlockByNumber 來(lái)獲取區(qū)塊高度?這個(gè)調(diào)用的細(xì)節(jié)是:eth_getBlockByNumber("0x00", false),如果區(qū)塊高度不是最新的,那么這個(gè)調(diào)用就會(huì)報(bào)錯(cuò),后續(xù)也就沒(méi)必要執(zhí)行錢(qián)包地址、余額等查詢(xún)操作,因?yàn)橛囝~不準(zhǔn)確,且最后一步的轉(zhuǎn)賬操作肯定沒(méi)法完成。這種攻擊邏輯的設(shè)計(jì),對(duì)于這個(gè)攻擊場(chǎng)景來(lái)說(shuō)是一種非常暴力美學(xué)的設(shè)計(jì)。

我們從上面提到的“攻擊時(shí)間線”來(lái)看,攻擊者其實(shí)很不一般,這種潛伏的攻擊發(fā)生在以太坊歷史上第一個(gè)知名的黑客攻擊事件 The DAO 事件之前(2016/06/17),且當(dāng)時(shí)是以太坊技術(shù)被市場(chǎng)正式認(rèn)可的時(shí)期。可以看出,攻擊者是非常早期的以太坊技術(shù)研究者,并且很懂黑客工程化技術(shù)。攻擊者在實(shí)戰(zhàn)過(guò)程中不斷優(yōu)化這套工程。

我們還對(duì) RPC API 相關(guān)模塊功能進(jìn)行進(jìn)一步分析,發(fā)現(xiàn)了一些潛在的安全風(fēng)險(xiǎn),也是需要大家注意的,比如:如果 RPC API 啟用了 personal 模塊,就可以通過(guò) personal_unlockAccount 方法爆破賬戶(hù)密碼,假如爆破成功,就可以一次性實(shí)現(xiàn)解鎖 + 轉(zhuǎn)賬。如果 RPC API 啟用了 miner 模塊,就可以通過(guò) miner_setEtherbase 方法修改挖礦的錢(qián)包地址。

在我們的墨子(MOOZ)系統(tǒng)的全網(wǎng)探測(cè)中,我們發(fā)現(xiàn)這些暴露在公網(wǎng)的以太坊節(jié)點(diǎn)開(kāi)啟的 RPC API 模塊不盡相同。這為更復(fù)雜的攻擊提供了差異條件。

從防御分析角度,我們還發(fā)現(xiàn),Geth 等的日志機(jī)制不完善,無(wú)法記錄 RPC API 請(qǐng)求的來(lái)源 IP(配置 --debug、--verbosity 5 均無(wú)效),導(dǎo)致直接在被攻擊的以太坊節(jié)點(diǎn)上取證溯源攻擊者 IP 是一件很麻煩的事。

雖然以太坊本身的健壯性已經(jīng)經(jīng)受住考驗(yàn),但是安全是一個(gè)整體。通過(guò)這個(gè)事件我們可以看出以太坊生態(tài)的一些安全缺陷,有的安全缺陷可能會(huì)被認(rèn)為這是一種機(jī)制,需要使用者注意,但這個(gè)對(duì)使用者來(lái)說(shuō)做安全的門(mén)檻太高。高門(mén)檻的安全一定是會(huì)更容易滋生這種大攻擊事件。

本篇文章原創(chuàng)為慢霧安全團(tuán)隊(duì),雷鋒網(wǎng)授權(quán)轉(zhuǎn)載。

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知

分享:
相關(guān)文章
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶(hù)安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)