以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

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

Author:

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

背景

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

SushiMaker是什么

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

說說恒定乘積

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

安全團隊:LPC項目遭受閃電貸攻擊簡析,攻擊者共獲利約45,715美元:7月25日,據成都鏈安“鏈必應-區塊鏈安全態勢感知平臺”安全輿情監控數據顯示,LPC項目遭受閃電貸攻擊。成都鏈安安全團隊簡析如下:攻擊者先利用閃電貸從Pancake借入1,353,900個LPC,隨后攻擊者調用LPC合約中的transfer函數向自己轉賬,由于 _transfer函數中未更新賬本余額,而是直接在原接收者余額recipientBalance值上進行修改,導致攻擊者余額增加。隨后攻擊者歸還閃電貸并將獲得的LPC兌換為BUSD,最后兌換為BNB獲利離場。本次攻擊項目方損失845,631,823個 LPC,攻擊者共獲利178 BNB,價值約45,715美元,目前獲利資金仍然存放于攻擊者地址上(0xd9936EA91a461aA4B727a7e3661bcD6cD257481c),成都鏈安“鏈必追”平臺將對此地址進行監控和追蹤。[2022/7/25 2:36:51]

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

安全團隊:Audius項目惡意提案攻擊簡析,攻擊者總共獲利約108W美元:7月24日消息,據成都鏈安“鏈必應-區塊鏈安全態勢感知平臺”安全輿情監控數據顯示,Audius項目遭受惡意提案攻擊。成都鏈安安全團隊簡析如下:攻擊者先部署惡意合約并在Audius: Community Treasury 合約中調用initialize將自己設置為治理合約的監護地址,隨后攻擊者調用ProposalSubmitted 提交惡意85號提案并被通過,該提案允許向攻擊合約轉賬1,856w個AudiusToken,隨后攻擊者將獲得的AudiusToken兌換為ETH,總共獲利約108W美元,目前獲利資金仍然存放于攻擊者地址上(0xa0c7BD318D69424603CBf91e9969870F21B8ab4c)。[2022/7/24 2:34:31]

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

Grim Finance 被黑簡析:攻擊者通過閃電貸借出 WFTM 與 BTC 代幣:據慢霧區情報,2021 年 12 月 19 日,Fantom 鏈上 Grim Finance 項目遭受攻擊。慢霧安全團隊進行分析后以簡訊的形式分享給大家。

1. 攻擊者通過閃電貸借出 WFTM 與 BTC 代幣,并在 SpiritSwap 中添加流動性獲得 SPIRIT-LP 流動性憑證。

2. 隨后攻擊者通過 Grim Finance 的 GrimBoostVault 合約中的 depositFor 函數進行流動性抵押操作,而 depositFor 允許用戶指定轉入的 token 并通過 safeTransferFrom 將用戶指定的代幣轉入 GrimBoostVault 中,depositFor 會根據用戶轉賬前后本合約與策略池預期接收代幣(預期接收 want 代幣,本次攻擊中應為 SPIRIT-LP)的差值為用戶鑄造抵押憑證。

3. 但由于 depositFor 函數并未檢查用戶指定轉入的 token 的合法性,攻擊者在調用 depositFor 函數時傳入了由攻擊者惡意創建的代幣合約地址。當 GrimBoostVault 通過 safeTransferFrom 函數調用惡意合約的 transferFrom 函數時,惡意合約再次重入調用了 depositFor 函數。攻擊者進行了多次重入并在最后一次轉入真正的 SPIRIT-LP 流動性憑證進行抵押,此操作確保了在重入前后 GrimBoostVault 預期接收代幣的差值存在。隨后 depositFor 函數根據此差值計算并為攻擊者鑄造對應的抵押憑證。

4. 由于攻擊者對 GrimBoostVault 合約重入了多次,因此 GrimBoostVault 合約為攻擊者鑄造了遠多于預期的抵押憑證。攻擊者使用此憑證在 GrimBoostVault 合約中取出了遠多于之前抵押的 SPIRIT-LP 流動性憑證。隨后攻擊者使用此 SPIRIT-LP 流動性憑證移除流動性獲得 WFTM 與 BTC 代幣并歸還閃電貸完成獲利。

此次攻擊是由于 GrimBoostVault 合約的 depositFor 函數未對用戶傳入的 token 的合法性進行檢查且無防重入鎖,導致惡意用戶可以傳入惡意代幣地址對 depositFor 進行重入獲得遠多于預期的抵押憑證。慢霧安全團隊建議:對于用戶傳入的參數應檢查其是否符合預期,對于函數中的外部調用應控制好外部調用帶來的重入攻擊等風險。[2021/12/19 7:49:04]

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

