损失约540万美元!dForce项目攻击事件分析及PoC

区块链安全 2年前 (2023) admin
426 0 0

事件背景

根据NUMEN链上监控显示,Feb-09-2023 11:10:22 PM +UTCOptimisticArbitrum链上dForce遭到闪电贷攻击,共损失2364ETH103万枚USDC72万枚USX,价值约540万美元。

攻击者地址:0xe0d551017c0111ac11108641771897aa33b2817c

攻击者合约:0xee29b6aee6e4783db176946e4e8f1e5fdcd446a7

攻击交易:0x5db5c2400ab56db697b3cc9aa02a05deab658e1438ce2f8692ca009cc45171dd

损失约540万美元!dForce项目攻击事件分析及PoC

攻击分析

攻击者首先通过9次闪电贷攻击获得初始资金6.8万枚ETH。随后通过Vyper_contract.AddLiquidity添加流动性得到6.5万枚wstETHCRV。

损失约540万美元!dForce项目攻击事件分析及PoC

将1900枚wstETHCRV质押获取1900枚wstETHCRV-gauge,并获得208万枚USX。

损失约540万美元!dForce项目攻击事件分析及PoC

随后在Vyper_contract.remove_liquidity移除流动性操作中调用raw_call(msg.sender)攻击合约,并通过攻击合约回调vMUSX.liquidateBorrow进行两次清算。

损失约540万美元!dForce项目攻击事件分析及PoC

之后正常调用Vyper_contract.remove_liquidity移除获利流动性资金,并将资金兑换为ETH,归还闪电贷后获利离场。

损失约540万美元!dForce项目攻击事件分析及PoC

漏洞核心

关键问题是在Vyper_contract合约的remove_liquidity函数和get_virtual_price函数(Vyper_contract合约源代码,可查阅https://arbiscan.io/address/0x6eb2dc694eb516b16dc9fbc678c60052bbdd7d80#code)。我们首先来看remove_liquidity函数:

损失约540万美元!dForce项目攻击事件分析及PoC

移除流动性时,会先将ETH发送给调用者,之后将调用者LP Token销毁掉。

攻击者利用了这里存在的两个问题:

1. 首先是将ETH发送给攻击者时,触发攻击者合约的fallback去调用其他方法;
2.  在回调途中利用LP Token总量未更新获取价格。

攻击者在回调vMUSX.liquidateBorrow时使用了Vyper_contract.get_virtual_price方法获取价格。

损失约540万美元!dForce项目攻击事件分析及PoC

接下来,分析get_virtual_price函数:

损失约540万美元!dForce项目攻击事件分析及PoC

由于移除流动性时,没有先对LP Token进行销毁,攻击者回调清算时正好使用了get_virtual_price用作价格。由于计算价格时LP Token总额并未减小,也就是token_supply增大,导致最终价格变小。攻击者利用未更新的LP总量进行价格计算,最终清算获取大量资金。

攻击复现

EXP https://github.com/numencyber/SmartContractHack_PoC.git

测试结果如下:

损失约540万美元!dForce项目攻击事件分析及PoC

在最后的闪电贷回调执行完,打一下获利金额的日志。

损失约540万美元!dForce项目攻击事件分析及PoC

损失约540万美元!dForce项目攻击事件分析及PoC

用调用栈数据一致。

总结

NUMEN实验室提醒项目方,代币价格需要进行严格把控,多种喂价汇总在一块时,需要考虑价格计算的合理程度及喂价是否存在被控制的风险,并且对于合约代码逻辑遵循先判断,后写入变量,再进行外部调用的编码规范(Checks-Effects-Interactions)会使项目更加安全稳定,合约上线前进行多家安全审计,保障合约风险尽可能被消除在链下。NUMEN专注于为Web3生态安全保驾护航。

损失约540万美元!dForce项目攻击事件分析及PoC

Numen 官网
https://numencyber.com/ 
GitHub
https://github.com/NumenCyber
Twitter
https://twitter.com/@numencyber
Medium
https://medium.com/@numencyberlabs
LinkedIn
https://www.linkedin.com/company/numencyber/

原文始发于微信公众号(Numen Cyber Labs):损失约540万美元!dForce项目攻击事件分析及PoC

版权声明:admin 发表于 2023年2月11日 下午3:04。
转载请注明:损失约540万美元!dForce项目攻击事件分析及PoC | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...