買比特幣 買比特幣
Ctrl+D 買比特幣
ads

TAL:百萬美金的火線排雷:深度解讀DeFi資產授權漏洞_pitbull幣潛力怎么樣

Author:

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

本文來自AmberGroup,作者吳家志。原文標題:《ExploitingPrimitiveFinanceApprovalFlaws》。

事件摘要:2月24日,一篇關于PrimitiveFinance?的漏洞分析報告在圈內引發關注,報告描述了三個白帽攻擊以及漏洞原理。一個多月后的4月14日,以AmberGroup區塊鏈安全專家吳家志博士為代表的團隊,發現了一個錢包地址有超過100萬美金的資產存在風險。在本地復現攻擊后,其團隊通過Immunefi聯系了Primitive項目方,并成功協助潛在的受害者重置了WETH授權,解除危機。這篇文章將介紹該團隊如何在模擬環境中利用此漏洞,以及如何通過區塊鏈數據分析找到潛在的受害者錢包地址。

原理:智能合約中的裂隙

在目前EVM及ERC-20的架構中,當用戶與智能合約交互時,智能合約本身缺少一個能從代碼層面捕捉到ERC-20轉賬事件的回調機制。例如當Alice給Bob發100個XYZ代幣時,Bob的XYZ余額會被更新在XYZ合約里。但是Bob如何知道他的XYZ變多了呢?他可以查Etherscan或者其錢包App自動從以太坊節點取得的最新余額。如果Alice將100XYZ發給一個智能合約Charlie,Charlie如何得知他的XYZ余額增加了呢?

事實上Charlie沒辦法在收到100XYZ的當下主動取得他最新的余額,原因是這個轉賬是在XYZ合約上發生的,不在Charlie合約。智能合約部署完成后就像操作系統一樣,是一堆代碼放在某個地方,需要被調用了才會發生作用。為了解決這個難題,在ERC-20標準有一個被廣泛使用的機制—approve()/transferFrom()。

Meta為VR程序員開出百萬美元年薪招聘技術人才:4月12日消息,據外媒報道,為了實現元宇宙愿景,Meta為開發VR游戲、VR應用和VR技術的程序員開出了60萬美元(當前約412.8萬元人民幣)至接近100萬美元(當前約688萬元人民幣)的年薪。

?Andiamo首席執行官帕特里克?麥克亞當斯 (Patrick McAdams) 表示,Facebook 母公司“支付的薪酬遠遠高于許多游戲公司”。(鞭牛士)[2023/4/12 13:57:51]

舉例來說,當Alice需要往Charlie存入100個XYZ代幣時,Alice可以事先授權Charlie使用她的100XYZ額度,此時Charlie的deposit()函數就可以在一個交易里通過transferFrom()主動將Alice錢包里的100XYZ取出,并且更新Charlie合約的狀態。為了減少摩擦,很多DApp甚至會讓用戶授權無限多的XYZ額度給項目方地址,這樣可以讓后續的transferFrom()調用直接成功,免除掉多次授權的點擊以及手續費,這等同于將Charlie加白。這個方案留下了一個隱患,萬一Charlie作惡或是被攻擊了,Alice的資產就會有危險。

這個發生于2020年6月18日的意外證實了一個被控制或存在問題的智能合約可以如何被利用并且造成資產損失,如下代碼所示,safeTransferFrom()雖然名為safe的transferFrom卻意外被宣告成公開函數,導致任何人都可以使用Bancor合約的身份轉移任意用戶任意數量的任意資產到任意的地址。

跨鏈NFT協議DNFT完成百萬美元天使輪融資:據官方消息,跨鏈NFT協議DNFT宣布完成百萬美元的天使輪融資,投資方包括LD Capital、Candaq Fintech Group、Waterdrip Capital、7 O’Clock Capital 、Zonff Partners 、Mantra DAO、Win Capital、CatcherVC、7 Star Capital、BlockFocus、、InnCube Crypto Capital、ChainUp Capital、Amplio Capital、Worshipper Capital、Nexus Capital、GD Capital、1PAR等數十家機構。

