首发 | Warp Finance闪电贷攻击事件分析_HARD:AVA

一张100元纸币,可以做的事情非常多,买早餐,买菜,炒股,旅游,折纸飞机甚至是当壁纸贴到墙上。

功能太多,反而衍生出了各种各样的不同形式的钱。

比如说存放在银行卡里的数字,存放在诸如支付宝一类应用中的数字,存放在股票基金里的数字,或是借条上的一句话。

闪电贷作为新型金融产品,被认为是金融领域区块链应用的一大跳跃式进步。

闪电贷将借贷部分属于钱的形式功能“剥离”而出,资金可以几乎不受阻碍的从一个协议流向另一个协议,从一类资产流向另一类资产,这大大提高了单一功能的效率。

然而对于用户的便利也使得它往往有空可钻,黑客使用起来简直可以称得上是“一本万利”甚至是“无本万利”。

Tether在乌拉圭推出可持续的比特币挖矿业务:5月30日消息,Tether 宣布正在与乌拉圭一家持牌公司合作,在乌拉圭推出可持续的比特币挖矿业务。Tether 正在积极寻求通过招募能源领域的专家来扩大其团队。[2023/5/30 11:48:41]

2020年,闪电贷攻击频发,成为安全事故中的“新常态”。

北京时间12月17日上午,CertiK安全技术团队收到闪电贷攻击预警,发现一笔针对WarpFinance项目的闪电贷攻击。

CertiK安全技术团队立即展开分析,现将技术细节分析如下:

1.通过闪电贷,攻击者从uniswap和dydx处共借得5笔贷款,每笔借出的WETH和DAI数目如下:

Coinbase:目前所有资产交易已正式恢复:3月5日,据官方消息,在Coinbase.com(Advanced Trade)交易被禁用三小时后,目前相关交易已经正式恢复,所有资产已经在Coinbase Exchange、Coinbase iOS和安卓移动应用程序中重新启用交易。

此前报道,Coinbase于北京时间3月5日停机8小时进行升级维护。[2023/3/5 12:43:00]

表一:攻击流程中闪电贷借出的代币种类和数目

2.攻击者将借贷所得代币放入uniswap的WETH-DAI流动性池中,铸造得到约94349个流动性证明LP代币,然后将所有的这些LP代币通过调用图一中位于0x13db1cb418573f4c3a2ea36486f0e421bc0d2427地址WarpVaultLP智能合约中provideCollateral()函数存入到WarpFinance的Vault中。

澳大利亚证券交易所取消区块链结算和清算系统项目:金色财经报道,澳大利亚证券交易所 (ASX) 宣布放弃替代 CHESS 结算和清算系统的区块链结算和清算系统项目,据相关公告称,区块链结算和清算系统项目容易受到延迟和争议影响,澳大利亚证券交易所将“在埃森哲进行的独立审查及其内部评估完成后,重新评估 CHESS 替换项目的所有方面”。 澳交所还称:“经过进一步审查,包括考虑独立报告中的调查结果,我们得出结论,我们所走的道路不符合 ASX 和市场的高标准。必须解决重大的技术、治理和交付挑战。鉴于解决方案的不确定性,CHESS 替换资本化软件将被取消确认,导致2023年上半年的税前费用为 2.45-2.55 亿美元(税后 1.72-1.79 亿美元)。这不会对股息产生影响。” (the block)[2022/11/17 13:14:48]

图一:WarpVaultLP智能合约中provideCollateral()函数

分析师:交易所的比特币余额在过去一个月中创下新低:金色财经报道,分析师Venturefounder发推称,交易所的比特币余额在过去一个月中创下新低。BTC交易所余额自2020年3月以来一直处于下降趋势,这与早期周期形成鲜明对比。[2022/11/5 12:20:34]

3.?当攻击者在WarpVaultlp合约中存入LP作为collateral之后,调用位于0xBa539B9a5C2d412Cb10e5770435f362094f9541c地址处的WarpControl智能合约中的borrowSC函数来从warp项目中借出USDC,如图二所示。

