比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > AAVE > Info

NEO爆出“盜幣危機”?不過是“雞肋”的RPC漏洞_RPC

Author:

Time:1900/1/1 0:00:00

1前言——NeoRPC漏洞之爭

12月1日下午16:34,騰訊湛盧實驗室宣布發現NEO的RPC漏洞。官微發文如下。

而NEO官方微博,在四個小時之后迅速回應如下,提出不同的看法。

誰對誰錯?公鏈RPC模塊安全情況如何?北京鏈安在此為您做詳細分析。

2RPC和RPC漏洞介紹

首先介紹下RPC。遠程過程調用是一個計算機通信協議。該協議允許運行于一臺計算機的程序調用另一臺計算機的子程序,而程序員無需額外地為這個交互作用編程。如果涉及的軟件采用面向對象編程,那么遠程過程調用亦可稱作遠程調用或遠程方法調用。

古老的如微軟的一些RPC漏洞,如MS08-067,通過畸形的RPC請求,觸發C/C++的字符串拷貝連接之類的問題,造成內存覆蓋,引發安全漏洞。因為漏洞的表現方式是與編程語言密切相關的。微軟的很多問題組件基本都是使用C/C++語言開發,所以存在內存覆蓋這樣的安全問題。但是伴隨著SDL的推廣,RPC在傳遞參數過程中,內存拷貝造成的安全問題很難再出現。

Solana區塊鏈上的以太坊虛擬機Neon正集成Aleph.im:金色財經報道,Solana區塊鏈上的以太坊虛擬機Neon今天宣布,正在集成跨鏈計算網絡和去中心化索引提供商Aleph.im,以獲取Solana鏈上數據,這是實現以太坊和Solana之間跨鏈DeFi的第一步。Neon使開發人員能夠在Solana上部署以太坊應用程序,而無需更改代碼庫。通過與Aleph.im的集成,用戶將能夠查看當前和歷史交易數據,包括總鎖倉量(TVL)、在Solana上部署的以太坊合約、交易成本以及有關Neon上智能合約的統計數據。Aleph.im正在推出其去中心化計算網絡,目前處于測試版,并將于下個月公開發布。[2021/11/24 7:07:05]

2.1公鏈和代幣使用的編程語言多樣

在區塊鏈上面,由于代幣和公鏈的開發語言多樣,如比特幣、EOS、XRP、XLM、DASH、XMR的主流客戶端使用C/C++開發,ethereum、bytom等的主流客戶端使用的是內存安全的Go語言實現。而很多志在構建基于分片、并行、分布式區塊鏈網絡的公鏈,從一開始就選擇的是函數式編程語言。如Rchain使用Scala語言開發,Aeternity使用Erlang語言開發。使用函數式語言開發的公鏈,除去邏輯類漏洞,語言層面就杜絕了過程式語言存在的一些安全隱患。

LBank藍貝殼ETF專區于3月18日14:00上線KNC3L、KNC3S、NEO3L、NEO3S、HBAR3L、HBAR3S:據官方公告,3月18日14:00,LBank藍貝殼ETF專區上線KNC3L、KNC3S、NEO3L、NEO3S、HBAR3L、HBAR3S。購買3L表示3倍做多、購買3S表示3倍做空,賣出3L或3S表示平倉。LBANK藍貝殼杠桿ETF是錨定現貨漲跌幅的永續杠桿產品,采用再平衡風控,自動復利,無需保證金,無爆倉規則,倉位利用率更高,可在 “ETF專區”購買。[2021/3/18 18:55:54]

2.2同一條公鏈存在不同語言的客戶端實現

一條公鏈存在各種語言實現的不同版本。比特幣節點的主流客戶端使用C/C++開發,如satoshi客戶端,但是同時還存在對開發者友好的客戶端。如javascript語言開發的bcoin,go語言開發的btcd。以太坊方面,主流的以太坊客戶端Geth使用Go語言實現,大概占所有節點的80%。基于Rust語言實現的Parity-ethereum占所有節點的20%,剩下的CPP-ethereum、Python-ethereum、Java-ethereum一般只存在研究價值,即使存在漏洞也不容易引發實際的安全問題。而此次騰訊號稱“存在問題”的Neo主流客戶端是由.net實現,一般運行在windows系統上。

動態 | NEO Global Capital參投Cere Network最新一輪風險融資:據SiliconANGLE 7月4日消息,區塊鏈客戶關系管理初創公司Cere Network近日完成了一筆數額不詳的風險融資。投資方除此前披露的Arrington XRP Capital外,還包括NEO Global Capital。今年6月,該公司從Binance Lab的孵化項目中畢業。[2019/7/4]

以上幾點造成了RPC漏洞在區塊鏈上的表現方式差異極大。

3區塊鏈上的RPC和雞肋的區塊鏈RPC漏洞

