加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > 火星幣 > Info

假幣的換臉戲法:技術拆解 THORChain 跨鏈系統“假充值”漏洞_ETH:Guarded Ether

Author:

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

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

什么是“假充值”?

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

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

慢霧xToken被黑事件分析:兩個合約分別遭受“假幣”攻擊和預言機操控攻擊:據慢霧區消息,以太坊 DeFi 項目 xToken 遭受攻擊,損失近 2500 萬美元,慢霧安全團隊第一時間介入分析,結合官方事后發布的事故分析,我們將以通俗易懂的簡訊形式分享給大家。

本次被黑的兩個模塊分別是 xToken 中的 xBNTa 合約和 xSNXa 合約。兩個合約分別遭受了“假幣”攻擊和預言機操控攻擊。

一)xBNTa 合約攻擊分析

1. xBNTa 合約存在一個 mint 函數,允許用戶使用 ETH 兌換 BNT,使用的是 Bancor Netowrk 進行兌換,并根據 Bancor Network 返回的兌換數量進行鑄幣。

2. 在 mint 函數中存在一個 path 變量,用于在 Bancor Network 中進行 ETH 到 BNT 的兌換,但是 path 這個值是用戶傳入并可以操控的

3. 攻擊者傳入一個偽造的 path,使 xBNTa 合約使用攻擊者傳入的 path 來進行代幣兌換,達到使用其他交易對來進行鑄幣的目的。繞過了合約本身必須使用 ETH/BNT 交易對進行兌換的限制,進而達到任意鑄幣的目的。

二)xSNXa 合約攻擊分析

1. xSNXa 合約存在一個 mint 函數,允許用戶使用 ETH 兌換 xSNX,使用的是 Kyber Network 的聚合器進行兌換。

2. 攻擊者可以通過閃電貸 Uniswap 中 ETH/SNX 交易對的價格進行操控,擾亂 SNX/ETH 交易對的報價,進而擾亂 Kyber Network 的報價。從而影響 xSNXa 合約的價格獲取

3. 攻擊者使用操控后的價格進行鑄幣,從而達到攻擊目的。

總結:本次 xToken 項目被攻擊充分展現了 DeFi 世界的復雜性,其中針對 xSNXa 的攻擊更是閃電貸操控價格的慣用手法。慢霧安全團隊建議 DeFi 項目開發團隊在進行 DeFi 項目開發的時候要做好參數校驗,同時在獲取價格的地方需要防止預言機操控攻擊,可使用 Uniswap 和 ChainLink 的預言機進行價格獲取,并經過專業的安全團隊進行審計, 保護財產安全。詳情見官網。[2021/5/13 21:57:48]

漏洞分析

CirclesUBI:請用戶警惕Uniswap上的Circles假幣:CirclesUBI發推表示,Circles并沒有上線Uniswap,請用戶不要在上面買名為“Circles”的代幣。CirclesUBI系統本身沒有單一的Circles代幣,Circles并不是通用的可互換代幣,注:在Circles注冊的用戶都會有他們自己版本的Circles代幣,因此,CirclesUBI系統中的代幣本身的設計決定其不會是投機性資產。[2020/10/19]

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

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

孫宇晨就Justswap上線致幣圈的公開信:關于解決假幣問題:據最新消息顯示,波場TRON創始人兼BitTorrent CEO孫宇晨發布了Justswap上線致幣圈的公開信,孫宇晨表示:“解決假幣問題。Justswap團隊將重拳出擊整改假幣問題,我們將會把下拉列表欄的代幣全部審查一遍,確保列表中的代幣為真幣,與此同時,官方開啟假幣審核,推出假幣舉報通道(report@justswap.org),一經審核發現為假幣的,將做下架處理。”[2020/8/19]

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

動態 | 歐洲刑警組織緝拿假幣團隊 涉及價值144萬美元比特幣獲利:據Cointelegraph 9月10日消息,歐洲刑警組織查獲一批假幣。犯罪團伙自2017年以來售出130萬歐元假鈔,在黑網上出售假鈔以換取比特幣(BTC),獲得比特幣總價值144萬美元。據稱,這些筆記是他們遇到過的最優質的偽造品,帶有水印和全息圖等特征。[2019/9/10]

在 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() 進行判斷,過濾了沒有進行賦值的假充值代幣。

總結

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

Tags:ETHCHAAINCIRGuarded EtherWrapped OrdichainsstbchainCircleSwap

火星幣
DeFi利率下行趨近傳統金融 用戶們還會來“存幣”嗎?_EFI:DEFI

DeFi 的借貸利率正呈現出明顯的下降趨勢,這就帶來了一個新的問題:如果 DeFi 的收益率進一步下降,與傳統金融(TradFi)趨同,將會發生些什么?LoanScan 數據顯示.

1900/1/1 0:00:00
從當前插槽拍賣情況來看 波卡未來會如何發展?_POL:MOO

波卡一周觀察,是我們針對波卡整個生態在上一周所發生的事情的一個梳理,同時也會以白話的形式分享一些我們對這些事件的觀察。本文旨在提供信息和觀點,不為任何項目作背書.

1900/1/1 0:00:00
晚間必讀5篇 | “十四五”期間 區塊鏈在這些省市有了明確發展方向_加密貨幣:比特幣

1.金色觀察 | “十四五”期間 區塊鏈在這些省市有了明確發展方向今年3月,《中華人民共和國國民經濟和社會發展第十四個五年規劃和2035年遠景目標綱要》(下稱《十四五規劃綱要》)由第十三屆全國人.

1900/1/1 0:00:00
新聞周刊|德國新《基金定位法》允許投資加密資產_加密貨幣:數字人

金色周刊是金色財經推出的一檔每周區塊鏈行業總結欄目,內容涵蓋一周重點新聞、礦業信息、項目動態、技術進展等行業動態。本文是其中的新聞周刊,帶您一覽本周區塊鏈行業大事.

1900/1/1 0:00:00
影響力即財富 a16z的崛起給予我們的啟示_區塊鏈:比特幣sv是什么幣

6月24日,隨著安德森·霍洛維茨(Andreessen Horowitz,又稱a16z)宣布推出規模超過22億美元的第三支加密資產投資基金Crypto Fund III.

1900/1/1 0:00:00
解構Web 3.0 價值互聯網時代能實現“我的數據我做主”嗎?_WEB:Energy Web Token

我們正處于Web 3.0爆發的前夜,新概念、新項目層出不窮。但是,任何新技術的大規模應用都不會一蹴而就.

1900/1/1 0:00:00
ads