freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

SharkTeam:Sonne Finance攻击事件分析
SharkTeam 2024-05-17 15:44:07 73695

2024年5月15日,Sonne Finance遭受攻击,项目方损失超过2千万美元。

20240517151519509image.png

SharkTeam对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。

一、攻击交易分析

攻击者:0xae4a7cde7c99fb98b0d5fa414aa40f0300531f43

攻击合约:0x02fa2625825917e9b1f8346a465de1bbc150c5b9

目标合约:0xe3b81318b1b6776f0877c3770afddff97b9f5fe5

攻击交易:0x9312ae377d7ebdf3c7c3a86f80514878deb5df51aad38b6191d55db53e42b7f0

攻击过程如下:

  1. 闪电贷 35,569,150 VELO,并将这些VELO Token转移(transfer)至soVELO合约中20240517151532653image.png

因为是直接转账(捐赠),没有铸造soVELO Token。因此,soVELO合约中,totalCash增加了35,569,150 VELO, soVELO的totalSupply不变。

  1. 攻击者新建合约0xa16388a6210545b27f669d5189648c1722300b8b,在新合约中对目标合约发起攻击,攻击过程如下:20240517151609972image.png

(1)向新合约中转入2 soVELO

(2)将soWETH和soVELO声明为抵押物

(3)从soWETH借贷265,842,857,910,985,546,929 WETH20240517152723395image.png

从以上borrow函数的执行过程中,根据getAccountSnapshot函数的返回值,发现:

对于soWETH合约,新合约余额为0,借贷额为0,兑换率(exchangeRate)为208,504,036,856,714,856,032,085,073

对于soVELO合约,新合约余额为2,即抵押了2wei的 soVELO,借贷额为0,兑换率(exchangeRate)为17,735,851,964,756,377,265,143,988,000,000,000,000,000,000

exchangeRate计算如下:20240517152736697image.png

抵押1wei的soVELO,可以借贷不超过17,735,851,964,756,377,265,143,988 VELO,而借贷265,842,857,910,985,546,929 WETH,至少需要抵押265,842,857,910,985,546,929 soWETH,

soWETH的价格:soWETHPrice = 2,892,868,789,980,000,000,000,

soVELO的价格:soVELOPrice = 124,601,260,000,000,000

抵押1wei的soVELO可借贷的WETH数量如下:

1 * exchangeRate * soVELOPrice / soWETHPrice = 763,916,258,364,900,996,923

约763 WETH。仅需1wei的soVELO抵押就足以支持本次借贷。

借贷265,842,857,910,985,546,929 WETH(约265 WETH)换算成抵押物soVELO,至少需要抵押的soVELO数量为:

265,842,857,910,985,546,929 * soWETHPrice / soVELOPrice / exchangeRate = 0.348

即1wei的soVELO抵押物即可。

实际上2wei的soVELO抵押物,在借贷时只用到了1wei

(4)赎回标的资产,即35,471,603,929,512,754,530,287,976 VELO20240517152745144image.png

exchangeRate = 17,735,851,964,756,377,265,143,988,000,000,000,000,000,000

赎回35,471,603,929,512,754,530,287,976 VELO需要的抵押物soVELO的数量为

35,471,603,929,512,754,530,287,976 * 1e18 / exchangeRate = 1.99999436

在计算时,因为计算采用了截断取整而不是四舍五入,实际计算的所需抵押物为1wei的soVELO。

实际抵押物为2wei的soVELO,其中1wei用于上面的借贷265WETH,剩下的1wei用于赎回35M VELO

(5)将借贷的265 WETH以及赎回的35M VELO 转账给攻击合约

  1. 反复3次(共4次)创建新合约,重复攻击。
  2. 最后,偿还闪电贷。20240517152752254image.png

二、漏洞分析

以上攻击过程中利用了2个漏洞:

(1)捐赠攻击:向soVELO合约直接转账(捐赠)VELO Token,改变了exchangeRate,使得攻击者可以在只有1wei soVELO的抵押物的情况下,借贷出约265 WETH

(2)计算精度问题:利用计算过程中的精度损失以及被修改的exchangeRate,在只抵押了1wei soVELO的情况下,可以赎回35M VELO

三、安全建议

针对本次攻击事件,我们在开发过程中应遵循以下注意事项:

(1)项目在设计和开发过程中,要保持逻辑的完整性和严谨性,尤其存款、质押、更新状态变量以及计算过程中乘除法计算结果的取舍问题,要尽可能多考虑一些情况,使得逻辑完整,没有漏洞。

(2)项目上线前,需要由第三方专业的审计公司进行智能合约审计。

About Us

SharkTeam的愿景是保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约底层理论。提供包括风险识别与阻断、智能合约审计、KYT/AML、链上分析等服务,并打造了链上智能风险识别与阻断平台ChainAegis,能有效对抗Web3世界的高级持续性威胁(Advanced Persistent Threat,APT)。已与Web3生态各领域的关键参与者,如Polkadot、Moonbeam、polygon、Sui、OKX、imToken、Collab.Land、TinTinLand等建立长期合作关系。

官网:https://www.sharkteam.org

Twitter:https://twitter.com/sharkteamorg

Telegram:https://t.me/sharkteamorg

Discord:https://discord.gg/jGH9xXCjDZ

# web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 SharkTeam 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
SharkTeam LV.8
SharkTeam的愿景是全面保护Web3世界的安全。团队成员分布在北京、南京、苏州、硅谷,由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Huobi Global、OKC、polygon、Polkadot、imToken、ChainIDE等建立长期合作关系。
  • 172 文章数
  • 42 关注者
SharkTeam:2024年上半年度Web3安全报告
2024-07-08
SharkTeam:美国众议院FIT21法案解读
2024-06-26
SharkTeam:UwU Lend攻击事件分析
2024-06-13