2018年12月19日,眾多游戲類DApp遭遇交易回滾攻擊,其中包括BetDice,EOSMax,ToBet等。按當時18元人民幣的價格計算,損失超過500萬人民幣。期間BetDice通過鏈金術平臺發出多次公告,一度造成恐慌。
與此同時,慢霧安全團隊對交易所和中心化錢包給出了暫時性的方案。此刻,攻擊手法依舊是一個謎團。那么,攻擊手段究竟是怎樣的呢?在進行攻擊回顧之前,需要先了解一點技術背景。
技術背景
1、我們知道EOS采用的共識算法是DPOS算法,采用的是21個超級節點輪流出塊的方式。除了21個超級節點外的其他全節點,并沒有出塊的權限。起到的作用是將收到的交易廣播出去,然后超級節點將其進行打包。
說到這里,很容易看出,如果一筆交易是發給除了超級節點外的其他全節點,這筆交易會經歷兩個過程。首先,這筆交易先被全節點接收,然后交易再被節點廣播出去進行打包。而一筆交易是需要超級節點中超過2/31的節點進行確認之后才是不可回滾的,也就是不可逆的。
這個過程大概需要3分鐘左右,也就是說,交易發到除了超級節點外的全節點的時候,由于全節點沒有打包的權利,此時此刻交易仍然處于可逆狀態。這是一個核心關鍵點。
慢霧:近期出現新的流行惡意盜幣軟件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]
2、每一個bp,都可以在自己的節點的config.ini文件內進行黑名單的配置,在黑名單中的帳號是不能進行交易的,也就是說無論怎樣,黑名單的交易都會被回滾。
黑名單配置路徑:
MacOS:
~/Library/ApplicationSupport/eosio/nodeos/config/config.ini
Linux:
~/.local/share/eosio/nodeos/config/config.ini
慢霧:Equalizer Finance被黑主要在于FlashLoanProvider合約與Vault合約不兼容:據慢霧區消息,6 月 7 日,Equalizer Finance 遭受閃電貸攻擊。慢霧安全團隊以簡訊形式將攻擊原理分享如下:
1. Equalizer Finance 存在 FlashLoanProvider 與 Vault 合約,FlashLoanProvider 合約提供閃電貸服務,用戶通過調用 flashLoan 函數即可通過 FlashLoanProvider 合約從 Vault 合約中借取資金,Vault 合約的資金來源于用戶提供的流動性。
2. 用戶可以通過 Vault 合約的 provideLiquidity/removeLiquidity 函數進行流動性提供/移除,流動性提供獲得的憑證與流動性移除獲得的資金都受 Vault 合約中的流動性余額與流動性憑證總供應量的比值影響。
3. 以 WBNB Vault 為例攻擊者首先從 PancekeSwap 閃電貸借出 WBNB
4. 通過 FlashLoanProvider 合約進行二次 WBNB 閃電貸操作,FlashLoanProvider 會先將 WBNB Vault 合約中 WBNB 流動性轉給攻擊者,隨后進行閃電貸回調。
5. 攻擊者在二次閃電貸回調中,向 WBNB Vault 提供流動性,由于此時 WBNB Vault 中的流動性已經借出一部分給攻擊者,因此流動性余額少于預期,則攻擊者所能獲取的流動性憑證將多于預期。
6. 攻擊者先歸還二次閃電貸,然后從 WBNB Vault 中移除流動性,此時由于 WBNB Vault 中的流動性已恢復正常,因此攻擊者使用添加流動性獲得憑證所取出的流動性數量將多于預期。
7. 攻擊者通過以上方式攻擊了在各個鏈上的 Vault 合約,耗盡了 Equalizer Finance 的流動性。
此次攻擊的主要原因在于 Equalizer Finance 協議的 FlashLoanProvider 合約與 Vault 合約不兼容。慢霧安全團隊建議協議在進行實際實現時應充分考慮各個模塊間的兼容性。[2022/6/8 4:09:22]
配置方法:將config.ini文件內的actor-blacklist填入黑名單帳號,如下圖中,將attacker這個帳號作為黑名單帳號。
慢霧:AToken錢包疑似遭受攻擊 用戶反饋錢包中資產被盜:據慢霧區情報,近期 AToken 錢包(atoken.com)疑似遭受到攻擊,用戶在使用 AToken 錢包后,幣被偷偷轉移走。目前已經有較多的用戶反饋錢包中的資產被盜。AToken 錢包官方推特在2021年12月20日發布了停止運營的聲明。官方 TG 頻道中也有多位用戶反饋使用 AToken 錢包資產被盜了,但是并沒有得到 AToken 團隊的回復和處理。
如果有使用 AToken 錢包的用戶請及時轉移資產到安全的錢包中。具體可以參考如下操作:
1. 立即將 AToken 錢包中的相關的資產轉移到新的錢包中。
2. 廢棄導入 AToken 或者使用 AToken 生成的助記詞或私鑰的錢包。
3. 參考慢霧安全團隊梳理的數字資產安全解決方案,對數字資產進行妥善的管理。
4. 留存相應有問題的 AToken 錢包 APP 的安裝包,用于后續可能需要的取證等操作。
5. 如果資產已經被盜,可以先梳理被盜事件的時間線,以及黑客的相關地址 MistTrack 可以協助挽回可能的一線希望。[2022/2/9 9:39:46]
了解了以上的知識點之后,我們就可以進行整個攻擊事件的回顧了。
慢霧:nanotron安全審計報告是偽造的:慢霧科技發推表示:團隊并沒有對于nanotron進行審計,項目的安全審計報告是偽造的,請注意防范風險。[2020/10/8]
攻擊回顧
跟蹤攻擊者的其中一個攻擊帳號,發現帳號合約內只有一個transfer函數
同時,我們可以通過復盤這個帳號的所有交易記錄發現,這個帳號只有開獎記錄,而沒有下注記錄,看起來就好像項目方故意給這個帳號進行開獎一樣。然而事實上并非如此。那為什么會出現這樣的情況呢?這就需要上面的技術背景的知識了。以下是詳細的攻擊手法:
1、首先:攻擊者調用非黑名單合約的transfer函數,函數內部有一個inlineaction進行下注,from填寫的是攻擊者控制的非黑名單合約帳號,to填寫的是游戲合約帳號。這時,攻擊者發送交易是發向游戲合約自己的全節點服務器。使用的是黑名單帳號進行。
2、游戲節點讀取到了這筆交易,立刻進行開獎,如果中獎,將對攻擊者控制的非黑名單帳號發送EOS。
3、在經歷了一個1,2兩個操作之后。理論上攻擊者控制的非黑名單帳號是進行了余額扣除。然后進行正常的開獎邏輯。到這里之前,一切都是正常的。也許有讀者會問,為什么配置了黑名單,交易還能正常發起?原因是這個黑名單生效范圍是在bp內,普通的全節點的config.ini內是沒有黑名單的配置的。所以攻擊者依然可以發起交易。
聲音 | 慢霧:警惕“假充值”攻擊:慢霧分析預警,如果數字貨幣交易所、錢包等平臺在進行“EOS 充值交易確認是否成功”的判斷存在缺陷,可能導致嚴重的“假充值”。攻擊者可以在未損失任何 EOS 的前提下成功向這些平臺充值 EOS,而且這些 EOS 可以進行正常交易。
慢霧安全團隊已經確認真實攻擊發生,但需要注意的是:EOS 這次假充值攻擊和之前慢霧安全團隊披露過的 USDT 假充值、以太坊代幣假充值類似,更多責任應該屬于平臺方。由于這是一種新型攻擊手法,且攻擊已經在發生,相關平臺方如果對自己的充值校驗沒有十足把握,應盡快暫停 EOS 充提,并對賬自查。[2019/3/12]
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:EOSULTPROVAULTEOST幣EVAULT價格Moma ProtocolMEEB Vault (NFTX)
以太坊經典EthereumClassic最近遭受了51%攻擊,讓市場對PoW機制加密貨幣的安全性心存疑慮。緊接著,DASH也陷入了麻煩.
1900/1/1 0:00:00在這個高速發展的區塊鏈行業,Gate.io一直秉承真實,透明,不刷量,不造假數據的理念,憑借認真努力和技術積累,有幸受到數百萬用戶的認可,邁入全球Top10頂級專業交易平臺的行列,為此.
1900/1/1 0:00:00文/31QU小萍 幣安強勁的上升勢頭令人印象深刻。年初,幣安重啟LaunchpadIEO模式,其他交易所跟風模仿,引領了一波小牛市.
1900/1/1 0:00:00百花村旁有一座山叫區塊鏈山,屬村民集體所有。村外的A公司準備開發區塊鏈山的旅游資源。A公司和村民委員會聯合成立了百花旅游開發有限公司,簽了股份制合作協議.
1900/1/1 0:00:00比特幣價格持續在7600-8000美元的范圍內盤整,有逐漸上漲的趨勢。截至撰稿時,比特幣5月最高價8162美元,最低價7071美元,總市值$135,725,754,502美元.
1900/1/1 0:00:00火星財經APP一線報道,據CoinDesk消息,5月20日香港高等法院一份文件顯示,幣安CEO趙長鵬已通過其律師向法院遞交申請,起訴紅杉資本損害其名譽,阻止幣安以高估值籌集資金.
1900/1/1 0:00:00