最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

當(dāng)前位置:主頁 > 區(qū)塊鏈 > 區(qū)塊鏈技術(shù) > Sonne Finance全過程解析

$100如何撬動$650萬?Sonne Finance攻擊分析

2024-05-18 11:18:30 | 來源: | 作者:佚名
Sonne Finance 攻擊分析!202 年5月15日,Sonne Finance 在Optimism鏈上遭受攻擊,損失高達(dá)2千萬美元,攻擊發(fā)生后,X上@tonyke bot用戶發(fā)推表示,其用約100美元保護(hù)了 Sonne Finance的代幣抵押池(也稱market,類似于Compound中的cToken)中剩余的約 650 萬美元

Sonne Finance 攻擊分析:$100 如何撬動 $650 萬?本次攻擊事件的本質(zhì)是 market (soToken) 被創(chuàng)建出來時,攻擊者進(jìn)行了第一筆抵押鑄造的操作,以少量 underlying token 鑄造了很少的 soToken,導(dǎo)致 soToken 的「 totalSupply 」數(shù)值太小。攻擊者繼而利用了 Solidity 合約精度損失這個漏洞,再搭配直接往 soToken 合約發(fā)送 underlying token(不會鑄造 soToken,也就意味著「 totalSupply 」不變,「 totalCash 」變大),而不是抵押 + 鑄造的方式存入 underlying token。這樣的操作使得合約中「 totalCash 」 變量變大,但是「 totalSupply 」 保持不變,從而導(dǎo)致 exchangeRate 變大。最終攻擊者在贖回 underlying token 時,需要銷毀的 soToken 少于抵押時鑄造的 soToken,攻擊者利用賺取的 soToken 去其他的 soToken(比如 soWETH、soUSDC)中借出 underlying token WETH、USDC,最終獲利高達(dá) 2000 萬美元。

2024 年 5 月 15 日,Sonne Finance 在 Optimism 鏈上遭受攻擊,損失高達(dá) 2 千萬美元。攻擊發(fā)生后,X 上 @tonyke_bot 用戶發(fā)推表示,其用約 100 美元保護(hù)了 Sonne Finance 的代幣抵押池(也稱為 market,類似于 Compound 中的 cToken)中剩余的約 650 萬美元。

