比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads

ABU:慢霧:破解造成 BetDice 項目恐慌的交易回滾攻擊手法

Author:

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

2018年12月19日,眾多游戲類DApp遭遇交易回滾攻擊,其中包括BetDice,EOSMax,ToBet等。按當時18元人民幣的價格計算,損失超過500萬人民幣。期間BetDice通過鏈金術平臺發出多次公告,一度造成恐慌。

與此同時,慢霧安全團隊對交易所和中心化錢包給出了暫時性的方案。此刻,攻擊手法依舊是一個謎團。那么,攻擊手段究竟是怎樣的呢?在進行攻擊回顧之前,需要先了解一點技術背景。

技術背景

1、我們知道EOS采用的共識算法是DPOS算法,采用的是21個超級節點輪流出塊的方式。除了21個超級節點外的其他全節點,并沒有出塊的權限。起到的作用是將收到的交易廣播出去,然后超級節點將其進行打包。

說到這里,很容易看出,如果一筆交易是發給除了超級節點外的其他全節點,這筆交易會經歷兩個過程。首先,這筆交易先被全節點接收,然后交易再被節點廣播出去進行打包。而一筆交易是需要超級節點中超過2/31的節點進行確認之后才是不可回滾的,也就是不可逆的。

這個過程大概需要3分鐘左右,也就是說,交易發到除了超級節點外的全節點的時候,由于全節點沒有打包的權利,此時此刻交易仍然處于可逆狀態。這是一個核心關鍵點。

慢霧:Uwerx遭受攻擊因為接收地址會多銷毀掉from地址轉賬金額1%的代幣:金色財經報道,Uwerx遭到攻擊,損失約174.78枚ETH,據慢霧分析,根本原因是當接收地址為 uniswapPoolAddress(0x01)時,將會多burn掉from地址的轉賬金額1%的代幣,因此攻擊者利用uniswapv2池的skim功能消耗大量WERX代幣,然后調用sync函數惡意抬高代幣價格,最后反向兌換手中剩余的WERX為ETH以獲得利潤。據MistTrack分析,黑客初始資金來自Tornadocash轉入的10 BNB,接著將10 BNB換成1.3 ETH,并通過Socket跨鏈到以太坊。目前,被盜資金仍停留在黑客地址0x605...Ce4。[2023/8/2 16:14:10]

2、每一個bp,都可以在自己的節點的config.ini文件內進行黑名單的配置,在黑名單中的帳號是不能進行交易的,也就是說無論怎樣,黑名單的交易都會被回滾。

黑名單配置路徑:

MacOS:

~/Library/ApplicationSupport/eosio/nodeos/config/config.ini

慢霧:近期出現新的流行惡意盜幣軟件Mystic Stealer,可針對40款瀏覽器、70款瀏覽器擴展進行攻擊:6月20日消息,慢霧首席信息安全官@IM_23pds在社交媒體上發文表示,近期已出現新的加密貨幣盜竊軟件Mystic Stealer,該軟件可針對40款瀏覽器、70款瀏覽器擴展、加密貨幣錢包進行攻擊,如MetaMask、Coinbase Wallet、Binance、Rabby Wallet、OKX Wallet、OneKey等知名錢包,是目前最流行的惡意軟件,請用戶注意風險。[2023/6/20 21:49:05]

Linux:

~/.local/share/eosio/nodeos/config/config.ini

配置方法:將config.ini文件內的actor-blacklist填入黑名單帳號,如下圖中,將attacker這個帳號作為黑名單帳號。

了解了以上的知識點之后,我們就可以進行整個攻擊事件的回顧了。

攻擊回顧

跟蹤攻擊者的其中一個攻擊帳號,發現帳號合約內只有一個transfer函數

慢霧:DEUS Finance 二次被黑簡析:據慢霧區情報,DEUS Finance DAO在4月28日遭受閃電貸攻擊,慢霧安全團隊以簡訊的形式將攻擊原理分享如下:

1.攻擊者在攻擊之前先往DeiLenderSolidex抵押了SolidexsAMM-USDC/DEI的LP。

2.在幾個小時后攻擊者先從多個池子閃電貸借出143200000USDC。