據悉,DNFT是基于波卡的去中心化跨鏈NFT基礎設施,旨在將數據資產跨平臺變現。DNFT已獲得Web3.0、Heco、BSC、Filecoin等官方Grant支持。[2021/6/10 23:28:35]

簡單舉例來說,如果Alice正好使用過Bancor并且授權Bancor無限額度使用她的DAI,則一旦她的錢包里DAI余額大于零時,黑客就可以立即把她的DAI轉走。

診斷:黑客是怎樣繞開“安檢”的?

根據上文的漏洞分析報告所述,這個外部函數有一個類似的漏洞,但無法像Bancor的漏洞一樣被直接利用。事實上,攻擊者需要偽造兩個ERC20代幣合約,一個Uniswap資金池,并且發起一筆Uniswap閃電貸繞過下圖標注的?msg.sender==address(this)?檢查。聽起來復雜,但對于有經驗的黑客來說,這并不是太困難。

YFX.COM完成數百萬美元融資,此前已獲得NGC、SNZ、DFG等機構的戰略投資:最新消息,跨鏈去中心化永續合約交易平臺YFX.COM宣布完成數百萬美元融資,參投機構包括OKEx Blockdream Ventures、PrimeBlock Ventures(MXC Labs)、Gate.io Labs、LD Capital、PetRock Capital、True Edge Capital、R8 Capital、ArkStream Capital、CryptoJ、7 O'Clock Capital、Phoenix VC、NewTribe Capital、Vega Ventures、499Block、Jackdaw Capital、紅鏈資本等海內外投資機構。\u2028YFX.COM 表示即將公布代幣YFX的IDO信息。

YFX.COM自2021年1月份以來,目前已經完成ETH(layer2)、BSC、Heco、Tron主網以及OKExChain測試網的上線,能提供高達100倍永續合約交易BTC、ETH等資產,多次通過CertiK 智能合約安全審計,實現了衍生品交易的去中心化部署。[2021/4/26 21:00:09]

Primitive為何需要實現?flashMintShortOptionsThenSwap()?這樣一個接口呢?其實是有特定使用場景的,在?openFlashLong()函數可以看到,flashMintShortOptionsThenSwap()?會被封裝在一個Uniswap的flash-swap調用參數里,在第1371行觸發flash-swap之后,由回調函數?UniswapV2Call()?調起。此時由于?UniswapV2Call()?在Primitive合約里,便可以通過上述?msg.sender==address(this)?檢查。

動態 | 加密勒索軟件Sodinokibi已獲利數百萬美元,且或與GandCrab存在聯系:安全研究人員追蹤了勒索軟件Sodinokibi受害者的比特幣支付情況,得出結論稱,犯罪份子已通過該勒索軟件獲利了數百萬美元。據悉,Sodinokibi也被稱為REvil,其最早出現在4月份,也就是在另一個被廣泛使用的勒索軟件GandCrab關閉后不久。雖然Sodinokibi不一定是GandCrab的直接延續,但研究人員發現兩者之間有代碼和其他相似之處,這表明它們之間可能存在聯系。[2019/10/14]

值得注意的是,在?openFlashLong()函數里,第1360行寫的是?msg.sender,表示在正常的情況下,Primitive只能使用調用者本身的資金,然而攻擊者可以通過偽造的pair以及params用類似于1371行的方式直接調用Primitive合約的UniswapV2Call()并繞過?flashMintShortOptionsThenSwap()?的檢查。由于params在這情況下可以完全被控制,1360行的msg.sender便可以被替換成任意曾經授權Primitive的錢包地址,然后通過?flashMintShortOptionsThenSwap()?里的?transferFrom()?調用盜取資產。

追蹤:找出可能的受害者

動態 | XRP基金的價值數百萬美元轉移到未知錢包:據coingape消息,周四,一個已知的Twitter帳戶@whale_alert報告稱,15,000,000 XRP價值5492146美元從Bitstamp轉移到一個未知的錢包。發送和接收錢包仍然未知,經調查發現,事實上,這并不是第一次,即2018年12月26日,Whale Alert報道了將90,000,000 XRP從未知錢包轉移到未知錢包。這些密碼的遷移價值為33,493,911美元。它不僅僅是XRP,而且在其他加密貨幣中也發現了一些更加模糊的轉移。它包括從Poloniex到未知賬戶的30,000 ETH,最終計算為3,753,509美元。1690 BTC,價值6,394,654美元和13,156,924 XRP從Bitstamp到未知錢包以及來自頂級加密貨幣交易平臺的許多其他加密基金,包括Binance,Bitfinex和Bithumb。[2018/12/28]