首先介紹下區塊鏈中RPC接口使用的流程和場景。以比特幣舉例,交易所如何判斷用戶的比特幣的確充值成功了呢?一般會在內網中做網段和環境隔離,然后使用docker部署一個對應的全節點客戶端,如比特幣可以部署bcoin的全節點客戶端。然后對RPC接口調用權限進行設置,一般來說公鏈都會使用username和password的方式來確認調用者有權限調用RPC接口。此時程序鑒權成功后,通過調用bcoin客戶端提供的rpcapi接口Getblockbyheight,輪詢新區塊中是否有用戶充值的交易,然后等待對應的確認數后,返回給用戶成功充值的消息。

動態 | NEO 3.0“原生合約”開發完成:NEO創始人兼核心開發者張錚文今日發布3.0開發最新進展,稱3.0中的“原生合約”功能開發已完成。在3.0中,所有資產都將是合約資產,包括NEO/GAS。新的NEO和GAS合約與NEP-5標準兼容,可以使用任意錢包和客戶端來直接對資產進行管理。采用原生合約來構建NEO和GAS,可以使它們的運行速度與在虛擬機中相比更快。同時,NEO/GAS所提供的系統功能也會成為合約的一部分,向用戶和其它合約開放接口,使得任意合約都可以方便地與之集成。此外,其它合約也可以通過NEP-5的接口來與NEO和GAS集成,開發出更加高級的功能。該技術更新對DApp開發者、交易所以及生態項目均有好處。他還表示,“借助原生合約的強大功能,現在每次你發送或接收NEO轉賬時,系統都會自動為你提取GAS獎勵,無需手動操作。”[2019/5/13]

在這個RPC調用的過程中,重要的一點是鑒權,鑒權成功后才有權限調用對應的RPC接口。一般公鏈的都會提供CLI工具給使用者,用來配置RPC是否開放和開放后的鑒權方式,默認RPC接口在被本地調用的時候是不需要鑒權的,在被遠程IP調用的時候,即使對應的RPC接口存在漏洞,由于鑒權無法通過或者該RPC接口根本沒有配置開放,攻擊者也是沒有辦法觸發RPC漏洞的。

聲音 | NEO創始人:對金融行業的過度監管導致加密生態系統發展減緩:據ethereumworldnews報道,NEO創始人達鴻飛近日發布博客文章稱,在早期,人們希望看到區塊鏈應用于金融行業,因為新技術可能會顛覆傳統的金融行業。然而,由于金融行業幾乎在世界各地都受到嚴格監管,因此實施過程中面臨著監管障礙。只有兩種方法可以將區塊鏈整合到金融行業中,一種是與有執照的傳統金融機構合作,另一種是做一些不需要執照的事情來繞過執照。從本質上講,雖然金融市場有很大潛力為加密生態系統的發展作出貢獻,但由于監管過度,區塊鏈在現有的金融監管體系中幾乎無法生存。[2018/11/10]

BTC/DASH/XMR等Coin一般存在2個模塊,RPC模塊和P2P模塊。公鏈由于需要執行合約、通常圖靈完備,一般比Coin多兩個模塊,虛擬機和編譯器。而不管在Coin還是公鏈中都存在的RPC漏洞都很雞肋,原因就是RPC需要鑒權后才可調用,很難在真實環境中產生安全影響。

下面介紹下區塊鏈中曾經的或者還是“0day”的RPC漏洞。

3.1RPC鑒權設計引發的安全漏洞

目前來看,該類漏洞危害最大,但幾乎沒有。暫時也還沒有發生類似于路由器后門萬能密碼的漏洞。目前只在bitcoindandBitcoin-Qt早期版本有一個可以猜密碼的漏洞,CVE-2013-4165(注意此漏洞只影響這兩個版本的比特幣實現,并不影響go版本的btcd和javascript版本的bcoin)。

bitcoind0.8.1中bitcoinrpc.cpp中的HTTPAuthorized函數在檢測到密碼的第一個錯誤字節時提供有關身份驗證失敗的信息,這使遠程攻擊者更容易通過猜測爆破攻擊來確定密碼。

3.2Post過程中,觸發特定語言版本公鏈的RPC漏洞

表現的比較典型的就是cppethereum的CVE-2017-12119。前面已經說過,cppethereum是以太坊一個研究性版本,實際中幾無影響,并且rpc類漏洞,攻擊者必須鑒權后才能調用,更加大大削弱了該漏洞的實際影響。該漏洞由思科的talos團隊上報發現。https://www.talosintelligence.com/vulnerability_reports/TALOS-2017-0471

在調用cppethereum的rpc接口的時候,攻擊者可以Post傳遞一個畸形類型的參數,使得類型檢查不通過,可以直接導致cppethereum崩潰。

注意此類漏洞完全不影響以太坊主流客戶端geth和Parity-ethereum。

3.3RPC設計引發的邏輯類盜幣漏洞

目前來看以太坊和EOS都有類似問題。以以太坊舉例。

以太坊對于賬戶的RPC調用支持unlockaccountapi。