3.隨后攻擊者使用借來的USDC在BaseV1Pair進行了swap操作,兌換出了9547716.9個的DEI,由于DeiLenderSolidex中的getOnChainPrice函數是直接獲取DEI-USDC交易對的代幣余額進行LP價格計算。因此在此次Swap操作中將拉高getOnChainPrice函數獲取的LP價格。

4.在進行Swap操作后,攻擊者在DeiLenderSolidex合約中通過borrow函數進行借貸,由于borrow函數中用isSolvent進行借貸檢查,而在isSolvent是使用了getOnChainPrice函數參與檢查。但在步驟3中getOnChainPrice的結果已經被拉高了。導致攻擊者超額借出更多的DEI。

5.最后著攻擊者在把用借貸出來DEI兌換成USDC歸還從幾個池子借出來的USDC,獲利離場。

針對該事件,慢霧安全團隊給出以下防范建議:本次攻擊的原因主要在于使用了不安全的預言機來計算LP價格,慢霧安全團隊建議可以參考Alpha Finance關于獲取公平LP價格的方法。[2022/4/28 2:37:18]

同時,我們可以通過復盤這個帳號的所有交易記錄發現,這個帳號只有開獎記錄,而沒有下注記錄,看起來就好像項目方故意給這個帳號進行開獎一樣。然而事實上并非如此。那為什么會出現這樣的情況呢?這就需要上面的技術背景的知識了。以下是詳細的攻擊手法:

慢霧:Avalanche鏈上Zabu Finance被黑簡析:據慢霧區情報,9月12日,Avalanche上Zabu Finance項目遭受閃電貸攻擊,慢霧安全團隊進行分析后以簡訊的形式分享給大家參考:

1.攻擊者首先創建兩個攻擊合約,隨后通過攻擊合約1在Pangolin將WAVAX兌換成SPORE代幣,并將獲得的SPORE代幣抵押至ZABUFarm合約中,為后續獲取ZABU代幣獎勵做準備。

2.攻擊者通過攻擊合約2從Pangolin閃電貸借出SPORE代幣,隨后開始不斷的使用SPORE代幣在ZABUFarm合約中進行`抵押/提現`操作。由于SPORE代幣在轉賬過程中需要收取一定的手續費(SPORE合約收取),而ZABUFarm合約實際接收到的SPORE代幣數量是小于攻擊者傳入的抵押數量的。分析中我們注意到ZABUFarm合約在用戶抵押時會直接記錄用戶傳入的抵押數量,而不是記錄合約實際收到的代幣數量,但ZABUFarm合約在用戶提現時允許用戶全部提取用戶抵押時合約記錄的抵押數量。這就導致了攻擊者在抵押時ZABUFarm合約實際接收到的SPORE代幣數量小于攻擊者在提現時ZABUFarm合約轉出給攻擊者的代幣數量。

3.攻擊者正是利用了ZABUFarm合約與SPORE代幣兼容性問題導致的記賬缺陷,從而不斷通過`抵押/提現`操作將ZABUFarm合約中的SPORE資金消耗至一個極低的數值。而ZABUFarm合約的抵押獎勵正是通過累積的區塊獎勵除合約中抵押的SPORE代幣總量參與計算的,因此當ZABUFarm合約中的SPORE代幣總量降低到一個極低的數值時無疑會計算出一個極大的獎勵數值。

4.攻擊者通過先前已在ZABUFarm中有進行抵押的攻擊合約1獲取了大量的ZABU代幣獎勵,隨后便對ZABU代幣進行了拋售。

此次攻擊是由于ZabuFinance的抵押模型與SPORE代幣不兼容導致的,此類問題導致的攻擊已經發生的多起,慢霧安全團隊建議:項目抵押模型在對接通縮型代幣時應記錄用戶在轉賬前后合約實際的代幣變化,而不是依賴于用戶傳入的抵押代幣數量。[2021/9/12 23:19:21]

1、首先:攻擊者調用非黑名單合約的transfer函數,函數內部有一個inlineaction進行下注,from填寫的是攻擊者控制的非黑名單合約帳號,to填寫的是游戲合約帳號。這時,攻擊者發送交易是發向游戲合約自己的全節點服務器。使用的是黑名單帳號進行。