慢霧:Spartan Protocol被黑簡析:據慢霧區情報,幣安智能鏈項目 Spartan Protocol 被黑,損失金額約 3000 萬美元,慢霧安全團隊第一時間介入分析,并以簡訊的形式分享給大家參考:

1. 攻擊者通過閃電貸先從 PancakeSwap 中借出 WBNB;

2. 在 WBNB-SPT1 的池子中,先使用借來的一部分 WBNB 不斷的通過 swap 兌換成 SPT1,導致兌換池中產生巨大滑點;

3. 攻擊者將持有的 WBNB 與 SPT1 向 WBNB-SPT1 池子添加流動性獲得 LP 憑證,但是在添加流動性的時候存在一個滑點修正機制,在添加流動性時將對池的滑點進行修正,但沒有限制最高可修正的滑點大小,此時添加流動性,由于滑點修正機制,獲得的 LP 數量并不是一個正常的值;

4. 隨后繼續進行 swap 操作將 WBNB 兌換成 SPT1,此時池子中的 WBNB 增多 SPT1 減少;

5. swap 之后攻擊者將持有的 WBNB 和 SPT1 都轉移給 WBNB-SPT1 池子,然后進行移除流動性操作;

6. 在移除流動性時會通過池子中實時的代幣數量來計算用戶的 LP 可獲得多少對應的代幣,由于步驟 5,此時會獲得比添加流動性時更多的代幣;

7. 在移除流動性之后會更新池子中的 baseAmount 與 tokenAmount,由于移除流動性時沒有和添加流動性一樣存在滑點修正機制,移除流動性后兩種代幣的數量和合約記錄的代幣數量會存在一定的差值;

8. 因此在與實際有差值的情況下還能再次添加流動性獲得 LP,此后攻擊者只要再次移除流動性就能再次獲得對應的兩種代幣;

9. 之后攻擊者只需再將 SPT1 代幣兌換成 WBNB,最后即可獲得更多的 WBNB。詳情見原文鏈接。[2021/5/2 21:17:59]

攻擊流程

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:ETHIGGDIGGDIGETHYPIGGY價格DOGEDIGGERParadigm Zero

以太坊最新價格
深圳市金融監管局發布防范“虛擬貨幣”非法活動風險提示_數字人

1月26日,深圳市地方金融監管局關于進一步防范“虛擬貨幣”非法活動的風險提示。近期,隨著比特幣、以太坊等虛擬貨幣價格不斷攀升,虛擬貨幣炒作有所抬頭.

1900/1/1 0:00:00
Gate.io 第二屆杠桿ETF交易每日賽,日進斗金贏50,000美元活動(僅剩1天)_GATE

Gate.io第二屆杠桿ETF交易每日賽,總獎池50,000美元,每日獲獎名額200名,按24h交易量進行排名,連續7日決出1400位贏家,豐厚獎勵等你贏取,參與即有機會獲得!目前活動僅剩一天.

1900/1/1 0:00:00
監管提案重新提上日程,將成為未來加密貨幣最大的隱患丨幣鑫_加密貨幣

昨日比特幣行情反轉下行,價格不斷向下接連打破重重支撐,有將前期漲幅吞沒的跡象,在價格逼近30800低位情況才逐漸好轉.

1900/1/1 0:00:00
Bitcoinwin:回看2020,展望2021_BIT

一眨眼,2020年就要結束了,也成為加密資產最輝煌的年份之一。2020年帶給了我們太多的挑戰和驚喜。新冠病肆虐全球,導致世界各國經濟不景氣,傳統市場遭受嚴重打擊.

1900/1/1 0:00:00
2020年度DeFi行業分析報告發布:從瘋狂到理性_DEF

原文標題:《2020年度DeFi行業分析報告發布》2020年,全球疫情的爆發,導致各國經濟受到前所未有的重創。在此情形下,DeFi異軍突起,引爆市場,一躍成了區塊鏈行業2020年的年度熱點.

1900/1/1 0:00:00
關于支持PIVX(PIVX)網絡升級和硬分叉的公告_EOS

親愛的用戶:幣安將于2021年01月30日上午08:00暫停PIVX的充值、提現業務,以支持PIVX于PIVX主網區塊高度2,700,500的硬分叉及網絡升級.

1900/1/1 0:00:00
ads