(https://twitter.com/tonyke_bot/status/1790547461611860182)

Sonne Finance 項目方發(fā)現(xiàn)攻擊之后,迅速暫停了 Optimism上的所有 markets,并表示 Base 上的 markets 是安全的。

(https://twitter.com/SonneFinance/status/1790535383005966554)

攻擊簡述

Sonne Finance 是 Optimism 上的一個 fork 了 Compound V2 的去中心化借貸協(xié)議,供個人、機構(gòu)和協(xié)議訪問金融服務(wù)。Sonne Finance 協(xié)議將用戶的 token 資產(chǎn)聚合起來,形成了借貸流動性池,為用戶提供了一個類似銀行的借貸業(yè)務(wù)。與 Compound 一樣,協(xié)議參與者們可以將其持有的 token 抵押到 Sonne Finance 的借貸流動性池中,同時獲得憑證 soToken(與 cToken 一樣)。而 soToken 是一種生息資產(chǎn)憑證,隨著區(qū)塊的推進(jìn)會產(chǎn)生一定的收益,同時還會獲得 SONNE token 激勵。而參與者憑借著手里的 soToken 還能從 Sonne 借貸資產(chǎn)池中借出其他 token,例如參與者可以抵押一定數(shù)量的 USDC 獲得 soUSDC 憑證,隨后借貸出WETH用于經(jīng)一步的流通。Sonne Finance 協(xié)議中的抵押借貸可以是多對多的資產(chǎn)關(guān)系,在抵押借貸的過程中,協(xié)議會自動計算參與者地址的健康度(Health Factor),當(dāng)健康度低于 1 時,該地址的抵押品將支持被清算,而清算者也能獲得一定的清算獎勵。

用戶存入的 underlying token 與鑄造的 soToken 的數(shù)量關(guān)系,主要與一個叫做 exchangeRate 的變量有關(guān),這個變量粗略可以用來表示每個 soToken 價值多少 underlying token。exchangeRate 的計算公式如下:

在上述公式中,totalCash 是指 soToken 持有的 underlying token 的數(shù)量,totalBorrows 是指某 market 中被借出去的 underlying token 的數(shù)量,totalReserves 是指總儲備金數(shù)量(其中包含借款人支付的利息),totalSupply 是指鑄造的 soToken 的數(shù)量。

在贖回時,用戶可以指定想要贖回的 underlying token 的數(shù)量redeemAmount,來計算需要銷毀掉的soToken的數(shù)量redeemTokens,計算方式大概為「 redeemTokens = redeemAmount / exchangeRat 」,注意這里并沒有對精度損失做處理。

本次攻擊事件的本質(zhì)是 market (soToken) 被創(chuàng)建出來時,攻擊者進(jìn)行了第一筆抵押鑄造的操作,以少量 underlying token 鑄造了很少的 soToken,導(dǎo)致 soToken 的「 totalSupply 」數(shù)值太小。攻擊者繼而利用了 Solidity 合約精度損失這個漏洞,再搭配直接往 soToken 合約發(fā)送 underlying token(不會鑄造 soToken,也就意味著「 totalSupply 」不變,「 totalCash 」變大),而不是抵押 + 鑄造的方式存入 underlying token。這樣的操作使得合約中「 totalCash 」 變量變大,但是「 totalSupply 」 保持不變,從而導(dǎo)致 exchangeRate 變大。最終攻擊者在贖回 underlying token 時,需要銷毀的 soToken 少于抵押時鑄造的 soToken,攻擊者利用賺取的 soToken 去其他的 soToken(比如 soWETH、soUSDC)中借出 underlying token WETH、USDC,最終獲利高達(dá) 2000 萬美元。

攻擊中涉及的關(guān)鍵地址

攻擊準(zhǔn)備交易:

https://optimistic.etherscan.io/tx/0x45c0ccfd3ca1b4a937feebcb0f5a166c409c9e403070808835d41da40732db96

攻擊獲利交易:

https://optimistic.etherscan.io/tx/0x9312ae377d7ebdf3c7c3a86f80514878deb5df51aad38b6191d55db53e42b7f0

攻擊 EOA 相關(guān)地址:

0x5d0d99e9886581ff8fcb01f35804317f5ed80bbb

0xae4a7cde7c99fb98b0d5fa414aa40f0300531f43

攻擊者(合約)相關(guān)地址:

0xa78aefd483ce3919c0ad55c8a2e5c97cbac1caf8

0x02fa2625825917e9b1f8346a465de1bbc150c5b9

underlying token(VELO Token V2):

0x9560e827af36c94d2ac33a39bce1fe78631088db

漏洞合約(soVELO,類似于 Compound 的 cToken):

0xe3b81318b1b6776f0877c3770afddff97b9f5fe5

X 上 @tonyke_bot 用戶救援 交易:

https://optimistic.etherscan.io/tx/0x816f9e289d8b9dee9a94086c200c0470c6456603c967f82ab559a5931fd181c2

攻擊流程分析

前情提要

Sonne Finance 項目方最近通過了一項將 VELO market 添加到 Sonne Finance 的提案(https://twitter.com/SonneFinance/status/1786871066075206044),并通過多簽錢包安排了五筆在兩天之后執(zhí)行的交易(https://optimistic.etherscan.io/tx/0x18ebeb958b50579ce76528ed812025949dfcff8c2673eb0c8bc78b12ba6377b7),這五筆交易是用來創(chuàng)建 VELO market(soVELO 合約),并設(shè)置該 market 的一些關(guān)鍵配置,比如設(shè)置利率模型,設(shè)置價格預(yù)言機,設(shè)置抵押因子等。VELO market 創(chuàng)建之后,用戶可以存入 VELO 代幣,以鑄造 soVELO 代幣,soVELO 代幣又可以用來借貸其他 soToken。

攻擊準(zhǔn)備

攻擊準(zhǔn)備階段主要是攻擊者在提案兩天鎖定時間結(jié)束后,根據(jù) Sonne Finance 項目方提案中的信息,創(chuàng)建 VELO market(soVELO 合約),設(shè)置關(guān)鍵的配置,并通過抵押 VELO 代幣進(jìn) soVELO 合約來鑄造 soVELO 代幣,同時也將自己持有的 VELO 代幣以直接發(fā)送給 soVELO 合約的方式,來增大 exchangeRate,為后續(xù)攻擊獲利做準(zhǔn)備。

具體步驟如下:

  • 攻擊者在兩天鎖定時間結(jié)束后,首先將提案中安排的前四筆交易的操作打包到一筆交易中(交易 0x45c0cc),用來創(chuàng)建 VELO market(soVELO 合約),并設(shè)置好關(guān)鍵的配置。VELO market 初始化時,exchangeRate 被設(shè)置為「 200,000,000,000,000,000,000,000,000 」。

  • 攻擊者調(diào)用 soVELO 合約的「 mint 」函數(shù)來存入 VELO 代幣,并鑄造 soVELO 代幣,攻擊者指定「 mintAmount 」為「 400,000,001 」(VELO 代幣的數(shù)量)。從函數(shù)「 exchangeRateStoredInternal 」可以看出,由于此時 soVELO 代幣的「 _totalSuppl 」是 0,因此 exchangeRate 即為第 1 步中設(shè)置的值。根據(jù)公式「 mintTokens = actualMintAmount / exchangeRate 」,此時計算出的應(yīng)該鑄造的 soVELO 代幣的數(shù)量為 2。簡而言之,這一步攻擊者向 soVELO 合約中存入數(shù)值為「 400,000,001 」 的 VELO 代幣,攻擊者獲得數(shù)值為 2 的 soVELO 代幣。

    soVELO.mint:

  • 攻擊者以直接給 soVELO 合約發(fā)送 VELO 代幣的方式,給 soVELO 合約發(fā)送了數(shù)值為「 2,552,964,259,704,265,837,526 」的 VELO 代幣,此時 soVELO 合約持有的 VELO 代幣增多,但是由于沒有新的 soVELO 代幣的鑄造,因此 totalSupply 保持不變,也就意味著此時根據(jù) exchangeRate 計算公式計算出的 exchangeRate 會變大。

  • 攻擊者將持有的 soVELO 代幣轉(zhuǎn)移多次,最終轉(zhuǎn)移給了另一個攻擊 EOA 0xae4a。

攻擊獲利

攻擊獲利階段主要是攻擊者執(zhí)行提案的第五筆交易,并通過閃電貸借出 VELO 代幣直接發(fā)送給 soVELO 合約,以進(jìn)一步增大 exchangeRate。然后攻擊者利用自己手里的數(shù)值為 2 的 soVELO 代幣,去其他的 soToken(比如 soWETH,soUSDC 等)合約中借出了 WETH、USDC 等 underlying token,這些部分成為了攻擊者獲利。緊接著攻擊者去 soVELO 合約中贖回自己的 underlying token,由于 exchangeRate 變大,以及計算贖回需要銷毀的 soVELO 代幣時的精度損失問題,最終使得攻擊者僅僅使用數(shù)值為 1 的 soVELO 代幣就贖回了此前存入的幾乎全部的 VELO 代幣,可以理解為攻擊者利用多得的數(shù)值為 1 的soVELO 代幣,通過從其他 soToken 借貸賺取了 WETH、USDC 等 underlying token。攻擊者使用同樣的手法多次重復(fù)攻擊,最終獲利巨大。

具體步驟如下:

  • 攻擊者執(zhí)行題案中的第五筆交易,設(shè)置提案中規(guī)定的借貸因子。

  • 攻擊者從 VolatileV2 AMM - USDC/VELO 池子中閃電貸出數(shù)值為「 35,469,150,965,253,049,864,450,449 」的 VELO 代幣,這會觸發(fā)攻擊者的 hook 函數(shù)。在 hook 函數(shù)中,攻擊者繼續(xù)執(zhí)行攻擊操作。

  • 攻擊者將自己持有的 VELO 代幣發(fā)送給 soVELO 合約,以進(jìn)一步增大 exchangeRate。目前 soVELO 合約中一共有數(shù)值為「 35,471,703,929,512,754,530,287,976 」的 VELO 代幣(攻擊者三次轉(zhuǎn)入的 VELO 代幣和)。

  • 攻擊者創(chuàng)建新的合約 0xa16388a6210545b27f669d5189648c1722300b8b,在構(gòu)造函數(shù)中,將持有的 2 個 soVELO 代幣轉(zhuǎn)給新創(chuàng)建的合約 0xa163(以下稱為攻擊者 0xa163)。

  • 攻擊者 0xa163 以持有的 soVELO 代幣,從 soWETH 中借出數(shù)值為「 265,842,857,910,985,546,929 」的 WETH。

  • 攻擊者 0xa163 調(diào)用 soVELO 的「 redeemUnderlying 」函數(shù),指定贖回 VELO 代幣的數(shù)值為「 35,471,603,929,512,754,530,287,976 」(幾乎是所有攻擊者此前轉(zhuǎn)入或者抵押進(jìn) soVELO 合約的 VELO 代幣數(shù)量),此時需要根據(jù)公式「 redeemTokens = redeemAmountIn / exchangeRate 」來計算贖回所需要銷毀的 soVELO 代幣的數(shù)量。

    從「 exchangeRateStoredInternal 」函數(shù)可以看出,由于此時 _totalSupply 是 2 不是 0,因此需要計算 exchangeRate 的值,通過公式「 exchangeRate = (totalCash + totalBorrows - totalReserves) / totalSupply 」計算出,目前的 exchangeRate 為「 17,735,851,964,756,377,265,143,988,000,000,000,000,000,000 」,這個值遠(yuǎn)遠(yuǎn)大于設(shè)置的初始 exchangeRate 「 200,000,000,000,000,000,000,000,00 」。

    根據(jù)新的 exchangeRate 計算出的「 redeemTokens 」的值為「 1.99 」,由于 Solidity 向下取整的特性,「 redeemTokens 」的值最終為 1。也就意味著攻擊者 0xa163 使用數(shù)值為 1 的 soVELO 代幣,贖回了此前存入的幾乎所有的 VELO 代幣。同時攻擊者 0xa163 也賺取了從 soWETH 中借出的數(shù)值為「 265,842,857,910,985,546,929 」的 WETH。

    soVELO.redeemUnderlying:

    soVELO.exchangeRateStoredInternal:

  • 攻擊者 0xa163 將借到的 WETH 和贖回的 VELO 代幣全部轉(zhuǎn)給了上層攻擊者,然后自毀。

  • 攻擊者調(diào)用 soWETH 的「 liquidateBorrow 」函數(shù),用來清算前面新創(chuàng)建的合約 0xa163 借貸的部分資產(chǎn),目的是拿回鎖定住的數(shù)值為 1 的 soVELO 代幣。目前攻擊者只持有數(shù)值為 1 的 soVELO 代幣。

  • 攻擊者調(diào)用 soVELO 的「 mint 」函數(shù),再一次抵押鑄造 soVELO 代幣,目的是湊夠數(shù)值為 2 的 soVELO 代幣,然后再次執(zhí)行上述第 3-8 步,獲利其他的 undeylying token。

  • 攻擊者執(zhí)行數(shù)次第 9 步的操作,還掉閃電貸,獲利離場。

$100 如何撬動 $650 萬

攻擊發(fā)生后,X 上 @tonyke_bot 用戶在交易 0x0a284cd 中,通過抵押 1144 個 VELO 代幣到 soVELO 合約中,鑄造了 0.00000011 個 soVELO。這樣操作之所以能夠阻止攻擊者進(jìn)一步攻擊,是因為這筆交易改變了 soVELO 中 totalSupply 的大小和持有的 VELO 代幣的數(shù)量 totalCash,而 totalSupply 增長對于計算 exchangeRate 產(chǎn)生的影響大于 totalCash 增長產(chǎn)生的影響,因此 exchangeRate 變小,從而導(dǎo)致攻擊者進(jìn)行攻擊時,無法再利用精度損失賺取 soVELO,導(dǎo)致攻擊無法再進(jìn)行。

資金追蹤

攻擊者攫取非法收益后不久便將資金進(jìn)行了轉(zhuǎn)移,大部分資金轉(zhuǎn)移到了以下 4 個地址當(dāng)中,有的是為了換個地址繼續(xù)攻擊,有的是為了洗錢:

  • 0x4ab93fc50b82d4dc457db85888dfdae28d29b98d

攻擊者將 198 WETH 轉(zhuǎn)入了該地址,然后該地址采用了相同的攻擊手法,在下列交易中獲得非法收益:

攻擊結(jié)束后,該地址將上述非法所得轉(zhuǎn)給了 0x5d0d99e9886581ff8fcb01f35804317f5ed80bbb。

  • 0x5d0d99e9886581ff8fcb01f35804317f5ed80bbb

攻擊者將 724277 USDC、2353 VELO 轉(zhuǎn)入了該地址,并將 USDC 兌換成了Ether。隨后立即將部分資金轉(zhuǎn)入了 Stargate 跨鏈橋,剩下大部分非法資金殘留在該地址中

  • 0xbd18100a168321701955e348f03d0df4f517c13b 

攻擊者將 33 WETH 轉(zhuǎn)入了該地址,并采用 peel chain 的方式嘗試洗錢,洗錢鏈路如下:

0xbd18100a168321701955e348f03d0df4f517c13b -> 0x7e97b74252b6df53caf386fb4c54d4fb59cb6928 -> 0xc521bde5e53f537ff208970152b75a003093c2b4 -> 0x9f09ec563222fe52712dc413d0b7b66cb5c7c795。

  • 0x4fac0651bcc837bf889f6a7d79c1908419fe1770

攻擊者將 563 WETH 轉(zhuǎn)入了該地址,隨后轉(zhuǎn)給了 0x1915F77A116dcE7E9b8F4C4E43CDF81e2aCf9C68,目前沒有進(jìn)一步行為。

攻擊者本次洗錢的手段相對來說較為專業(yè),手法呈現(xiàn)多樣性趨勢。因此對于我們 Web3 參與者來說,在安全方面要持續(xù)不斷地提高我們的反洗錢能力,通過 KYT、AML 等相關(guān)區(qū)塊鏈交易安全產(chǎn)品來提高 Defi 項目的安全性。

安全建議

  • 精度損失需重視。精度損失導(dǎo)致的安全問題層出不窮,尤其是在Defi項目中,精度損失往往導(dǎo)致嚴(yán)重的資金損失。建議項目方和安全審計人員仔細(xì)審查項目中存在精度損失的代碼,并做好測試,盡量規(guī)避該漏洞。

  • 建議類似于 Compound 中 cToken 這種 market 的創(chuàng)建和首次抵押鑄造操作由特權(quán)用戶來執(zhí)行,避免被攻擊者操作,從而操作匯率。

  • 當(dāng)合約中存在關(guān)鍵變量依賴于「 this.balance 」或者「 token.balanceOf() 」的值時,需要慎重考慮該關(guān)鍵變量改變的條件,比如是否允許直接通過給合約轉(zhuǎn)原生幣或者代幣的方式改變該變量的值,還是只能通過調(diào)用某特定函數(shù)才能改變該變量的值。

免責(zé)聲明:本文只為提供市場訊息,所有內(nèi)容及觀點僅供參考,不構(gòu)成投資建議,不代表本站觀點和立場。投資者應(yīng)自行決策與交易,對投資者交易形成的直接或間接損失,作者及本站將不承擔(dān)任何責(zé)任。!
Tag:Sonne   Finance   攻擊  

你可能感興趣的文章

幣圈快訊

  • Coinbase宣布將新增支持Grvt(GRVT)

    2026-07-30 00:09
    7月30日,Coinbase宣布將新增支持Grvt(GRVT),用戶現(xiàn)已可在Coinbase網(wǎng)頁版、CoinbaseApp生成GRVT充值地址,適用于已開放相關(guān)交易服務(wù)的地區(qū)。
  • 美股三大股指悉數(shù)跌超1%

    2026-07-30 00:08
    7月30日,美股三大股指悉數(shù)跌超1%,標(biāo)普500指數(shù)跌幅擴大至1%,納指現(xiàn)跌1.3%,道指現(xiàn)跌1.6%。
  • 布倫特原油站上88美元/桶日內(nèi)漲7.40%

    2026-07-30 00:08
    7月30日,布倫特原油站上88美元/桶,日內(nèi)漲7.40%。
  • 烏克蘭機構(gòu):頓涅茨克兩重鎮(zhèn)處于俄軍火力控制下

    2026-07-30 00:07
    烏克蘭開源情報機構(gòu)DeepState29日在社交媒體發(fā)文稱,俄軍已在頓涅茨克地區(qū)的斯拉維揚斯克和克拉馬托爾斯克兩座城市前線40公里縱深形成火力控制并發(fā)動持續(xù)攻擊。俄國防部當(dāng)天發(fā)布的戰(zhàn)報稱,俄軍當(dāng)天在頓涅茨克地區(qū)等多地?fù)魯蹩颂m軍隊。
  • 今日重點關(guān)注財經(jīng)數(shù)據(jù)與事件7月30日將公布多項重要數(shù)據(jù)

    2026-07-30 00:00
    2026年7月30日周四,將關(guān)注以下財經(jīng)數(shù)據(jù)與事件:01:30加拿大央行公布貨幣政策會議紀(jì)要;02:00美聯(lián)儲FOMC公布利率決議;02:30美聯(lián)儲主席沃什召開貨幣政策新聞發(fā)布會;04:00Meta、微軟、高通、ARM公布Q2財報;09:00三星電子公布二季度財報并舉行業(yè)績說明會;13:30法國第二季度GDP年率初值;15:00瑞士7月KOF經(jīng)濟領(lǐng)先指標(biāo);16:00德國第二季度未季調(diào)GDP年率初值;17:00歐元區(qū)第二季度GDP年率初值;17:00歐元區(qū)6月失業(yè)率;17:00歐元區(qū)7月工業(yè)景氣指數(shù);17:00歐元區(qū)7月經(jīng)濟景氣指數(shù);19:00英國央行公布利率決議;19:30英國央行行長貝利召開新聞發(fā)布會;20:00德國7月CPI月率初值;20:30美國至7月25日當(dāng)周初請失業(yè)金人數(shù);20:30美國6月核心PCE物價指數(shù)年率;20:30美國6月個人支出月率;20:30美國第二季度實際GDP年化季率初值;20:30美國第二季度實際個人消費支出季率初值;20:30美國第二季度核心PCE物價指數(shù)年化季率初值;20:30美國6月核心PCE物價指數(shù)月率;22:30美國至7月24日當(dāng)周EIA天然氣庫存;次日04:00亞馬遜、蘋果公布財報。
  • 查看更多
更多

熱門幣種

  • 幣種
    最新價格
    24H漲跌幅
  • bitcoin BTC 比特幣

    BTC

    比特幣

    $ 63965.59¥ 433040.64
    +0.1%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 1891.47¥ 12805.06
    -1.35%
  • tether USDT 泰達(dá)幣

    USDT

    泰達(dá)幣

    $ 0.9986¥ 6.7604
    -0.04%
  • binance-coin BNB 幣安幣

    BNB

    幣安幣

    $ 568.42¥ 3848.14
    -0.8%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1.001¥ 6.7766
    +0.02%
  • ripple XRP 瑞波幣

    XRP

    瑞波幣

    $ 1.0678¥ 7.2288
    +0.3%
  • solana SOL Solana

    SOL

    Solana

    $ 73.0745¥ 494.7
    -1.59%
  • tron TRX 波場

    TRX

    波場

    $ 0.3264¥ 2.2096
    +0.62%
  • hyperliquid HYPE Hyperliquid

    HYPE

    Hyperliquid

    $ 54.7967¥ 370.96
    -0.85%
  • dogecoin DOGE 狗狗幣

    DOGE

    狗狗幣

    $ 0.07008¥ 0.4744
    -1.01%
镇安县| 广安市| 潢川县| 搜索| 灵宝市| 忻城县| 尼勒克县| 盈江县| 广宗县| 绿春县| 林周县| 磴口县| 吴桥县| 吉林市| 红桥区| 当阳市| 长岛县| 平邑县| 长泰县| 鹤壁市| 涟水县| 琼海市| 宜君县| 乐平市| 周宁县| 筠连县| 石泉县| 得荣县| 治多县| 安西县| 含山县| 安图县| 太谷县| 盐源县| 郓城县| 巴塘县| 韶山市| 冕宁县| 柘城县| 拉萨市| 神农架林区|