聲音 | 慢霧:使用中心化數字貨幣交易所及錢包的用戶注意撞庫攻擊:據慢霧消息,近日,注意到撞庫攻擊導致用戶數字貨幣被盜的情況,具體原因在于用戶重復使用了已泄露的密碼或密碼通過撞庫攻擊的“密碼生成基本算法”可以被輕易猜測,同時用戶在這些中心化服務里并未開啟雙因素認證。分析認為,被盜用戶之所以沒開啟雙因素認證是以為設置了獨立的資金密碼就很安全,但實際上依賴密碼的認證體系本身就不是個足夠靠譜的安全體系,且各大中心化數字貨幣交易所及錢包在用戶賬號風控體系的策略不一定都一致,這種不一致可能導致用戶由于“慣性思維”而出現安全問題。[2019/3/10]

2、游戲節點讀取到了這筆交易,立刻進行開獎,如果中獎,將對攻擊者控制的非黑名單帳號發送EOS。

3、在經歷了一個1,2兩個操作之后。理論上攻擊者控制的非黑名單帳號是進行了余額扣除。然后進行正常的開獎邏輯。到這里之前,一切都是正常的。也許有讀者會問,為什么配置了黑名單,交易還能正常發起?原因是這個黑名單生效范圍是在bp內,普通的全節點的config.ini內是沒有黑名單的配置的。所以攻擊者依然可以發起交易。

4、到此為止,攻擊正式開始,也到了最關鍵的地方,由于項目方節點在收到下注交易的時候已經立馬完成了開獎邏輯,而且采用的是線下開獎的模式,即下注交易和開獎交易是兩筆不同的交易。但是,這兩筆交易僅僅是在項目方的節點內完成,仍然是可逆的。當項目方節點向bp廣播這兩筆交易的時候,由于第一筆下注交易的發起者在bp節點的黑名單內,這一筆交易將被回滾,也就是打包失敗,而開獎交易的發起者是項目方,不在黑名單之內,會被正常打包。因此兩筆交易中的第一筆下注交易一定會被回滾,而開獎交易依舊會被打包,這也就解釋了為什么只有開獎記錄,而沒有下注記錄。因為下注記錄都被回滾了。

整個過程可以參考下面的圖:

攻擊復現

本次攻擊復現參考EOSLIVE錢包團隊的文章:https://eos.live/detail/19255

1、環境準備

本地準備兩個節點,一個出塊節點,一個同步節點,出塊節點用于模擬真實bp,而同步節點則用于模擬項目方,其中出塊節點需要開啟history插件,方便后續的debug,并且把attacker加入節點黑名單。方便后續的debug。打包節點則需要開啟自動開獎插件,自動開獎插件配置詳見:

https://github.com/superoneio/security

本次復現用到的代碼:

https://github.com/superoneio/security

本地多節點配置方法官方參考:

https://developers.eos.io/eosio-nodeos/docs/local-multi-node-testnet

三個測試帳號,分別是tobetioadmin,tobetiologs1,attackproxy1,分別為項目方帳號,項目方log帳號,和攻擊代理帳號,其中tobetioadmin部署tobet游戲合約,tobetiologs1部署logs合約,attackproxy1部署attack合約。注意除了攻擊代理帳號外的其他兩個帳號不要改為其他帳號,如果改為其他帳號需要對自動開獎插件進行修改,自動開獎插件是攔截tobetioadmin這個帳號的。

附上我的雙節點的配置:

其中nodeos_main為出塊節點,nodeos_second為同步節點。

2、啟動節點

看到以上信息則代表dice_plugin配置成功

3、首先對正常的邏輯進行測試。

使用attackproxy1對tobetioadmin帳號進行正常的轉賬交易

可以看到,攻擊代理合約進行了正常的轉賬。

4、開始攻擊,使用黑名單帳號調用攻擊代理合約,向項目方合約發起攻擊。查詢初始余額

為保證攻擊成功,連續向項目方發起4起攻擊

再次查詢余額

查詢attacker帳號記錄