如果一個黑客碰巧知道某位“大戶”曾授權有問題的合約,他可以輕易利用這個漏洞盜取受害人大量的資金。然而,這件事情如果僅使用區塊瀏覽器是很難做到的,尤其在合約已經部署了較長時間,并有大量用戶量的情況下。其中需要分析的數據并非是靠人工搜索Etherscan能夠實現的。

GoogleCloudPublicDatasets在此時可發揮作用。由于每一個成功的approve()調用都會在以太坊上發出一個Approval()事件,我們可以通過BigQuery服務找出所有事件并且通過一些方法過濾出我們感興趣的部分,例如_spender是Primitive合約的所有事件。

下面是我們在GCP上實際用來找出潛在受害者使用的SQL語句,其中第五行可以看到我們限定搜索的以太坊數據庫及記錄事件的表,第七行過濾出Approval()事件,第八行過濾了特定的_spender。此外,第六行將區塊高度范圍設定在Pirmitive合約部署之后,這可以大幅降低BigQuery掃過的數據量,這類的SQL優化會直接反應在你的GCP賬單里。

接下來,我們可以進一步優化SQL查詢將已經通過approve(_spender,0)重置授權的賬號從清單中刨除,得到最終的賬號列表。有了最終的列表,我們利用一個腳本監控著這些賬號,并且在這些危險賬號收到大量資產時發出預警,因為這很可能會造成嚴重的損失。

在一個星期三的清晨,機器人發出了預警,有一個可能的受害人在北京時間4月13日清晨5點24分收到了將近500WETH的資產,價值超過一百萬美金。相較于已公開的三次白帽攻擊,這個受害人如果被成功攻擊,所損失的金額將高于稍早的三個案例的總和。

我們在北京時間9:32緊急聯系了Primitive項目的漏洞賞金計劃運營方Immunefi并且向他們展示我們如何利用這個漏洞在模擬環境中盜取受害人的500WETH,并且提供包括下面的截屏等證據。

在Primitive團隊的幫助下,潛在的受害人于10:03將WETH授權重置,解除危機。

兩天后,Primitive團隊也針對此發現給予漏洞獎勵并發布公開致謝。該筆賞金發稿前已捐助給CryptoRelief。

復現:分布拆解漏洞的利用

漏洞利用的第一步,我們需要準備兩個ERC20合約:Redeem及Option。

其中Redeem合約是一個標準的ERC20,我們只需要基于OpenZeppelin的實現將mint()接口暴露出來,方便我們控制代幣數量,如下所示:

Option合約會相對復雜一點,從下面的代碼片段可以看到,我們需要刻意構造一些全局變量,以及公開函數,這些都是在Primitive的業務邏輯會用到的。此外,我們還需要傳入三個參數來初始化Option合約:

·???????redeemToken:稍早構造的Redeem合約地址

·???????underlyingToken:攻擊目標賬號所持有的資產合約地址

·???????beneficiary:受益人地址,也就是攻擊成功后將受害人資產轉移的目標地址

這里需要特別說明的是mintOptions()這個函數,從上面的代碼可以看到,它會直接把所有的underlyingToken發給beneficiary地址。這是因為下面的內部函數mintOptionWithUnderlyingBalance()函數在被?flashMintShortOptionsThenSwap()時會將underlyingToken發給Option代幣合約,并且通過mintOptions()調用鑄造Option代幣。因此,我們在偽造的Option合約里,可以直接把mintOptions()當作一個提幣調用,將underlyingToken發給beneficiary,用于之后歸還閃電貸的資金。

