原文标题:《精析 DeFi 协议 Warp Finance「预言机」攻击事件》
原文来源:Beosin成都链安
北京时间 12 月 18 日 6 时许,DeFi 借贷协议 Warp Finance 遭到黑客攻击,造成了近 800 万美元的资产损失。
同时,Warp Finance 官方也发布推文表示,已在调查违规贷款情况,并建议用户暂停稳定币的存入,直到事件真相明朗。
成都链安团队在接到区块链安全态势感知平台(Beosin-Eagle Eye)报警后,第一时间对本次攻击事件进行了调查,结果发现:
1、Warp Finance 使用的是 Uniswap 交易对的相对价格作为其预言机的喂价源。
2、攻击者在了解到这个情况后,使用从闪电贷中获取的巨额资金操纵了 Uniswap 交易对的价格。
3、通过控制预言机喂价源信息,攻击者破坏了 Warp Finance 的借款价值判断标准。
4、在 Warp Finance 错误的数据环境下,攻击者窃取了远远超过抵押品价值的资产。
5、攻击者归还了从闪电贷中借出的款项。
0x8bb8dc5c7c830bac85fa48acad2505e9300a91c3ff239c9517d0cae33b595090
攻击者首先利用 Uniswap 进行闪电贷借款,并采用镶嵌式(还款前连续操作)的手法,在 WBTC2、USDC3 以及 USDT2 池中分别进行了 WETH 借贷,如下图所示:
其后,为扩大用于攻击的资金量,攻击者又在 dYdX 进行了闪电贷借款。如下图所示:
此时,借出的资金规模已高达近 2 亿美元. 接下来,攻击者向 Uniswap 的 DAI 2 交易池中注入流动性,获取了流动性代币 LP,如下图所示:
然后,将所获的 LP 代币抵押在 Warp Finance 合约中,交易及代码如下图:
完成抵押后,攻击者利用借来的资金,将 Uniswap DAI 2 池中的 DAI 兑换殆尽,如下图所示:
上述「准备工作」完成后,价格已处于被操纵状态。另一方面,Warp Finance 的预言机喂价源是来自 Uniswap 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 价格已被操纵,处于一个高位,因此,攻击者可以借出相比正常量更多的资产。
此后,攻击者即通过调用以下函数进行贷款。
在成功控制抵押价格后,攻击者便能利用错误的价格数据贷出远远超过抵押品价值的资产,从中获取暴利。最后,攻击者归还了闪电贷的款项,如下图所示:
很明显,这又是一起典型的由闪电贷巨款发起的预言机攻击事件。成都链安曾撰文指出,在当前黑客众多的攻击手法中,「预言机」喂价控制才是隐形的「元凶」。
同时,成都链安也郑重提醒 DeFi 开发者,应加强预言机的针对性测试,特别是在项目上线前,尽可能模拟价格操控攻击的各类场景,及时发现问题并找出解决方案,切实提高项目抗预言机攻击的能力。
短短一个月后,巨额的财产损失再一次告诫我们,在区块链领域中,安全防护工作尤为重要,许多系统安全漏洞属于防不胜防。因此,我们必须采取积极措施形成连续、有效的保护方案,才能在最大程度上提前规避问题。
此外,如在 DeFi 项目运行中存在安防方面的任何技术问题,采取第三方安全技术解决方案不失为一种行之有效的办法。最后,成都链安再次呼吁,要加强对项目预言机等多方面的定期安全检测,以防范此类事件的再度发生。
原文链接
欢迎加入律动 BlockBeats 官方社群:
Telegram 订阅群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方账号:https://twitter.com/BlockBeatsAsia