9

精析 DeFi 协议 Warp Finance “预言机”攻击事件

 3 years ago
source link: https://www.tuoluocaijing.cn/article/detail-10037214.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

精析 DeFi 协议 Warp Finance “预言机”攻击事件

成都链安 原创 2020-12-18 18:59 热度 16434
分享

微信扫一扫:分享



微信里点“发现”,扫一下 二维码便可将本文分享至朋友圈

北京时间12月18日6时许,DeFi借贷协议Warp Finance遭到黑客攻击,造成了近800万美元的资产损失。

75%7Cimageslim

同时,Warp Finance官方也发布推文表示,已在调查违规贷款情况,并建议用户暂停稳定币的存入,直到事件真相明朗。

成都链安团队在接到区块链安全态势感知平台(Beosin-Eagle Eye)报警后,第一时间对本次攻击事件进行了调查,结果发现:

1、Warp Finance使用的是Uniswap交易对的相对价格作为其预言机的喂价源。

2、攻击者在了解到这个情况后,使用从闪电贷中获取的巨额资金操纵了Uniswap交易对的价格。

3、通过控制预言机喂价源信息,攻击者破坏了Warp Finance的借款价值判断标准。

4、在Warp Finance错误的数据环境下,攻击者窃取了远远超过抵押品价值的资产。

5、攻击者归还了从闪电贷中借出的款项。

攻击交易地址

0x8bb8dc5c7c830bac85fa48acad2505e9300a91c3ff239c9517d0cae33b595090

攻击过程精析

攻击者首先利用Uniswap进行闪电贷借款,并采用镶嵌式(还款前连续操作)的手法,在WBTC2、USDC3以及USDT2池中分别进行了WETH借贷,如下图所示:

ffac9dffa2f6983508300d011d6c09c6

其后,为扩大用于攻击的资金量,攻击者又在dYdX进行了闪电贷借款。如下图所示:

f67f3199cbf8869d4ed88d48f7bb891d

此时,借出的资金规模已高达近2亿美元.接下来,攻击者向Uniswap的DAI 2交易池中注入流动性,获取了流动性代币LP,如下图所示:

925084befc5707fcabfe397cfd2612a6

然后,将所获的LP代币抵押在Warp Finance合约中,交易及代码如下图:

df851635200e3cc6ba37ebecef2d7bfd

完成抵押后,攻击者利用借来的资金,将Uniswap DAI 2池中的DAI兑换殆尽,如下图所示:

52b41092a627b1ca393b6516dc93c0a8

上述“准备工作”完成后,价格已处于被操纵状态。另一方面,Warp Finance的预言机喂价源是来自Uniswap LP代币的价格数据,代码如下图:

fc43bfcbc49e3f0c9a986231049f900f

LP代币价格算法

(A代币的价格×A代币池中的持有量+B代币的价格×B代币池中的持有量)/LP代币的总量

其中,A代币与B代币的价格是由Uniswap的“对应代币与稳定币”交易对计算得出。

因此,在上述情况下,A、B代币的价格处于正常水平、而交易对中的A、B代币相对价格则已经发生异常。这是因为Uniswap采用恒定乘积做市商机制,即A×B=K。当出现大量的兑换某一种代币时,就会产生巨大的滑点,从而产生价差。

假设:A=A代币数量;B=B 代币数量;AP=A代币价格;BP=B代币价格

已知:A×B=k(在未添加流动性时K恒定);Warp价格=(AP×A+BP×B)/totalLP

因AP和BP在本事件中皆为恒定,故可设AP=X1×BP,化简可得Warp价格=((X1×K)/B+B)×BP/totalLP

可得结论为,X1×K 、BP和totalLP在攻击中都是常数,随着B的数量增大,LP价格就会提高。

攻击者正是利用了这一点,使用从闪电贷获取的巨额资金在交易池中海量添加其中一种代币的流动性,迫使另一种代币也随之巨增,从而引发LP的价格失衡。由于LP价格已被操纵,处于一个高位,因此,攻击者可以借出相比正常量更多的资产。

此后,攻击者即通过调用以下函数进行贷款。

a42ff3f00e5dd6d1069c3d4c8b5ebe2e

在成功控制抵押价格后,攻击者便能利用错误的价格数据贷出远远超过抵押品价值的资产,从中获取暴利。最后,攻击者归还了闪电贷的款项,如下图所示:

51a983965989ee4bfd472bcd66681486

很明显,这又是一起典型的由闪电贷巨款发起的预言机攻击事件。成都链安曾撰文指出,在当前黑客众多的攻击手法中,“预言机”喂价控制才是隐形的“元凶”。

同时,成都链安也郑重提醒DeFi开发者,应加强预言机的针对性测试,特别是在项目上线前,尽可能模拟价格操控攻击的各类场景,及时发现问题并找出解决方案,切实提高项目抗预言机攻击的能力。

短短一个月后,巨额的财产损失再一次告诫我们,在区块链领域中,安全防护工作尤为重要,许多系统安全漏洞属于防不胜防。因此,我们必须采取积极措施形成连续、有效的保护方案,才能在最大程度上提前规避问题。

此外,如在DeFi项目运行中存在安防方面的任何技术问题,采取第三方安全技术解决方案不失为一种行之有效的办法。最后,成都链安再次呼吁,要加强对项目预言机等多方面的定期安全检测,以防范此类事件的再度发生。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK