背景
2021年1月27日,據慢霧區情報,SushiSwap再次遭遇攻擊,此次問題為DIGG-WBTC交易對的手續費被攻擊者通過特殊的手段薅走。慢霧安全團隊在收到情報后立馬介入相關事件的分析工作,以下為攻擊相關細節。
SushiMaker是什么
SushiMaker是SushiSwap協議中的一個重要的組件,其用于收集SushiSwap每個交易對的手續費,并通過設置每個代幣的路由,將不同交易對的手續費最終轉換成sushi代幣,回饋給sushi代幣的持有者。這個過程就是發生在SushiMaker合約上。
說說恒定乘積
恒定乘積的公式很簡單,在不計算手續費的情況下,恒定乘積的公式為
安全團隊:Rubic被攻擊事件簡析:金色財經報道,據區塊鏈安全審計公司Beosin旗下Beosin EagleEye安全風險監控、預警與阻斷平臺監測顯示,Rubic項目被攻擊,Beosin安全團隊分析發現RubicProxy合約的routerCallNative函數由于缺乏參數校驗,_params可以指定任意的參數,攻擊者可以使用特定的integrator來讓RubicProxy合約可以幾乎零成本的調用自己傳入的函數data。攻擊者通過調用routerCallNative函數,把所有授權給RubicProxy合約的USDC全部通過transferFrom轉入了0x001B地址,被盜資金近1100個以太坊,通過Beosin Trace追蹤發現被盜資金已經全部轉入了Tornado cash。[2022/12/25 22:06:32]
也就是說每次兌換,其實都是遵循這個公式,及交易前后K值不變,在兌換的過程中,由于要保持K值不變,公式的形式會是這個樣子
Beosin:SEAMAN合約遭受漏洞攻擊簡析:金色財經報道,根據區塊鏈安全審計公司Beosin旗下Beosin EagleEye 安全風險監控、預警與阻斷平臺監測顯示,2022年11月29日,SEAMAN合約遭受漏洞攻擊。Beosin分析發現是由于SEAMAN合約在每次transfer函數時,都會將SEAMAN代幣兌換為憑證代幣GVC,而SEAMAN代幣和GVC代幣分別處于兩個交易對,導致攻擊者可以利用該函數影響其中一個代幣的價格。
攻擊者首先通過50萬BUSD兌換為GVC代幣,接下來攻擊者調用SEAMAN合約的transfer函數并轉入最小單位的SEAMAN代幣,此時會觸發合約將能使用的SEAMAN代幣兌換為GVC,兌換過程是合約在BUSD-SEAMAN交易對中將SEAMAN代幣兌換為BUSD,接下來在BUSD-GVC交易對中將BUSD兌換為GVC,攻擊者通過多次調用transfer函數觸發_splitlpToken()函數,并且會將GVC分發給lpUser,會消耗BUSD-GVC交易對中GVC的數量,從而抬高了該交易對中GVC的價格。最后攻擊者通過之前兌換的GVC兌換了50.7萬的BUSD,獲利7781 BUSD。Beosin Trace追蹤發現被盜金額仍在攻擊者賬戶(0x49fac69c51a303b4597d09c18bc5e7bf38ecf89c),將持續關注資金走向。[2022/11/29 21:10:04]
其中X代表賣掉的代幣,Y代表要購買的代幣,那么每次能兌換到的代幣數量會是這個樣子(具體的推導過程就不演示了:D)
安全團隊:Audius項目惡意提案攻擊簡析,攻擊者總共獲利約108W美元:7月24日消息,據成都鏈安“鏈必應-區塊鏈安全態勢感知平臺”安全輿情監控數據顯示,Audius項目遭受惡意提案攻擊。成都鏈安安全團隊簡析如下:攻擊者先部署惡意合約并在Audius: Community Treasury 合約中調用initialize將自己設置為治理合約的監護地址,隨后攻擊者調用ProposalSubmitted 提交惡意85號提案并被通過,該提案允許向攻擊合約轉賬1,856w個AudiusToken,隨后攻擊者將獲得的AudiusToken兌換為ETH,總共獲利約108W美元,目前獲利資金仍然存放于攻擊者地址上(0xa0c7BD318D69424603CBf91e9969870F21B8ab4c)。[2022/7/24 2:34:31]
從公式上可以看到,當輸出代幣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
什么是支撐位? 支撐位,顧名思義,在底部的才算做支撐。當市場上的價格達到某一水平位置時,似乎產生了一條對價格起到支撐作用,影響價格繼續下跌的抵抗線,我們稱之為支撐線.
1900/1/1 0:00:00未來的燃料公司PowerTapHydrogenFueling和AndrettiGroup之間的新合作關系可能會為全美的加油站帶來100臺新的加氫泵.
1900/1/1 0:00:00尊敬的虎符用戶, 因節點升級,虎符將于2021年01月25日16:00(UTC8)暫停TRX以及TRC20代幣充提業務。待升級完成后我們將第一時間恢復,具體時間請留意虎符的最新公告.
1900/1/1 0:00:00比特幣,白盤走勢還是延續了隔夜的回調,可見小時線收出徐緩下跌形,對多方的壓制很明顯,K線收線呈現出陰盛陽衰之勢,不過觀點上我還是那句話,在28850的支撐有效之前,都不建議過度看空.
1900/1/1 0:00:00尊敬的用戶: Hotbit即將在開啟TCO(Tcoin.fun)數字資產服務。 具體安排如下: 充值時間:2021年01月29日15:00(香港時間)交易時間:2021年01月29日15:00(.
1900/1/1 0:00:00鏈聞消息,波卡生態預言機和預測協議OptionRoom將于2月5日在Bounce.finance社區授權拍賣平臺「BounceCertified」上進行Bounce專業版首個波卡項目IDO.
1900/1/1 0:00:00