Hundred Finance攻击事件分析

admin 2023年6月5日23:27:44评论28 views字数 1371阅读4分34秒阅读模式
根据Numen链上监控显示Apr-15-2023 02:12:00 PM +UTC时间,Hundred Finance遭到攻击,损失约600万美金。
攻击交易地址:https://optimistic.etherscan.io/tx/0x6e9ebcdebbabda04fa9f2e3bc21ea8b2e4fb4bf4f4670cb8483e2f0b2604f451Hundred Finance攻击事件分析
攻击分析
根据调用栈分析如下:
1.攻击者首先调用aave的flashloan函数借出500wbtc。
2.首先观察到hwbtc没有人来进行借贷,只有很早之前攻击者的操作。
3.攻击者先redeem自己早期存入的wbtc,使hwbtc的totalsupply=0。
4.然后攻击者创建了最小代理合约,存入4个wbtc,根据计算获得200个hwbtc。
5.然后攻击者redeem到只剩2wei个wbtc。
6.此时攻击者创建的合约上有500wbtc和2wei hwbtc。
7.攻击者把500wbtc转入池子,此时的hwbtc价格变高,使其能获得借出大量eth的能力。
8.攻击者借出eth,又因为当前合约的solidity版本0.5.16,在计算时引入了计算库防止溢出,所以在redeemunderlying向下取整,赎回500wbtc只需要1wei hwbtc。
9.攻击者清算自己,通过清算再把hwbtc的totalsupply=0,重复上述操作攻击其它借贷池。
从代码角度分析,合约代码基本fork compound,根本问题是Hundred Finance的wbtc资产没有人来借贷,所以攻击者能控制totalsupply,攻击通过给池子转移资产,用极少的totalsupply对应大量的底层资产,是htoken的价格变高,提升借贷权利。Hundred Finance攻击事件分析
Hundred Finance攻击事件分析
Hundred Finance攻击事件分析

从和compound的diff看这都是正常逻辑,exchangrate确实变大。

下面这部分计算:

Hundred Finance攻击事件分析

Hundred Finance攻击事件分析

Hundred Finance攻击事件分析

上述代码计算也没有问题。evm没有浮点数,默认向下取整。

Hundred Finance攻击事件分析

Hundred Finance攻击事件分析
Hundred Finance攻击事件分析
所以在赎回的时候本需要2wei hwbtc,经过计算只需要1wei。
攻击的两个主要条件,hwbtc没有产生借贷,攻击者可控totalsupply,第二个条件就是上述说明的计算问题。

总结

此次事件的根本原因是 hwbtc没有用户产生借贷,导致黑客可以控制totalsupply,数据向下取整导致redeemunderlying可以全部赎回。如果能闪电贷能借的更多,攻击者持有的份额无限趋近去totalsuply也能完成攻击,但实际情况无法做到。

损失详情:

0.058 WBTC
20,854 枚 SNX
1,265,978枚USDC
842,788 枚 DAI
1,113,430枚USDT
865,142 枚 sUSD
457,286枚 FRAX
1,030枚ETH

Hundred Finance攻击事件分析


Numen 官网
https://numencyber.com/ 
GitHub
https://github.com/NumenCyber
Twitter
https://twitter.com/@numencyber
Medium
https://medium.com/@numencyberlabs
LinkedIn
https://www.linkedin.com/company/numencyber/

原文始发于微信公众号(Numen Cyber Labs):Hundred Finance攻击事件分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月5日23:27:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Hundred Finance攻击事件分析http://cn-sec.com/archives/1677060.html

发表评论

匿名网友 填写信息