比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

簡析 SushiSwap 第二次被攻擊始末_SWAP

Author:

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

背景

2021年1月27日,據慢霧區情報,SushiSwap再次遭遇攻擊,此次問題為DIGG-WBTC交易對的手續費被攻擊者通過特殊的手段薅走。慢霧安全團隊在收到情報后立馬介入相關事件的分析工作,以下為攻擊相關細節。

SushiMaker是什么

SushiMaker是SushiSwap協議中的一個重要的組件,其用于收集SushiSwap每個交易對的手續費,并通過設置每個代幣的路由,將不同交易對的手續費最終轉換成sushi代幣,回饋給sushi代幣的持有者。這個過程就是發生在SushiMaker合約上。

說說恒定乘積

恒定乘積的公式很簡單,在不計算手續費的情況下,恒定乘積的公式為

慢霧:Harmony Horizon bridge遭攻擊簡析:據慢霧安全團隊消息,Harmony Horizon bridge 遭到黑客攻擊。經慢霧 MistTrack 分析,攻擊者(0x0d0...D00)獲利超 1 億美元,包括 11 種 ERC20 代幣、13,100 ETH、5,000 BNB 以及 640,000 BUSD,在以太坊鏈攻擊者將大部分代幣轉移到兩個新錢包地址,并將代幣兌換為 ETH,接著將 ETH 均轉回初始地址(0x0d0...D00),目前地址(0x0d0...D00)約 85,837 ETH 暫無轉移,同時,攻擊者在 BNB 鏈暫無資金轉移操作。慢霧 MistTrack 將持續監控被盜資金的轉移。[2022/6/24 1:28:30]

也就是說每次兌換,其實都是遵循這個公式,及交易前后K值不變,在兌換的過程中,由于要保持K值不變,公式的形式會是這個樣子

慢霧:Inverse Finance遭遇閃電貸攻擊簡析:據慢霧安全團隊鏈上情報,Inverse Finance遭遇閃電貸攻擊,損失53.2445WBTC和99,976.29USDT。慢霧安全團隊以簡訊的形式將攻擊原理分享如下:

1.攻擊者先從AAVE閃電貸借出27,000WBTC,然后存225WBTC到CurveUSDT-WETH-WBTC的池子獲得5,375.5個crv3crypto和4,906.7yvCurve-3Crypto,隨后攻擊者把獲得的2個憑證存入Inverse Finance獲得245,337.73個存款憑證anYvCrv3Crypto。

2.接下來攻擊者在CurveUSDT-WETH-WBTC的池子進行了一次swap,用26,775個WBTC兌換出了75,403,376.18USDT,由于anYvCrv3Crypto的存款憑證使用的價格計算合約除了采用Chainlink的喂價之外還會根據CurveUSDT-WETH-WBTC的池子的WBTC,WETH,USDT的實時余額變化進行計算所以在攻擊者進行swap之后anYvCrv3Crypto的價格被拉高從而導致攻擊者可以從合約中借出超額的10,133,949.1個DOLA。

3.借貸完DOLA之后攻擊者在把第二步獲取的75,403,376.18USDT再次swap成26,626.4個WBTC,攻擊者在把10,133,949.1DOLAswap成9,881,355個3crv,之后攻擊者通過移除3crv的流動性獲得10,099,976.2個USDT。

4.最后攻擊者把去除流動性的10,000,000個USDTswap成451.0個WBT,歸還閃電貸獲利離場。

針對該事件,慢霧給出以下防范建議:本次攻擊的原因主要在于使用了不安全的預言機來計算LP價格,慢霧安全團隊建議可以參考Alpha Finance關于獲取公平LP價格的方法。[2022/6/16 4:32:58]

其中X代表賣掉的代幣,Y代表要購買的代幣,那么每次能兌換到的代幣數量會是這個樣子(具體的推導過程就不演示了:D)

慢霧:BSC項目Value DeFi vSwap 模塊被黑簡析:據慢霧區情報,幣安智能鏈項目 Value DeFi 的 vSwap 模塊被黑,慢霧安全團隊第一時間介入分析,并將結果以簡訊的形式分享,供大家參考:

1. 攻擊者首先使用 0.05 枚 WBNB 通過 vSwap 合約兌換出 vBSWAP 代幣;

2. 攻擊者在兌換的同時也進行閃電貸操作,因此 vSwap 合約會將兌換的 vBSWAP 代幣與閃電貸借出的 WBNB 轉給攻擊者;

3. 而在完成整個兌換流程并更新池子中代幣數量前,會根據池子的 tokenWeight0 參數是否為 50 來選擇不同的算法來檢查池子中的代幣數量是否符合預期;

4. 由于 vSwap 合約的 tokenWeight0 參數設置為 70,因此將會采用第二種算法對池子中的代幣數量進行檢查;

5. 而漏洞的關鍵點就在于采用第二種算法進行檢查時,可以通過特殊構造的數據來使檢查通過;

6. 第二種算法是通過調用 formula 合約的 ensureConstantValue 函數并傳入池子中緩存的代幣數量與實時的代幣數量進行檢查的;

7. 在通過對此算法進行具體分析調試后我們可以發現,在使用 WBNB 兌換最小單位(即 0.000000000000000001) vBSWAP 時,池子中緩存的 WBNB 值與實時的值之間允許有一個巨大的波動范圍,在此范圍內此算法檢查都將通過;

8. 因此攻擊者可以轉入 WBNB 進行最小單位的 vBSWAP 代幣兌換的同時,將池子中的大量 WBNB 代幣通過閃電貸的方式借出,由于算法問題,在不歸還閃電貸的情況下仍可以通過 vSwap 的檢查;

9. 攻擊者只需要在所有的 vSwap 池子中,不斷的重復此過程,即可將池子中的流動性盜走完成獲利。詳情見原文鏈接。[2021/5/8 21:37:37]

從公式上可以看到,當輸出代幣Y的兌換數量上限取決于Y代幣的數量,而和X代幣數量的大小無關,反過來說,如果要賣掉的X代幣數量很大,但是Y代幣的數量很小,那么就會造成大量的X代幣只能兌換出少量的Y代幣,而這個兌換價格相比正常的交易價格會偏離很多,這就是所謂的滑點,是本次攻擊中的關鍵。

Harvest.Finance被黑事件簡析:10月26號,據慢霧區消息 Harvest Finance 項目遭受閃電貸攻擊,損失超過 400 萬美元。以下為慢霧安全團隊對此事件的簡要分析。

1. 攻擊者通過 Tornado.cash 轉入 20ETH 作為后續攻擊手續費;

2. 攻擊者通過 UniswapV2 閃電貸借出巨額 USDC 與 USDT;

3. 攻擊者先通過 Curve 的 exchange_underlying 函數將 USDT 換成 USDC,此時 Curve yUSDC 池中的 investedUnderlyingBalance 將相對應的變小;

4. 隨后攻擊者通過 Harvest 的 deposit 將巨額 USDC 充值進 Vault 中,充值的同時 Harvest 的 Vault 將鑄出 fUSDC,而鑄出的數量計算方式如下:

amount.mul(totalSupply()).div(underlyingBalanceWithInvestment());

計算方式中的 underlyingBalanceWithInvestment 一部分取的是 Curve 中的 investedUnderlyingBalance 值,由于 Curve 中 investedUnderlyingBalance 的變化將導致 Vault 鑄出更多的 fUSDC;

5. 之后再通過 Curve 把 USDC 換成 USDT 將失衡的價格拉回正常;

6. 最后只需要把 fUSDC 歸還給 Vault 即可獲得比充值時更多的 USDC;

7. 隨后攻擊者開始重復此過程持續獲利;

其他攻擊流程與上訴分析過程類似。參考交易哈希:0x35f8d2f572fceaac9288e5d462117850ef2694786992a8c3f6d02612277b0877。

此次攻擊主要是 Harvest Finance 的 fToken(fUSDC、fUSDT...) 在鑄幣時采用的是 Curve y池中的報價(即使用 Curve 作為喂價來源),導致攻擊者可以通過巨額兌換操控預言機的價格來控制 Harvest Finance 中 fToken 的鑄幣數量,從而使攻擊者有利可圖。[2020/10/26]

攻擊流程

2020年11月30日,SushiSwap就曾因為SushiMaker的問題出現過一次攻擊(詳解參閱:以小博大,簡析SushiSwap攻擊事件始末),本次攻擊和第一次攻擊相似,但流程上有區別。相較于舊合約,在新的合約中,手續費在兌換的過程中會通過bridgeFor函數為不同交易對中的代幣尋找特定的兌換路由,然后進行兌換。

其中,bridgeFor函數的邏輯如下:

根據bridgeFor的邏輯,我們不難發現,如果沒有手動設置過特定幣種的bridge,那么默認的bridge是WETH,也就是說,在未設置bridge的情況下,默認是將手續費兌換成WETH。而DIGG這個幣,就是正好沒有通過setBridge設置對應的bridge的。

