據慢霧區消息,2021 年 6 月 29 日,去中心化跨鏈交易協議 THORChain 發推稱發現一個針對 THORChain 的惡意攻擊,THORChain 節點已作出反應并進行隔離和防御。慢霧安全團隊第一時間介入分析,經分析發現,這是一起針對跨鏈系統的“假充值”攻擊,結果分享如下:
什么是“假充值”?
當我們在談論“假充值”攻擊時,我們通常談的是攻擊者利用公鏈的某些特性,繞過交易所的充值入賬程序,進行虛假充值,并真實入賬。
隨著 RenVM、THORChain 等跨鏈服務的興起,跨鏈節點充當起了交易所的角色,通過掃描另一條公鏈的資產轉移情況,在本地公鏈上生成資產映射。THORChain 正是通過這種機制,將以太坊上的代幣轉移到其它公鏈。
孫宇晨就Justswap上線致幣圈的公開信:關于解決假幣問題:據最新消息顯示,波場TRON創始人兼BitTorrent CEO孫宇晨發布了Justswap上線致幣圈的公開信,孫宇晨表示:“解決假幣問題。Justswap團隊將重拳出擊整改假幣問題,我們將會把下拉列表欄的代幣全部審查一遍,確保列表中的代幣為真幣,與此同時,官方開啟假幣審核,推出假幣舉報通道(report@justswap.org),一經審核發現為假幣的,將做下架處理。”[2020/8/19]
漏洞分析
我們從業務邏輯入口去追蹤分析此漏洞的成因。
首先看到在處理跨鏈充值事件時,調用了 getAssetFromTokenAddress 方法去獲取代幣信息,并傳入了資產合約地址作為參數:
聲音 | 中央財經大學鄧健鵬:目前我國關于反假幣的相關規定難以適用于數字貨幣:金色財經報道,中央財經大學法學院教授鄧健鵬認為,目前,我國關于反假幣的相關規定難以適用于數字貨幣。由于對貨幣的定義僅停留在紙幣和硬幣層面,貨幣發行制度也僅針對紙幣和硬幣的特性而設計。根據中國人民銀行法和人民幣管理條例相關規定,首先,“偽造”“變造”的概念對數字貨幣不適用;其次,反假幣工作程序對數字貨幣不適用。[2019/12/4]
- bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go?
分析 | 慢霧發布TronBank “假幣攻擊”手法技術分析:TRC10 是 TRON 區塊鏈本身支持的技術代幣標準,沒有 TRON 虛擬機(TVM)。TRC10 提供了 2 個新參數:tokenValue、tokenId,msg.tokenvalue 表示當前 msg 調用中的標記值,默認值為 0。 msg.tokenid 表示當前 msg 調用中的標記 id,默認值為 0。tokenId 也是 Odyssey_v3.2 中的新功能。它可以在帳戶中名為 assetV2 的新地圖字段中找到。 使用 GetAccount(Account)獲取 tokenId 及其值。 TokenId 由系統從數字 1_000_001 開始設置。 創建新的 TRC10 代幣時,數字加 1 并設置此代幣的 ID。
TronBank 合約在 invest 函數內沒有判斷 msg.tokenid 導致任意的代幣(假幣)轉入,合約都以為是真幣 BTT。然后攻擊者再調用 withdraw 從合約中提取真幣 BTT。[2019/4/11]
在 getAssetFromTokenAddress 方法里,我們看到它調用了 getTokenMeta 去獲取代幣元數據,此時也傳入了資產合約地址作為參數,但在此處有一個定義引起我們的警覺,在初始化代幣時,默認賦予了代幣符號為 ETH,這就是漏洞的關鍵點之一:asset := common.ETHAsset,如果傳入合約地址對應的代幣符號為 ETH,那么此處關于 symbol 的驗證將被繞過。
日本1.9億假幣詐騙比特幣案,4人遭到起訴:據日經新聞報道,東京地方檢察廳調查了四名企業高層,包括Kentaro Yagihashi,因用假幣詐騙比特幣遭到欺詐指控。警察因欺詐行為共逮捕了12人,并對包括自營職業者在內的8人作出不起訴處理,對4人作出起訴處理。但地區檢察官沒有披露處理的原因。此前,據TBS報道,前后有12人因假幣詐騙比特幣被日本逮捕,涉案金額高達1.9億日元。[2018/5/2]
- 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() 進行判斷,過濾了沒有進行賦值的假充值代幣。
總結
幸運的是項目方及時發現了本次攻擊,未造成巨額財產損失,但作為跨鏈系統,未來可能聚集巨額的多鏈資金,安全性不容忽視,因此慢霧安全團隊建議在進行跨鏈系統設計時應充分考慮不同公鏈不同代幣的特性,充分進行“假充值”測試,做好狀態監控和預警,必要時可聯系專業安全公司進行安全審計。
“至暗時刻”,這是對當下加密礦業的真實寫照,從內蒙古開始,政策的靴子一只只落地,最終一則關于四川清理關停虛擬貨幣「挖礦」項目的通知,成為了不少礦業者的生死判書.
1900/1/1 0:00:00專注于加密貨幣的瑞士銀行Sygnum宣布,其已成為世界上第一家允許其客戶質押以太坊的銀行。據7月6日的博客文章稱,該公司的客戶現在可以通過Sygnum的機構銀行平臺質押ETH,獲得高達7%的年收.
1900/1/1 0:00:00移動支付網消息:6月28日,北京地鐵官方App億通行進行了更新,新增加了“億通行Pay?秒通卡”功能,據悉其作為一張“免充值”的手機NFC交通卡,可以實現鎖屏過閘的刷手機體驗.
1900/1/1 0:00:00注:原文來自bankless,作者是William M. Peaster。上個月,藝術家 Joshua Bagley 發布了由700件創作性作品組成的《Dreams》NFT系列,并作為 Art.
1900/1/1 0:00:00從去年6月開始,DeFi蓬勃發展已一年有余。在流動性挖礦的激勵下,DeFi在資金規模、用戶規模和產品規模方面都有了質的跨越.
1900/1/1 0:00:00據U.Today消息,Cathie Wood旗下的方舟基金(ARK Invest)已與瑞士加密交易所交易產品(ETP)發行商21Shares AG合作向美國證券交易委員會提交聯合申請.
1900/1/1 0:00:00