By:Johan@慢霧安全團隊

據慢霧區消息,2021 年6 月29 日,去中心化跨鏈交易協議THORChain 發推稱發現一個針對THORChain 的惡意攻擊,THORChain 節點已作出反應並進行隔離和防禦。慢霧安全團隊第一時間介入分析,經分析發現,這是一起針對跨鏈系統的“假充值”攻擊,結果分享如下:

什麼是“假充值”?

當我們在談論“假充值”攻擊時,我們通常談的是攻擊者利用公鏈的某些特性,繞過交易所的充值入賬程序,進行虛假充值,並真實入賬。

慢霧在早期已經披露過多起“假充值”攻擊事件:

【1】USDT 假充值:USDT 虛假轉賬安全⻛險分析| 2345 新科技研究院區塊鏈實驗室

【2】EOS 假充值:EOS 假充值(hard_fail 狀態攻擊)紅色預警細節披露與修復方案【3】以太坊代幣假充值:以太坊代幣“假充值”漏洞細節披露及修復方案

【4】比特幣RBF 假充值風險:比特幣RBF 假充值風險分析

隨著RenVM、THORChain 等跨鏈服務的興起,跨鏈節點充當起了交易所的角色,通過掃描另一條公鏈的資產轉移情況,在本地公鏈上生成資產映射。 THORChain 正是通過這種機制,將以太坊上的代幣轉移到其它公鏈。

漏洞分析

我們從業務邏輯入口去追踪分析此漏洞的成因。

首先看到在處理跨鏈充值事件時,調用了getAssetFromTokenAddress 方法去獲取代幣信息,並傳入了資產合約地址作為參數:

- bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go

在getAssetFromTokenAddress 方法裡,我們看到它調用了getTokenMeta 去獲取代幣元數據,此時也傳入了資產合約地址作為參數,但在此處有一個定義引起我們的警覺,在初始化代幣時,默認賦予了代幣符號為ETH,這就是漏洞的關鍵點之一:asset := common.ETHAsset,如果傳入合約地址對應的代幣符號為ETH,那麼此處關於symbol 的驗證將被繞過。

- bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go

繼續驗證我們的猜測,我們看到當代幣地址在系統中不存在時,會從以太坊主鏈上去獲取合約信息,並以獲取到的symbol 構建出新的代幣,此時所有的漏洞成因都已經顯現:

- bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go

- bifrost/pkg/chainclients/ethereum/tokens_db.go

- bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go

總結一下,首先是由於錯誤的定義,如果跨鏈充值的ERC20 代幣符號為ETH,那麼將會出現邏輯錯誤,導致充值的代幣被識別為真正的以太幣ETH。

還原攻擊真相

我們來看一筆攻擊交易的執行過程,可以提取出充值的代幣合約地址:

我們在Etherscan 上查看這個代幣合約地址:

發現這個地址對應的合約的代幣符號正是ETH,攻擊者正是通過部署了假幣合約,完成了這次跨鏈假充值。

漏洞修復

漏洞補丁:

項目方在發現攻擊後快速對代碼進行了修復,刪除了默認的代幣類型,使用common.EmptyAsset 進行空代幣定義,並在後續邏輯中使用asset.IsEmpty() 進行判斷,過濾了沒有進行賦值的假充值代幣。

總結

幸運的是項目方及時發現了本次攻擊,未造成巨額財產損失,但作為跨鏈系統,未來可能聚集巨額的多鏈資金,安全性不容忽視,因此慢霧安全團隊建議在進行跨鏈系統設計時應充分考慮不同公鏈不同代幣的特性,充分進行“假充值”測試,做好狀態監控和預警,必要時可聯繫專業安全公司進行安全審計。

往期回顧

往期回顧

強扭的瓜不甜—— SafeDollar 被黑分析

“不可思議” 的被黑之旅—— Impossible Finance 被黑分析

走過最長的路,竟是自己的套路—— Alchemix 事件分析

HPOOL 入駐慢霧區,發布「安全漏洞與威脅情報賞金計劃」

重磅!慢霧的安全審計結果已集成到CoinMarketCap

強扭的瓜不甜—— SafeDollar 被黑分析“不可思議” 的被黑之旅—— Impossible Finance 被黑分析走過最長的路,竟是自己的套路—— Alchemix 事件分析HPOOL 入駐慢霧區,發布「安全漏洞與威脅情報賞金計劃」重磅!慢霧的安全審計結果已集成到CoinMarketCap

慢霧導航

慢霧科技官網

https://www.slowmist.com/

慢霧區官網

https://slowmist.io/

慢霧 GitHub

https://github.com/slowmist

Telegram

https://t.me/slowmistteam

Twitter

https://twitter.com/@slowmist_team

Medium

https://medium.com/@slowmist

幣乎

https://bihu.com/people/586104

知識星球

https://t.zsxq.com/Q3zNvvF

火星號

http://t.cn/AiRkv4Gz

鏈聞號

https://www.chainnews.com/u/958260692213.htm