接下來,我們可以用剛剛創建的Redeem及Option代幣創建一個Uniswap的流動性池子,這個池子的地址將用來接收從受害人錢包轉出的資金。事實上,每個Uniswap池子里有等價的兩種資產,例如WETH及Redeem,為了完成漏洞利用,我們必須為池子注入流通性。Redeem是我們自己創建的,可以鑄造無限量的代幣,但WETH呢?

在閃電貸的幫助下,我們基本上可以利用無限數量的資金來做如何事情,只要確保能在一個交易中歸還資金即可。在這個案例中,我們使用AaveV2的閃電貸借了相當于受害人總資產99.7%的資金存入上述的流動性池。

根據Aave的設計,需要實現一個回調函數executeOperation()執行獲得貸款資金后的操作,并且在最后通過approve()調用授權Aave合約取走閃電貸的資產以及手續費。

總結

在基于EVM的智能合約世界里,approve()/transferFrom()是長久以來存在的固有問題。對于DeFi用戶而言,需要多留意你的錢包地址是否正允許著其他人使用你的資產,并且定期重置資產使用權。對于項目方而言,需要在上線之前花更多心思和時間從各種可能的角度測試,甚至攻擊你的代碼,因為你正在編程的,是每位用戶的真金白銀。

關于作者

吳家志受聘于全球領先的加密金融智能服務提供商AmberGroup,作為區塊鏈安全專家。他畢業于美國北卡州立大學計算機專業,獲得博士學位,師從安卓安全領域領軍者蔣旭憲教授,在美國讀書期間一直從事系統安全研究,主要方向為虛擬化安全、安卓系統安全。吳家志博士在全球安卓安全領域有很大的影響,發表過多篇科技論文,在安卓系統漏洞安全方面經驗豐富。他于2017年開始轉戰至區塊鏈安全領域,曾擔任全球第一家去中心化匿名眾測平臺DVP負責人,號召全網白帽黑客一起尋找開源底層代碼中的漏洞。

Tags:PITITATALAPIpitbull幣潛力怎么樣SafuTitanoPitquidity Capitalapi3幣值得投資嗎

芝麻開門交易所
UNB:跨鏈DeFi穩定幣發行商Unbound Finance完成580萬美元戰略投資_UND

鏈捕手消息,跨鏈DeFi穩定幣發行商UnboundFinance完成580萬美元融資。本輪融資由由PanteraCapital、ArringtonXRPCapital、CMSHoldings、L.

1900/1/1 0:00:00
Parsiq:PARSIQ宣布獲Solana、Axia8 Ventures、Mindworks等機構300萬美元A輪融資_STARPARK

鏈捕手消息,區塊鏈監控和工作流程自動化平臺PARSIQ宣布獲得300萬美元A輪融資,本輪融資獲SolanaFoundation及Axia8Ventures支持.

1900/1/1 0:00:00
Synthetix:神魚對話 Kain|DeFi 資深科學家遇上 DeFi 龍頭掌門人_HETH幣

4月15日,Synthetix中國首秀,其創始人兼CEOKainWarwick在火星財經App視頻對話Cobo聯合創始人兼CEO神魚.

1900/1/1 0:00:00
UNI:Curve V2方案解析:通用與定制化AMM之爭_LSWAP

本文來源于區塊律動,作者:律動研究院。CurveV2版本的發布極其低調,既沒有制作精美的介紹頁面,也沒有講解原理的視頻,甚至都沒有進行像樣的宣傳.

1900/1/1 0:00:00
LID:幣安 NFT 平臺公布其第二批創作者,包括傳奇球星古蒂、音樂家Lil Yachty、Kyle等_BLID價格

鏈捕手消息,據幣安官方公告,幣安公布其NFT平臺第二批創作者,分別是:音樂家LilYachty和Kyle,傳奇球星JoséMaríaGutiérrezHernández.

1900/1/1 0:00:00
CHE:一文讀懂定制化金融產品開放平臺Arche Network_RCH

使命和愿景 ArcheNetwork是Arche團隊開發的鏈上定制化金融合同開放平臺。我們旨在開拓鏈上的定制化的非標準交易市場,讓區塊鏈的使用者無需懂得代碼就可以根據需要去定制自己的鏈上金融合約.

1900/1/1 0:00:00
ads