mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
平台 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

SharkTeam独家分析 | “杠杆借贷”功能实现漏洞:Vee.Finance被黑事件分析

收藏
分享

北京时间9月21日, Vee.Finance 借贷项目遭到黑客攻击,损失共计8804.7 ETH和213.93 BTC。

Vee.Finance是一个面向传统金融和加密用户的DeFi借贷平台。Vee.Finance基于Compound借贷项目,并在Compound基础上进行改造。Vee.Finance可提供高达3倍的交易借贷,用户可以买入或卖出的资产数量取决于账户中的本金和平台的杠杆率。即如果将杠杆倍数设为3x,则理论上用户可以借入本金3倍的数字资产。

image.png

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

一、事件分析

显然Vee.Finance不可能让用户直接拿走这笔钱,因为这样贷出的资产高于抵押资产的价值,会导致平台亏损。所以使用杠杆借贷时Vee.Finance会将用户指定的order订单转给orderProxy合约,由orderProxy合约来执行。该部分由borrowAndCall()函数实现。

image.png

再看borrowAndCall()函数中调用的borrowLeverageInternal()函数,该函数将杠杆倍数等参数返回给了borrowFresh()函数。

image.png

borrowFresh()函数中相比于Compound,增加了对leverage的判断。如果杠杆倍数leverage为0,执行正常的借贷逻辑,如果杠杆不为0,则将资金通过doDeposit()函数转移到指定位置。

image.png

但是在borrowFresh()函数中可以看到,无论杠杆倍率是多少,系统都只会记录单倍杠杆的借贷资产。也就是说,如果用户实际抵押价值100美元的Ether可以借出80美元的USDC,并通过三倍的杠杆借出240美元的USDC,但在系统记录中,用户只借出80美元的USDC。

image.png

另一个问题是,代码中在执行 杠杆借贷 时,并没有检查通过杠杆借贷抵押获取的Token A所交换的Token B的总价值是否与Token A的总价值具有同等价值,且没有持续监控这两种Token的总价值,在价值不对等的情况下及时清算或判定交易失败。

攻击者地址:0xeeeE458C3a5eaAfcFd68681D405FB55Ef80595BA

Vee.Finance遭到攻击的合约地址:0xd1F855ceF146D36CC5851E2139c54524420797f2

以第一次攻击为例

交易地址为:

https://cchain.explorer.avax.network/tx/0xc490b881f7434af48a1f39ca2d71064e93a1802b5853e3312e8800468dc83b81

image.png

攻击合约1(0x255945a4f673851633355b2592f602025ca20142)先为攻击合约2(0x4b4c4044207aa5da6b585fed9e8ffc04bb55d2df)往Vee.Finance的cToken地址(合约名称为CErc20Immutable)存入了约0.96WETH,从而使得攻击合约2可以进行抵押借贷(可以借出约0.52WETH)及调用杠杆交易。

image.png

通过CREATE2的方式创建合约2绕过了isContract()对msg.sender的检查,并在constructor()函数中进行攻击调用。

image.png

image.png

攻击合约2调用CErc20Immutable的 borrowAndCall() 函数,通过调用VeeProxyController去Pangolin池中进行交易。

image.png

image.png

由于Pangolin池是攻击者在攻击之前创建的交易对的交易池,所以攻击者可以控制交易池的滑点。这导致Vee.Finance的合约只将加了杠杆后的约1.55个WETH换回了约0.27个LINK,造成了大量亏损。

image.png

攻击合约2归还借贷。

image.png

image.png

取出抵押资产并transfer给攻击合约1。通过先前分析,虽然攻击者通过杠杆进行倍数抵押借贷,但是系统记录中用户借款只有单倍杠杆的借贷资产。因此攻击合约2仅需还上约0.52的WETH,就能取出最开始存入的0.96WETH。

image.png

攻击合约1以少量的LINK换取了约1.55个WETH,从而获得了交易过程中Vee.Finance平台的亏损,从而实现套利。攻击者进行多笔类似交易,以将获利最大化。

二、安全建议

SharkTeam提醒您,在涉足区块链项目时请提高警惕,选择更稳定、更安全,且经过完备多轮审计的公链和项目,切不可将您的资产置于风险之中,沦为黑客的提款机。

SharkTeam 作为领先的区块链安全服务团队,为开发者提供智能合约审计服务。智能合约审计服务由人工审计和自动化审计构成,满足不同客户需求,独家实现覆盖高级语言层、虚拟机层、区块链层、业务逻辑层四个方面近两百项审计内容,全面保障智能合约安全。

image.png

==

和2万人一起加入鸵鸟社群

添加QQ群:645991580

添加TG群:鸵鸟中文社区 https://t.me/tuoniaox

免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。