(此篇文章主要用于哈爾濱工程大學計算機學院2021年區塊鏈技術課程的選做部分,作者:孫潤澤,劉子健)
經過這學期區塊鏈的學習,很榮幸在這里跟大家做分享作業,今天帶來的是區塊鏈的安全分析與介紹,我將用簡單易懂的方式讓大家了解它,區塊鏈慢慢進入我們的視野,越來越多人參與區塊鏈研究當中,但很多人沒有安全知識,安全意識薄弱,很容易讓攻擊者有空可鉆,今天我就帶大家看看以太坊情人節事件,
以太坊

以太坊(英語:Ethereum)是一個開源的有智能合約功能的公共區塊鏈平臺,通過其專用加密貨幣以太幣(Ether,又稱“以太幣”)提供去中心化的虛擬機(稱“以太虛擬機”Ethereum Virtual Machine)來處理點對點合約,
以太坊的概念首次在2013至2014年間由程式員Vitalik Buterin,受位元幣啟發后提出,大意為“下一代加密貨幣與去中心化應用平臺”,與買賣股票的證券交易所類似,
以太坊數字貨幣平臺主要遵守以下兩個原則,
1、簡介原則
以太坊協議將盡可能簡單,即便以某些資料存盤和時間上的低效為代價,
2、通用原則
沒有“特性”是以太坊設計哲學中的一個根本性部分,取而代之的是,以太坊提供了一個內部的圖靈完備的腳本語言以供用戶來構建任何可以精確定義的智能合約或交易型別,
具體事件
這是一起自動化盜幣的攻擊行為,攻擊者利用以太坊節點 Geth/Parity RPC API 鑒權缺陷(RPC:一種計算機協議,以太坊RPC結點是以太坊與其他系統互動的視窗),惡意呼叫 eth_sendTransaction 盜取代幣,單被盜的且還未轉出的以太幣價值就高達現價 2 千萬美金,還有代幣種類 164 種,總價值難以估計(很多代幣還未上交易所正式發行),

攻擊程序
綜合受害者情報、Reddit 資訊及蜜罐日志分析,回溯攻擊行為可能為:
| 動作 | 概率 |
|---|---|
| 全球掃描 8545 埠(HTTP JSON RPC API)、8546 埠(WebSocket JSON RPC API)等開放的以太坊節點,發送 eth_getBlockByNumber、eth_accounts、eth_getBalance 遍歷區塊高度、錢包地址及余額 | 24% |
| 不斷重復呼叫 eth_sendTransaction 嘗試將余額轉賬到攻擊者的錢包 | 32% |
| 當正好碰上節點用戶對自己的錢包執行 unlockAccount 時,在 duration 期間內無需再次輸入密碼為交易簽名,此時攻擊者的 eth_sendTransaction 呼叫將被正確執行,余額就進入攻擊者的錢包里了 | 42% |
簡單的說,以太網在高頻交易中可以設定一段時間無需輸入密碼,時間長短由用戶自己制定,如果黑客正好在這個時間發出余額轉移指令,以太網賬戶就自動執行該操作,從而實作錢包轉移,
攻擊時間線
國內頂尖的區塊鏈安全團隊慢霧安全團隊在對攻擊者錢包地址進行細致的分析,得到如下主要攻擊時間線:
| 時間 | 具體動作 |
|---|---|
| 2016/02/14 03:59:14 PM | 第一次 IN(進賬),這天是情人節 |
| 2016/02/16 06:33:30 PM | 第二次 IN,時隔 2 天,猜測自動化攻擊程式首次上線 |
| 2016/05/19 07:46:33 PM | 第一次 OUT(出賬),此時共 IN 51 筆 |
| 2016/07/20 06:35:57 PM | 第二次 OUT,此時共 IN 57筆 |
| 2017/05/11 06:34:35 PM | PM Shapeshift(知名交易所) IN 7 筆,跨度 71 天 |
| 2017/06/10 02:39:53 AM | OUT 最后一筆,此時共 IN 約 207 筆 |
| 2017/06/21 07:46:49 AM | f2pool(知名礦池) IN 36 筆,跨度 4 小時 |
這種時間線的跟蹤可以側面輔助分析攻擊者的行為痕跡,
我們從上面提到過的攻擊時間線來看,攻擊者其實很不一般,這種潛伏的攻擊發生在以太坊歷史上第一個知名黑客事件之前,其實當時是以太坊沒被市場正式認可的時期便可以看出攻擊者是非常早期的以太坊研究者,也很懂黑客技術,攻擊者在實戰程序中也在不斷優化這套工程 ,
防御措施
距這次盜幣事件被發現至今已有兩年之久,但攻擊者的腳步似乎并沒有停下來的意思,2018 年 3 月 盜幣事件被披露,截止到2018年7 月 1 日,攻擊者行動并未停止,累計盜取了 47865 枚 ETH,價值高達現價 2 千多萬美金,還有總量過百億的各類 Token,
我們該如何防御這種攻擊呢?
1、更改默認的 RPC API 埠
2、更改 RPC API 監聽地址為內網
3、配置 iptables 限制對 RPC API 埠的訪問
4、賬戶資訊(keystore)不要存放在節點上 (因為賬戶不在節點上,所以就不會用到 unlockAccount 了)
5、私鑰物理隔離(如冷錢包、手工抄寫)或者高強度加密存盤并保障密鑰的安全
后續
這起利用以太坊 RPC 鑒權缺陷實施的自動化盜幣攻擊,已經在全球范圍內對使用者造成了非常嚴重的經濟損失,
你以為這就結束了么?
該事件還有新的隱藏攻擊方式!