https://github.com/ethereum/go-ethereum/wiki/Managing-your-accounts

可以看到,需要提供地址,密碼和解鎖時間。問題就出在解鎖時間上面,一旦解鎖,該錢包若還暴露在公網上,在duration期間的錢包,任何人在duration這段期間都有權限將錢包中的eth轉走。

整個攻擊流程如下:攻擊者預先掃描8545端口、8546端口等開放的以太坊節點,遍歷區塊高度、錢包地址及余額,一旦有余額的地址處于unlockduration,重復調用eth_sendTransaction將余額轉空。

EOS也支持賬戶解鎖函數,見https://developers.eos.io/eosio-nodeos/v1.1.0/reference#wallet_unlock。邏輯和攻擊手法相同,不再分析。

3.4配置安全引發的問題

前面已經說過RPC調用是要鑒權的。如比特幣的bcoin客戶端,要遠程調用rpc接口必須提供用戶名和密碼。很多公鏈,如bytom,默認配置文件即是127.0.0.1,也即本地發起的rpc調用是不需要認證的,通過遠程IP發起的rpc調用必須提供用戶名和密碼,否則無法進行rpc調用。但是如果用戶錯誤配置rpc,如弱密碼或者取消鑒權此時就會帶來安全隱患。

3.5接口實現邏輯不嚴謹引發的漏洞

這里我們以Go語言實現的bytom舉例,其他公鏈若有類似邏輯請自行查證。

一般來說公鏈中都會支持錢包配置文件的備份和恢復,備份一般不會產生問題,但是此時的恢復,恢復本質上是接收外界的post參數,然后公鏈的進程要往所在的操作系統或者docker中的系統寫入一個文件,如果在post傳遞參數上傳遞的是跨目錄覆蓋掉系統關鍵文件的參數,結果如何呢?Bytom的早期的版本就存在這樣的一個漏洞,調用restore-wallet,傳遞畸形的post參數,在恢復錢包文件的時候可以引發系統關鍵文件被覆蓋,造成遠程代碼執行。但是注意,攻擊者想利用該漏洞也得通過RPC的鑒權,才有權限調用該接口。

修復起來就相對簡單。敏感性接口,邏輯實現上一定要禁止跨目錄的操作。

4總結

RPC模塊作為支付類幣種和公鏈都共有的模塊,會存在一些安全問題。但是由于RPC調用需要鑒權,使得RPC模塊即使存在漏洞,也是較難觸發利用的。此次的neo的rpc接口問題,官方默認配置已經不允許遠程無鑒權調用,除非用戶錯誤配置,影響極為有限。北京鏈安在此也提醒相關用戶,注意RPC的鑒權配置,避免產生RPC配置安全問題。

Tags:RPCethereum以太坊RPC幣RPC價格ethereum幣是什么幣以太坊幣是什么幣

AAVE
盤點近3年讓許多人真正賺到錢的幣圈風口,下半年有哪些機會值得關注?_EOS

這個圈子,很多人一進來,聽到的最多的一句話便是:價值投資-HODL。然而HODL是一件很無聊的事,畢竟買個東西放在那,每天只是看一眼,成年累月的不操作,實在是有違人性.

1900/1/1 0:00:00
德信幣DCR(Decred)_Decred

Decred是幾位比特幣開發人員由于對比特幣現狀不滿,尤其是難以忍受比特幣core團隊壟斷了比特幣軟件開發,缺乏良好的管理和升級機制,從而決定重新開發的另一個全新的幣種.

1900/1/1 0:00:00
狂飆200天:進退兩難的中國大模型團戰_CEO

文|何麗芯 編輯|于麗麗、劉旌 1.極速200天 兩個月前,“暗涌Waves”曾向一位投資了王慧文光年之外的基金合伙人提問:中國創投史上.

1900/1/1 0:00:00
「讀后續寫」三種結尾設計方法+三種主旨升華句_atc

三種結尾設計方法+三種主旨升華句三種結尾結尾設計方法方法一:首位呼應法寫012017年高考真題,講述的是與健忘媽媽一塊去旅游的故事.

1900/1/1 0:00:00
新能源特種線纜領軍者,鑫宏業:彈性看樁、儲、車、機器人_CAG

1.深耕線纜行業近二十年,新能源汽車線纜快速增長1.1.深耕線纜行業近二十年,抓住光伏&新能源機遇鑫宏業是中國領先的新能源特種線纜生產商。公司成立于2004年,成立當年開始研發光伏線纜.

1900/1/1 0:00:00
區塊鏈證偽:螞蟻金服和上海華山醫院首個區塊鏈電子處方方案_區塊鏈

作者丨萊道君 來源丨萊道區塊鏈 鑒于筆者對區塊鏈相關的行業比較關注,在看到螞蟻金服和上海華山醫院9月13推出首個區塊鏈電子處方方案的消息后,出于好奇區塊鏈的解決方案,查看了網上的消息.

1900/1/1 0:00:00
ads