Sonne Finance 攻击分析

币圈资讯 阅读:42 2024-05-18 10:40:02 评论:0
美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址
新闻稿

press release 比特币今日价格行情网_okx交易所app_永续合约_比特币怎么买卖交易_虚拟币交易所平台

据ZAN Team 的 Cara(X 账号@Cara6289)和 XiG(X 账号 @SHXiGi)报道:2024 年 5 月 15 日,Sonne Finance 在 Optimism 链上遭受攻击,损失高达 2 千万美元。

攻击发生后,有用户在推特上表示其用约 100 美元保护了 Sonne Finance 的代币抵押池(也称为 market,类似于 Compound 中的 cToken)中剩余的约 650 万美元。(https://twitter.com/tonyke_bot/status/1790547461611860182

attack-image1

Sonne Finance 项目方发现攻击之后,迅速暂停了 Optimism上的所有 markets,并表示 Base 上的 markets 是安全的。https://twitter.com/SonneFinance/status/1790535383005966554

safe-market-image

攻击简述

Sonne Finance 是 Optimism 上的一个 fork 了 Compound V2 的去中心化借贷协议,供个人、机构和协议访问金融服务。Sonne Finance 协议将用户的 token 资产聚合起来,形成了借贷流动性池,为用户提供了一个类似银行的借贷业务。与 Compound 一样,协议参与者们可以将其持有的 token 抵押到 Sonne Finance 的借贷流动性池中,同时获得凭证 soToken(与 cToken 一样)。而 soToken 是一种生息资产凭证,随着区块的推进会产生一定的收益,同时还会获得 SONNE token 激励。而参与者凭借着手里的 soToken 还能从 Sonne 借贷资产池中借出其他 token,例如参与者可以抵押一定数量的 USDC 获得 soUSDC 凭证,随后借贷出WETH用于经一步的流通。Sonne Finance 协议中的抵押借贷可以是多对多的资产关系,在抵押借贷的过程中,协议会自动计算参与者地址的健康度(Health Factor),当健康度低于 1 时,该地址的抵押品将支持被清算,而清算者也能获得一定的清算奖励。

用户存入的 underlying token 与铸造的 soToken 的数量关系,主要与一个叫做 exchangeRate 的变量有关,这个变量粗略可以用来表示每个 soToken 价值多少 underlying token。exchangeRate 的计算公式如下:

exchangeRate-formula

DeFi攻击事件详情

DeFi攻击事件详情

在上述公式中,totalCash是指soToken持有的underlying token的数量,totalBorrows是指某market中被借出去的underlying token的数量,totalReserves是指总储备金数量(其中包含借款人支付的利息),totalSupply是指铸造的soToken的数量。

在赎回时,用户可以指定想要赎回的underlying token的数量redeemAmount,来计算需要销毁掉的soToken的数量redeemTokens,计算方式大概为「 redeemTokens = redeemAmount / exchangeRat 」注意这里并没有对精度损失做处理

本次攻击事件的本质是market (soToken)被创建出来时,攻击者进行了第一笔抵押铸造的操作,以少量underlying token铸造了很少的soToken,导致soToken的「 totalSupply 」数值太小。攻击者继而利用了Solidity 合约精度损失这个漏洞,再搭配直接往soToken合约发送underlying token(不会铸造soToken,也就意味着「 totalSupply 」不变,「 totalCash 」变大),而不是抵押 + 铸造的方式存入underlying token。这样的操作使得合约中「 totalCash 」 变量变大,但是「 totalSupply 」 保持不变,从而导致exchangeRate变大。最终攻击者在赎回underlying token时,需要销毁的soToken少于抵押时铸造的soToken,攻击者利用赚取的soToken去其他的soToken(比如soWETHsoUSDC)中借出underlying token WETH、USDC,最终获利高达2000万美元。

攻击中涉及的关键地址

攻击准备交易:

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

攻击获利交易:

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

攻击 EOA 相关地址:

0x5d0d99e9886581ff8fcb01f35804317f5ed80bbb

0xae4a7cde7c99fb98b0d5fa414aa40f0300531f43

攻击者(合约)相关地址:

0xa78aefd483ce3919c0ad55c8a2e5c97cbac1caf8

0x02fa2625825917e9b1f8346a465de1bbc150c5b9

underlying token(VELO Token V2):

0x9560e827af36c94d2ac33a39bce1fe78631088db

漏洞合约(soVELO,类似于Compound的cToken):

0xe3b81318b1b6776f0877c3770afddff97b9f5fe5

X上@tonyke_bot用户救援交易:

https://optimistic.etherscan.

```html 攻击事件发生

攻击事件发生

Sonne Finance 项目方最近确认将 VELO market 添加到 Sonne Finance 平台,相关信息可通过该提案了解:https://twitter.com/SonneFinance/status/1786871066075206044。并已通过多签钱包安排了五笔在两天之后执行的交易,交易详情:https://optimistic.etherscan.io/tx/0x18ebeb958b50579ce76528ed812025949dfcff8c2673eb0c8bc78b12ba6377b7

攻击流程分析

前情提要

Sonne Finance 项目方在一项提案中安排了创建 VELO market 的五笔交易,用以设置 VELO market 的关键配置和合约。VELO market 创建以后,用户可通过存入 VELO 代币来铸造 soVELO 代币,进而进行借贷交易。

攻击准备

攻击准备阶段主要包括攻击者在提案两天锁定时间结束后,根据 Sonne Finance 项目方提案中的信息,创建 VELO market(soVELO 合约),设置关键的配置,抵押 VELO 代币进 soVELO 合约,铸造 soVELO 代币,并通过发送 VELO 代币直接给 soVELO 合约的方式,增大 exchangeRate,为后续攻击获利做准备。

具体步骤如下:

  1. 攻击者在两天锁定时间结束后,首先将提案中安排的前四笔交易的操作打包到一笔交易中(交易 0x45c0cc),用来创建 VELO market(soVELO 合约),并设置好关键的配置。VELO market 初始化时,exchangeRate 被设置为「 200,000,000,000,000,000,000,000,000 」。

  2. 攻击者调用 soVELO 合约的「 mint 」函数来存入 VELO 代币,并铸造 soVELO 代币,攻击者指定「 mintAmount 」为「 400,000,001 」(VELO 代币的数量)。从函数「 exchangeRateStoredInternal 」可以看出,由于此时 soVELO 代币的「 _totalSuppl 」是 0,因此 exchangeRate 即为第 1 步中设置的值。根据公式「 mintTokens = actualMintAmount / exchangeRate 」,此时计算出的应该铸造的 soVELO 代币的数量为 2。简而言之,这一步攻击者向 soVELO 合约中存入数值为「 400,000,001 」 的 VELO 代币,攻击者获得数值为 2 的 soVELO 代币。

```

近日,发现 DeFi 协议 soVE 发生了一起恶意攻击事件。攻击者通过发送虚假交易,导致了协议中代币数量的增加和交换率的异常变化。截至目前,已经确认攻击者获利数额巨大。

攻击过程

攻击者向 soVELO 合约发送了数值为「2,552,964,259,704,265,837,526」的 VELO 代币,从而导致合约中的代币数量增加。然后,攻击者将持有的 soVELO 代币转移多次,并最终转移到了另一个攻击 EOA 0xae4a。

攻击获利

攻击者利用闪电贷借出 VELO 代币直接发送给 soVELO 合约,进一步增大 exchangeRate。然后,攻击者利用所持有的 soVELO 代币借出了其他 underlying token,在后续的操作中,攻击者通过销毁较少数量的 soVELO 代币赎回了之前存入的几乎全部 VELO 代币,从中获得巨大利润。

具体步骤如下:

  1. 攻击者执行了提案中规定的借贷因子。
  2. 从 VolatileV2 AMM - USDC/VELO 池子中闪电贷出了数值为「35,469,150,965,253,049,864,450,449」的 VELO 代币,并触发了攻击者的 hook 函数。
  3. 攻击者将所持有的 VELO 代币发送给 soVELO 合约,进一步增大 exchangeRate。
  4. 攻击者创建新的合约 0xa16388a6210545b27f669d5189648c1722300b8b,并将持有的 2 个 soVELO 代币转给了该合约。
  5. 新创建的合约从 soWETH 中借出了数值为「265,842,857,910,985,546,929」的 WETH。
  6. 新合约调用了 soVELO 的「redeemUnderlying」函数,最终仅使用数值为 1 的 soVELO 代币就赎回了之前存入的几乎全部 VELO 代币。
```html

Defi 多合约闪电贷攻击分析

根据 PeckShield 最新发布的消息,soVELOCITY (soVELO) 遭遇了阴险的闪电贷攻击。攻击者通过多合约操作实施攻击,总计攫取了约 $650 万的非法收益。

攻击详情如下:

  1. 攻击者 0xa163 在执行多步骤的操作后,通过 soVELO.borrow 函数借出了几乎所有供应的 soVELO 代币。

  2. 攻击者通过调用 soVELO 的「 borrow 」函数,借出了数值为「 340,282,366,920,938,463,463,374,607,431,768,211,455 」的 soVELO 代币。

  3. 攻击者调用 soVELO 的「 redeemTokens 」函数,准备还款。但是由于所持有 soVELO 代币的量超过 Solidity 的最大精度值「 99 」,由于 Solidity 向下取整的特性,「 redeemTokens 」的值最终为 1。也就意味着攻击者 0xa163 使用数值为 1 的 soVELO 代币,赎回了此前存入的几乎所有的 VELO 代币。同时攻击者 0xa163 也赚取了从 soWETH 中借出的数值为「 265,842,857,910,985,546,929 」的 WETH。

  4. soVELO.redeemUnderlying:

    JgaPWsTeFcjQh2cllxZbRAVVWBgtbB1p0vKzMUyp.png

  5. soVELO.exchangeRateStoredInternal:

    JR046wuedgyfv7izGqBM9gdqNSjLJCPahXtRX8aR.png

  6. 攻击者 0xa163 将借到的 WETH 和赎回的 VELO 代币全部转给了上层攻击者,然后自毁。

  7. 攻击者调用 soWETH 的「 liquidateBorrow 」函数,用来清算前面新创建的合约 0xa163 借贷的部分资产,目的是拿回锁定住的数值为 1 的 soVELO 代币。目前攻击者只持有数值为 1 的 soVELO 代币。

  8. 攻击者调用 soVELO 的「 mint 」函数,再一次抵押铸造 soVELO 代币,目的是凑够数值为 2 的 soVELO 代币,然后再次执行上述第 3-8 步,获利其他的 undeylying token。

  9. 攻击者执行数次第 9 步的操作,还掉闪电贷,获利离场。

$100 如何撬动 $650 万

攻击发生后,X 上 @tonyke_bot 用户在交易 0x0a284cd 中,通过抵押 1144 个 VELO 代币到 soVELO 合约中,铸造了 0.00000011 个 soVELO。这样操作之所以能够阻止攻击者进一步攻击,是因为这笔交易改变了 soVELO 中 totalSupply 的大小和持有的 VELO 代币的数量 totalCash,而 totalSupply 增长对于计算 exchangeRate 产生的影响大于 totalCash 增长产生的影响,因此 exchangeRate 变小,从而导致攻击者进行攻击时,无法再利用精度损失赚取 soVELO,导致攻击无法再进行。

u1as4T5nQ0TRa06tDTVBVADvb7uUtcfElyXPeD0O.png

资金追踪

攻击者攫取非法收益后不久便将资金进行了转移,大部分资金转移到了以下 4 个地址当中,有的是为了换个地址继续攻击,有的是为了洗钱:

  1. 0x4ab93fc50b82d4dc457db85888dfdae28d29b98d

攻击者将 198 WETH 转入了该地址,然后该地址采用了相同的攻击手法,在下列交易中获得非法收益:

95C2zAtvGO729alLnVmTFuAPJhjEqOWAoVS7VlZt.jpeg

``````html

根据最新情报,一起规模巨大的跨链攻击事件已经发生,攻击者使用了多种手段窃取了大量资金。攻击发生在0x0b6618a...b579e7地址上,攻击结束后,非法所得被转移到0x5d0d99e9886581ff8fcb01f35804317f5ed80bbb地址。

  1. 0x5d0d99e9886581ff8fcb01f35804317f5ed80bbb

攻击者将724277 USDC和2353 VELO转入了该地址,并将USDC兑换成了Ether。部分资金随后被转移到了Stargate跨链桥,其余非法资金仍然留在该地址中

eFKKdjtB2EjE2KyLm2GffFxx57ajVPhlQkUuy6Am.jpeg 

  1. 0xbd18100a168321701955e348f03d0df4f517c13b 

攻击者将33 WETH转入了该地址,并尝试通过peel chain的方式洗钱,链路如下:

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

  1. 0x4fac0651bcc837bf889f6a7d79c1908419fe1770

攻击者将563 WETH转入了该地址,并将资金转移到0x1915F77A116dcE7E9b8F4C4E43CDF81e2aCf9C68,目前没有进一步操作。

本次洗钱手段相对比较专业,手法多样。因此,我们Web3参与者需要持续提高反洗钱能力,通过KYT、AML等相关区块链交易安全产品来提高DeFi项目的安全性。

安全建议

  1. 重视精度损失。精度损失会导致各种安全问题,特别是在DeFi项目中,常常导致严重资金损失。建议项目方和安全审计人员仔细审查项目中的精度损失代码,并进行充分测试,尽量避免这种漏洞。

  2. 建议像Compound中创建和首次抵押cToken这种market的操作由特权用户执行,避免被攻击者操作以操纵汇率。

  3. 当合约中的关键变量依赖于"this.balance"或"token.balanceOf()"的值时,需要仔细考虑该变量可能改变的条件,比如是否允许通过直接转账原生币或代币来改变这个值,还是是否只能通过调用特定函数来改变这个值。

```

文字格式和图片示例

注册有任何问题请添加 微信:MVIP619 拉你进入群

弹窗与图片大小一致 文章转载注明 网址:https://netpsp.com/?id=64092

美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址
可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
平台列表
美化布局示例

欧易(OKX)

  全球官网 大陆官网

币安(Binance)

  官网

火币(HTX)

  官网

Gate.io

  官网

Bitget

  官网

deepcoin

  官网
关注我们

若遇到问题,加微信客服---清歌

搜索
排行榜
扫一扫,加我为微信好友加我为微信好友