新的攻擊方式
以太坊節點的 RPC 介面開放,但是賬戶沒有 ETH (此時黑客已經通過掃描發現目標);
黑客立即構造交易并簽名(簽名設定的金額為 X,nonce 設定為當前的 N+1,N+2,…,N+N),可以構造多個;
以太坊節點發現自己的問題,關閉 RPC 埠;
以太坊節點認為自己已經安全,開始往賬戶轉入 ETH;
其實此時攻擊者通程序式自動化實時監控發現你的轉入,立即開始廣播之前 RPC 開放的時候簽名好的資訊;
此時攻擊完成,

這種攻擊手法非常隱蔽且真實存在,我們只能見招拆招,
對此提醒大家:請勿將私鑰匯入節點,如不得不匯入,請先將 RPC 改成監聽內網或使用 iptables,
屏蔽外部訪問:針對已匯入私鑰的節點,安全起見建議暫停使用,把相關資產安全轉移后廢除這個私鑰檔案,并在其他隔離機器里重新生成新的私鑰,未來采用私鑰簽名交易+節點廣播交易的方式來進行轉賬操作,
進一步分析
對 RPC API 相關模塊功能進行進一步分析,還會發現一些潛在的安全風險,也是需要注意的
比如:如果 RPC API 啟用了 personal 模塊,就可以通過 personal_unlockAccount 方法爆破賬戶密碼,假如爆破成功,就可以一次性實作解鎖 + 轉賬,如果 RPC API 啟用了 miner 模塊,就可以通過 miner_setEtherbase 方法修改挖礦的錢包地址,
從防御分析角度,我們還發現,Geth 等的日志機制不完善,無法記錄 RPC API 請求的來源 IP(配置 --debug、–verbosity 5 均無效),導致直接在被攻擊的以太坊節點上取證溯源攻擊者 IP 是一件很麻煩的事,
層出不窮的攻擊方式

雖然以太坊本身的健壯性已經經受住考驗,但是安全是一個整體,通過這個事件我們可以看出以太坊生態的一些安全缺陷,有的安全缺陷可能會被認為這是一種機制,需要使用者注意,但這個對使用者來說做安全的門檻太高,高門檻的安全一定是會更容易滋生大攻擊事件,
安全性思考
通過這個事件的追蹤調查及攻擊手法的完整思考,我們越發意識到網路空間遵循黑暗森林法則,我們仔細思考一下這起持續時間之久且現在還在活躍的攻擊的所有細節,如果我們是攻擊者,我們一個腳本工程就可以輕松拿下全球數以萬計,甚至百萬千萬的數字資產,
下面我說一下自己的感受吧 我分享區塊鏈安全性問題的原因是在區塊鏈中安全的重要性永遠是第一位的 ,因為幾千億美金的代幣都在區塊鏈上,絕大部磁區塊鏈是開源的,誰都可以研究開源代碼,稍有不慎無數的代幣可能會沒了,
著名的交易所都發生過被攻擊的事件,并且每次的安全事故都很嚴重,很多人賬戶可能一夜之間歸零,區塊鏈的未來十年的安全運行毫無疑問是這個行業的定海神針,是如同神一般的存在,btc這么多年還在運行,大家有沒有感到奇怪,為什么最早的還在運行,新的專案都是升級改版過的反而問題很多,因為任何行業都在提升,出問題是很正常的,不出問題才是例外,其實由于區塊鏈的特性,對安全的要求極高,如何滿足更高級別的安全,其實才是區塊鏈開發應用前提 ,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/287671.html
標籤:區塊鏈
上一篇:Vue環境搭建及部分檔案功能解釋
