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

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

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

闪电贷作为新式金融产品,被认为是金融范畴区块链运用的一大跳跃式进步。

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

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

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

北京时间12月17日上午,CertiK安全技能团队收到闪电贷进犯预警,发现一笔针对Warp Finance项目的闪电贷进犯。

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

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

CertiK:Warp Finance闪电贷攻击事件分析

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

2. 进犯者将假贷所得代币放入uniswap的WETH-DAI流动性池中,铸造得到约94349个流动性证明LP代币,然后将一切的这些LP代币经过调用图一中坐落0x13db1cb418573f4c3a2ea36486f0e421bc0d2427地址WarpVaultLP智能合约中provideCollateral()函数存入到Warp Finance的Vault中。

CertiK:Warp Finance闪电贷攻击事件分析

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

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

CertiK:Warp Finance闪电贷攻击事件分析

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

图二中1582行中的getBorrowLimit()函数会经过调用同一合约中的getTotalAvailableCollateralValue(),来间接调用oracle的getUnderlyingPrice()函数来取得当时进犯者存入的collateral的价格,

CertiK:Warp Finance闪电贷攻击事件分析

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

经过查看价格预言机oracle地址的值, 可以发现WarpControl智能合约调用了坐落0x4A224CD0517f08B26608a2f73bF390b01a6618c8地址的UniswapLPOracleFactory智能合约作为核算质押财物的价格预言机oracle。

经过调用oracle其间的getUnderlyingPrice()函数来核算价格,getUnderlyingPrice()函数如图三所示。

CertiK:Warp Finance闪电贷攻击事件分析

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

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

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

CertiK:Warp Finance闪电贷攻击事件分析图五:UniswapLPOracleFactory智能合约中consult()函数CertiK:Warp Finance闪电贷攻击事件分析

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

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

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

可是由于(token0的价格 * token0的数目 + token1的价格 * token1的数目) 这一部分无法正确核算出当时uniswap中对于token0-token1代币对LP的一共锁定价格,因而核算出的进犯者存入的collateral可以借得的USDC的数目比正常情况多。

使用Warp Finance项目运用的oracle核算质押的LP代币财物价格过错的漏洞,最终进犯者从Warp finance项目中获利约1462枚ETH代币,总价值约95万美元。

此外,进犯者还mint了价值大约600万美元的DAI-ETH LP share,还有约100万美元的获利流入了uniswap和sushiswap" target="_blank">sushiswap的LP中。

整体来看,在本次进犯中,Warp finance 遭受的丢失大约为770万美元。

值得一提的是,Warp Finance 提到他们可以recover大约550万美元的丢失,并将recover的资金用于补偿用户。

CertiK:Warp Finance闪电贷攻击事件分析

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

CertiK安全技能团队认为这一次进犯特点在于进犯者采用了多种屡次闪电贷来供给进犯所用启动资金,并使用了当时热门的预言机价格核算漏洞来进行进犯。针对此类进犯,CertiK安全验证团队建议如下:

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

2. 在智能合约内部建立详尽的价格监控程序,对任何或许发生巨大动摇的交易进行管制或者阻挠。

视野开拓

“底层阶级”一词是缪尔达尔(Gua Mydal)在1963年首次使用的,用于标识“去工业化”的危险——可能会使越来越多的人口永久性失业和没有资格受雇;不是因为那些失业者自身的不足或道德过错,而纯粹仅仅是因为缺乏能满足所有需要和渴望获得工作的人的岗位。-《工作、消费、新穷人》

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注