但是這里還有一個問題,就是在swap的過程中,如果這個交易對不存在,兌換的過程是失敗的。本次攻擊中,DIGG-WETH這個交易對一開始并不存在,所以攻擊者預先創建一個DIGG-WETH的交易對,然后添加少量的流動性。這個時候如果發生手續費兌換,根據前面說的恒定乘積的特性,由于DIGG-WETH的流動性很少,也就是DIGG-WETH中的WETH上限很小,而SushiMaker中的要轉換的手續費數量相對較大,這樣的兌換會導致巨大的滑點。兌換的過程會拉高DIGG-WETH交易對中WETH兌DIGG的價格,并且,DIGG-WETH的所有DIGG手續費收益都到了DIGG-WETH交易中。通過觀察DIGG-WETH交易對的流動性情況,流動性最大的時候也才只有不到2800美元的流動性,這個結果也能和公式的推導相互驗證。

攻擊者在SushiMaker完成手續費轉換后,由于DIGG-WETH交易對中WETH兌DIGG的價格已經被拉高,導致少量的WETH即可兌換大量的DIGG,而這個DIGG的數量,正是DIGG-WBTC交易對的大部分手續費收入。

總結

本次攻擊和SushiSwap第一次攻擊類似,都是通過操控交易對的兌換價格來產生獲利。但是過程是不一樣的。第一次攻擊是因為攻擊者使用LP代幣本身和其他代幣創建了一個新的交易對,并通過操縱初始流動性操控了這個新的交易對的價格來進行獲利,而這次的攻擊則利用了DIGG本身沒有對WETH交易對,而攻擊者創建了這個交易對并操控了初始的交易價格,導致手續費兌換過程中產生了巨大的滑點,攻擊者只需使用少量的DIGG和WETH提供初始流動性即可獲取巨額利潤。

相關參考鏈接如下:

SushiMaker歸集手續費交易:

https://etherscan.io/tx/0x90fb0c9976361f537330a5617a404045ffb3fef5972cf67b531386014eeae7a9

攻擊者套利交易:

https://etherscan.io/tx/0x0af5a6d2d8b49f68dcfd4599a0e767450e76e08a5aeba9b3d534a604d308e60b

DIGG-WETH流動性詳情:

https://www.sushiswap.fi/pair/0xf41e354eb138b328d56957b36b7f814826708724

Sushi第一次被攻擊詳解:

https://mp.weixin.qq.com/s/-Vp9bPSqxE0yw2hk_yogFw

Tags:ETHSWAPUSDWETBABYETHV2幣KokomoSwapusda幣什么價WeTrust

火幣APP下載
中幣(ZB)市場研究員:AAVE繼續上漲17.21%_CAT

1月26日,中國深圳ZF發布通知稱,隨著比特幣和以太坊價格近期上漲,虛擬貨幣犯罪有所增加,涉嫌非法集資、CX、網絡賭博等。這條基本面消息昨天對加密市場產生了一定程度的紅色影響.

1900/1/1 0:00:00
油管大V集體看漲 Polkadot波卡是2021年財富密碼?_POLK

寫在開始:本文不就Polkadot波卡的技術構想進行詳細說明,而是從Polkadot波卡的投資角度進行深入探討.

1900/1/1 0:00:00
波卡插槽拍賣在即 哪些生態項目值得關注?_WEB

近期,波卡平行鏈插槽拍賣的熱度越來越高,而隨著波卡測試網RococoV1開始接入平行鏈測試網,意味著備受期待的平行鏈插槽競拍也越來越近了.

1900/1/1 0:00:00
一群“烏合之眾” 如何用期權拉爆百億基金_GAMMA

在倫敦交易員眼中,主作是一位既能玩期權和數字貨幣、又能玩美食健身Vlogger的鮮肉男神上周國內娛樂界的瓜讓網民吃的有點難消化。剛緩過神來,這幾天中英文媒體給大家帶來一件金融界的大瓜.

1900/1/1 0:00:00
Hotbit 定于2021年1月28日上線 NDX(Indexed Finance)_BIT

尊敬的用戶: Hotbit即將在開啟NDX數字資產服務,并開放NDX理財產品。預計年化收益:10%;計息:T1.

1900/1/1 0:00:00
幣虎已恢復ALG充提幣業務_OIN

尊敬的用戶: ALG節點升級已完成,幣虎交易平臺已恢復ALG充提幣業務。邀您體驗! 幣虎團隊 2021年1月26日 去中心化投注平臺ZKasino已在BNB Chain和Polygon主網上線:.

1900/1/1 0:00:00
ads