前言
11月13日,知道创宇区块链安全实验室 监测到 BSC 上的 DeFi 协议 welnance.finance 遭遇闪电贷价格操控攻击。实验室第一时间对本次事件深入跟踪并进行分析。
事件分析
基础信息
交易哈希:0xf7a9c59953763a57f412b2e45455e70192b44356c602f7c79ddbfa9cb05f440b
攻击合约:0x96e28c2ffa1bbf45929051289ecfa8aa8039e23f
攻击者地址:0xa6516b0fc4e98a942decd6ef733cae29b74a0951
流程
1.攻击者从 WBNB-BUSD 闪电贷 1,000,000 BUSD
2.在 pancakeSwap 的 USD-WEL 交易对中用1,000,000 BUSD 换取 169,882 WEL
3.发送 80枚 WEL 到 wlWEL,获取到 4,056 wlWEL
4.分别从 wlUSDT 借 8,651 BUSD、wlBTC 借 0.06 BTC、wlETH 借 0.7 ETH
5.将剩余的 169,802 WEL 兑换成 999,893 BUSD,并归还第一步的闪电贷
6.将借贷获取的 5,994 BUSD、 0.7 ETH、0.06 BTC转入攻击者地址
原理分析
通过分析,用户在 wlXXX 池借贷时首先会调用 comptroller 的 borrowAllowed 方法判断借贷条件是否成立
然后调用 comptroller 的 enterMarkets 注入 wlWEL 资产作为质押品进 comptroller 中
在 comptroller 的 borrowAllowed 方法中,getHypotheticalAccountLiquidityInternal 方法会计算当前用户的总持仓资产价值 是否大于总借贷价值
由于第 2 步使用巨量 BUSD 兑换 WEL 操作,导致 WEL 价格直线飙升,进而导致 第 3 步的 wlWEL 价值飙升,攻击合约以此分别向 wlBTC, wlETH, wlUSDT 借款,最后卖出闪电贷部分获得的 WEL,归还 BUSD 闪电贷离场。
总结
这次闪电贷攻击的核心原因在于对抵押物价值的计算易被操控,使得攻击者通过闪电贷的巨额资金抬高了抵押物的价格,而超额借出了 Welnance 的 wlBTC, wlETH, wlUSDT 金库的资产。
此前通过闪电贷操纵价格的攻击事件频发 知道创宇区块链安全实验室 在此提醒,任何有关资金问题的操作都需要慎重考虑,合约审计、风控措施、应急计划等都有必要切实落实。