可見,并沒有attacker對attackproxy1的調用記錄,最后兩條記錄是我測試直接使用黑名單向tobetadmin發起攻擊的時候留下的記錄。與本次測試無關。但是通過查詢發現,本地記錄和鏈上記錄是相吻合的,即無下注記錄。

查詢attackproxy1的帳號記錄

可以看到的是,這個也與鏈上記錄吻合,只有開獎記錄,就像tobetadmio故意給attackproxy1開獎一般。

通過以上的復現及和鏈上記錄的對比,我們可以證明上文說的攻擊手法,就是黑客本次進行攻擊的手法,采用的就是使用黑名單進行回滾的操作。

防御建議

1、針對DApp的防御建議

節點開啟readonly模式,防止節點服務器上出現未確認的塊建立開獎依賴,如訂單依賴,開獎的時候判斷訂單是否存在,就算在節點服務器上開獎成功,由于在bp上下注訂單被回滾,所以相應的開獎記錄也會被回滾。

2、針對交易所和中心化錢包的防御建議

慢霧安全團隊建議EOS交易所及中心化錢包在通過RPC接口get_actions查詢熱錢包充值記錄時,應檢查充值transaction所在的block_num是否小于last_irreversible_block,如果block_num大于last_irreversible_block則表示該區塊仍然是可逆的,存在「假充值」風險。

本文來源于非小號媒體平臺:

慢霧科技

現已在非小號資訊平臺發布1篇作品,

非小號開放平臺歡迎幣圈作者入駐

入駐指南:

/apply_guide/

本文網址:

/news/3627097.html

免責聲明:

1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險

2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場

上一篇:

再提Mt.Gox,糟糕的「里程碑事件」正提升區塊鏈世界的安全意識

下一篇:

復盤數十萬EOS被盜過程,背后是其架構設計缺陷?

Tags:ABUEOSPOROREGaburDEOSPORTO幣KoreCoin

酷幣下載
ROB:Robinhood獲新一輪融資 估值或超70億美元 曾在5天內吸納百萬加密用戶

據Theinformation消息,股票、期權及加密貨幣交易應用RobinhoodMarkets即將以高達70億美元—80億美元的估值結束其最新一輪融資.

1900/1/1 0:00:00
比特幣:歷史碎片:差點摧毀比特幣、殺死去中心化信仰的「價值溢出事件」

原文標題:《10年前,代碼殺死了1844.67億枚比特幣!》近來,區塊鏈領域最大的兩件事莫過于以太坊君士坦丁堡硬分叉和隱私幣Grin項目了,這次,不守時的的以太坊又不守時了.

1900/1/1 0:00:00
區塊鏈:Beosin 成都鏈安一周歲:利用數學之美,讓區塊鏈世界更健壯

區塊鏈時代,智能合約的安全性被無限放大,一行代碼的漏洞就能導致千萬美元的損失。統計數據顯示,2011年-2018年間,智能合約安全事件損失金額達12.4億美元,占該期間區塊鏈安全事件總損失金額的.

1900/1/1 0:00:00
BOOK:Facebook明年一季度發行GlobalCoin 你會信任它并購買嗎?

金色財經比特幣5月24日訊Facebook已經敲定明年推出自己的加密貨幣,他們計劃在2020年第一季度之前在十幾個國家建立數字支付系統,而且準備在今年年底之前開始測試其加密貨幣.

1900/1/1 0:00:00
比特幣:趙長鵬:不得不反訴紅衫以公開結果,曾墊付77.9萬美元法律費用

針對起訴紅杉資本損害名譽一事,幣安創始人趙長鵬今天連發11條推文回應,重大內容如下:”1.仲裁庭駁回了紅杉的所有訴訟請求;2.我贏了,案件非常具有破壞性.

1900/1/1 0:00:00
比特幣:比特幣披薩節:當初花一萬比特幣買披薩的那個人現在怎么樣了?

作者:幣圈大貓 今天是5月22日,對于幣圈人來說是一個特殊的日子。在9年前的今天,是比特幣第一次被定價的日子,至此之后比特幣才開始真正的有了交換的價值,因此這一天成為了比特幣的紀念日,被稱為比特.

1900/1/1 0:00:00
ads