世界上有一群人,互聯網對于他們來說就是提款機。
是的,過去是,現在更是,因為電子貨幣的出現,他們提款的速度變得更瘋狂。
在2017年,我們的蜜罐監測到一起針對以太坊的全球大規模攻擊事件,我們將其命名為以太坊“偷渡”漏洞。通過該漏洞,黑客可以在沒有服務器權限、沒有keystore密碼權限的情況下,轉走錢包中的所有余額。
而如此嚴重的漏洞,1年前就在reddit.com被曝光有黑客在利用,并且最早可追溯到2016年的2月14號就有黑客通過此漏洞竊取到比特幣,近期也有中國的慢霧安全團隊揭露了這種攻擊手法:查看原文鏈接
在長達2年的時間里,并沒有多少用戶關注到,以太坊也沒有進行針對性的防護措施,直到今日,以太坊的最新代碼中依然沒有能夠抵御這種攻擊。
以太坊Gas費10分鐘飆漲105.88%,ETH鏈上活躍度上升:金色財經報道,Ultrasound.money顯示當前以太坊Gas費用漲至35Gwei,10分鐘飆漲105.88%,表明ETH鏈上活躍度有所上升,請留意行情變化。[2023/2/12 12:01:46]
因此我們決定將我們所掌握的詳細數據公布給所有人,希望能促使以太坊的開發者承認并修復該漏洞。
漏洞成因
以太坊目前最流行的節點程序都提供了RPCAPI,用于對接礦池、錢包等其他第三方程序。
默認情況下,節點的RPC服務是無需密碼就可以進行接口調用,官方實現的RPCAPI也并未提供設置RPC連接密碼的功能,因此,一旦將RPC端口暴露在互聯網,將會非常危險。
而我們所捕獲的以太坊“偷渡”漏洞,正是利用了以太坊默認對RPC不做鑒權的設計。
以太坊上DeFi協議總鎖倉量386.9億美元 環比上升3.25%:據歐科云鏈OKLink數據顯示,截至今日10時,以太坊上DeFi協議總鎖倉量約合386.9億美元,環比上升3.25%。
當前以太坊上鎖倉量排名前三的協議分別是Maker 48.3億美元(+5.07%),WBTC 39.9億美元(+6.00%)以及Uniswap V2 35.1億美元(+6.24%)。[2021/2/2 18:40:28]
被攻擊的用戶,需要具備以下條件:
1、節點的RPC端口對外開放2、節點的RPC端口可直接調用API,未做額外的鑒權保護3、節點的區塊高度已經同步到網絡的最新高度,因為需要在該節點進行轉賬,如果未達到最高度,無法進行轉賬
當用戶對自己的錢包進行了解鎖,在解鎖超時期間,無需再輸入密碼,便可調用RPCAPI的eth_sendTransaction進行轉賬操作。
截至9月30日以太坊鏈上轉賬手續費均值已降至0.008ETH:Tokenview鏈上數據顯示,9月初以太坊每日單筆交易手續費平均值最高達0.032ETH,隨著DeFi的降溫,9月30日單筆交易手續費均值已降至0.008ETH。Uniswap 9月17日共空投1.5億枚以太坊,當天手續費總和達ETH有史以來最高值42780ETH。截至30日,這個數字已降到8847ETH,以太坊鏈上轉賬手續費逐步走低。[2020/10/1]
漏洞的關鍵組成,由未鑒權的RPCAPI服務及解鎖賬戶后有一定的免密碼時間相結合,以下是解鎖賬戶的unlockAccount函數:
代碼路徑:go-ethereum/internal/jsre/deps/api.go
通過函數的實現代碼可見,解鎖賬戶的api允許傳入超時時間,默認超時為300秒,
動態 | 以太坊錢包Shitcoin Wallet正注入惡意Java代碼竊取數據:據Bitcoinist 12月31日消息,安全和反網絡釣魚專家Harry Denley發推文警告稱,一個可作為Chrome瀏覽器擴展程序的以太坊錢包“Shitcoin Wallet”正在注入惡意javascript代碼,企圖從瀏覽器窗口抓取數據并發送至遠程服務器erc20wallet.tk。[2019/12/31]
真正進行解鎖的函數TimedUnlock實現如下:
代碼路徑:go-ethereum/accounts/keystore/keystore.go
當傳入的超時大于0時,會發起一個協程進行超時處理,如果傳入的超時時間為0,則是永久不會超時,賬戶一直處于解鎖狀態,直到節點進程退出。
動態 | Tether向以太坊網絡新增發1500萬枚USDT:據DAppTotal.com穩定幣專題頁面數據顯示:09月25日04時24分 ,USDT發行方Tether向以太坊網絡新增發1筆價值1,500萬美元的USDT, 塊高度為:8613884,交易哈希值為:0x31f01e3f69d763c70e9965c370475f454338effdcca4beb2e69a2bd992989a87 。截至目前,Tether在以太坊網絡上的ERC20 USDT總發行量已達1,965,057,493枚。
DAppTotal敬請廣大投資者警惕行情變動,謹慎應對市場風險。[2019/9/25]
攻擊手法揭秘
1.尋找對外開放以太坊RPC端口的服務器,確認節點已經達到以太坊網絡的最高區塊高度
黑客通過全球的端口服務掃描,發現RPC服務為以太坊的RPC接口時,調用eth_getBlockByNumber(‘last’,false),獲取最新的區塊高度。
但是由于有些以太節點是以太坊的分叉幣,高度與以太坊的不一樣,因此黑客即使發現節點高度與以太坊的高度不一樣,也不會放棄攻擊。
2.調用eth_accounts,獲取該節點上的所有賬戶。
eth_accounts的請求將返回一個賬戶地址列表:
3.調用eth_getBalance,查詢地址余額。
這個過程黑客可在自己的服務器完成以太坊的余額查詢,因為以太坊的區塊鏈賬本數據庫是隨意公開獲取的。
有部分黑客沒有搭建以太坊的全節點,沒有自行查詢余額,因此也會在被攻擊服務器進行eth_getBalance操作。
4.持續調用轉賬操作,直到剛好用戶用密碼解鎖了錢包,完成非法轉賬操作的“偷渡”
黑客會構造eth_sendTransaction的轉賬操作,并填寫余額、固定的手續費:
用戶使用錢包,輸入密碼解鎖了錢包,此時錢包余額會立即被轉走。
快速漏洞測試
安裝python的web3庫,然后連接RPC端口,發起請求,如果獲取到返回結果,便可能存在該漏洞。
參考:http://web3py.readthedocs.io/en/stable/quickstart....
fromweb3importWeb3,HTTPProvider,IPCProvider
web3=Web3(HTTPProvider(‘http://ip:port’))
web3.eth.blockNumber
黑客解密及IOCs情報
黑客錢包
目前我們掌握了3個黑客的錢包收款地址,未轉走的賬戶余額為2220萬美金:
https://etherscan.io/address/0x957cD4Ff9b3894FC78b...,余額為38,076ETH,最早進賬為2016-2-14,最新進賬為2018-3-21
https://etherscan.io/address/0x96a5296eb1d8f8098d3...,余額為321ETH,最早進賬為2016-8-10,最新進賬為2017-11-28。
https://etherscan.io/address/0xdc3431d42c0bf108b44...,余額為330ETH,最早進賬為2018-2-06,最新進賬為2018-3-20。
黑客攻擊源IP
146.0.249.87162.251.61.133190.2.133.11485.14.240.84
目前大部分的黑客使用https://github.com/regcostajr/go-web3進行頻繁API請求,如果有看到大量user-agent為“Go-http-client/1.1”的POST請求時,請記錄下請求內容,確認是否為惡意行為。
緊急響應及修復建議
1,、關閉對外暴露的RPC端口,如果必須暴露在互聯網,請使用鑒權:https://tokenmarket.net/blog/protecting-ethereum-j...2、借助防火墻等網絡防護軟件,封堵黑客攻擊源IP3、檢查RPC日志、web接口日志,是否有異常大量的頻繁請求,檢查請求內容是否為eth_sendTransaction4、等待以太坊更新最新代碼,使用修復了該漏洞的節點程序
文|芳華 11月6日訊,目前的貨幣市場上,最火的莫過去比特幣。對于比特幣,有人指望它一夜暴富。不過,也有人認為,比特幣后面一無所有,就是“互聯網龐氏騙局.
1900/1/1 0:00:00焦點一:卡塔爾央行禁止比特幣據當地媒體MEM消息,卡塔爾中央銀行(QCB)宣布禁止銀行交易比特幣,禁止比特幣和其他貨幣進行兌換,禁止給交易比特幣開戶,禁止任何以買賣比特幣為目的的轉賬.
1900/1/1 0:00:00編者按:這里是36氪推出的欄目,盤點當天國內外投融資動態。今日國內的焦點是十分到家獲得1.05億人民幣戰略投資,海外的投融資關注重點則是4DReplay獲得100萬美元天使輪融資.
1900/1/1 0:00:00自2017年以來,比特幣在全球范圍內的熱度一直高居不下,作為一種加密數字貨幣,比特幣及其背后的區塊鏈技術一直是社會討論的焦點.
1900/1/1 0:00:00智勇相對論第三期 主持人 起風了創始人、起風財經創始人羅智勇 對話嘉賓 《劉興亮時間》創始人、知名互聯網學者、CCTV財經頻道特約評論員劉興亮 嘉賓介紹 劉興亮,知名互聯網學者.
1900/1/1 0:00:00“繼蒸汽機、電和計算機發明之后,我們又迎來了第四次工業革命——數字革命。而區塊鏈技術就是第四次工業革命的成果。”——達沃斯論壇創始人KlausSchwab曾經這樣評價區塊鏈技術.
1900/1/1 0:00:00