图二:WarpControl智能合约中的borrowSC()函数

图二中1582行中的getBorrowLimit()函数会通过调用同一合约中的getTotalAvailableCollateralValue(),来间接调用oracle的getUnderlyingPrice()函数来获得当前攻击者存入的collateral的价格,

彭博社:BlockFi正与加密借贷平台Ledn进行融资谈判,后者拟领投BlockFi4亿美元融资:7月1日消息,据彭博社援引三位知情人士报道,除FTX外,BlockFi还在与加拿大加密借贷平台Ledn进行融资谈判。知情人士表示,Ledn将领投BlockFi新一轮4亿美元融资,并提供5000万美元的股权出资,ParaFi Capital也将参投。Ledn首席执行官Adam Reeds对此事发表声明时表示,鉴于BlockFi的运营实力,Ledn目前正在评估一些机会,以扩大在数字资产借贷及其他领域的领导地位。目前,我们无法分享任何细节。

此前报道,2021年12月15日,加拿大加密货币借贷平台Ledn宣布以5.4亿美元估值完成7000万美元B轮融资,当轮融资由10T Holdings领投,Golden Tree Asset Management、Raptor Group和FJLabs等机构及其他天使投资人参投。(彭博社)[2022/7/1 1:43:52]

图三:WarpControl智能合约中调用的价格预言机地址

通过查看价格预言机oracle地址的值,可以发现WarpControl智能合约调用了位于0x4A224CD0517f08B26608a2f73bF390b01a6618c8地址的UniswapLPOracleFactory智能合约作为计算质押资产的价格预言机oracle。

通过调用oracle其中的getUnderlyingPrice()函数来计算价格,getUnderlyingPrice()函数如图三所示。

?图四:UniswapLPOracleFactory智能合约中getUnderlyingPrice()函数

getUnderlyingPrice()函数在1390和1394行执行了图5中的consult()函数并在1404行执行了图6中的_calculatePriceOfLP函数来计算价格。

其中输入_calculatePriceOfLP函数的参数priceAsset1和priceAsset2来自consult函数。

图五:UniswapLPOracleFactory智能合约中consult()函数

图六:UniswapLPOracleFactory智能合约中_calculatePriceOfLP()函数

从以上两图中可以看出,攻击者质押的collateral可以借出的usdc数目或者价格的计算公式为:

(token0的价格*token0的数目token1的价格*token1的数目)/当前合同中LP代币的供给量

但是由于(token0的价格*token0的数目token1的价格*token1的数目)这一部分无法正确计算出当前uniswap中对于token0-token1代币对LP的总共锁定价格,因此计算出的攻击者存入的collateral可以借得的USDC的数目比正常情况多。

利用WarpFinance项目使用的oracle计算质押的LP代币资产价格错误的漏洞,最终攻击者从Warpfinance项目中获利约1462枚ETH代币,总价值约95万美元。

此外,攻击者还mint了价值大约600万美元的DAI-ETHLPshare,还有约100万美元的获利流入了uniswap和sushiswap的LP中。

总体来看,在本次攻击中,Warpfinance遭受的损失大约为770万美元。

值得一提的是,WarpFinance提到他们能够recover大约550万美元的损失,并将recover的资金用于补偿用户。

来源:https://twitter.com/warpfinance/status/1339751977836789767

CertiK安全技术团队认为这一次攻击特点在于攻击者采用了多种多次闪电贷来提供攻击所用启动资金,并利用了当前热门的预言机价格计算漏洞来进行攻击。

针对此类攻击,CertiK安全验证团队建议如下:

1.接入chainlink等完善的第三方价格预言机对所有代币价格提供实时价格数据

2.在智能合约内部建立细致的价格监控程序,对任何可能产生巨大波动的交易进行管制或者阻止。

欢迎搜索微信关注CertiK官方微信公众号,点击公众号底部对话框,留言免费获取咨询及报价!

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:0ms0-3:52ms