以小博大 —— UniLend 被黑事件分析
背景
2025年1月13日,據(jù)慢霧MistEye安全監(jiān)控系統(tǒng)監(jiān)測(cè),EVM鏈上的UniLend遭攻擊,損失約19.7萬(wàn)美元。慢霧安全團(tuán)隊(duì)對(duì)該事件展開分析并將結(jié)果分享如下:

2.利用閃電貸借入資產(chǎn):攻擊者通過(guò)閃電貸借入60MUSDC和5wstETH,并將wstETH轉(zhuǎn)換為6stETH。

4.借入目標(biāo)資產(chǎn):由于攻擊者事先存入了大量的USDC,于是通過(guò)調(diào)用borrow函數(shù),可以正常借入60stETH。此時(shí)由于借貸,stETHborrowShare增加至60239272000126842038。

6.贖回質(zhì)押的USDC:攻擊者再次調(diào)用redeemUnderlying函數(shù),贖回質(zhì)押的全部USDC。在redeemUnderlying函數(shù)中,首先調(diào)用_burnLPposition函數(shù)銷毀對(duì)應(yīng)的USDClendShare,此時(shí)的USDClendShare還剩下150237398。隨后,合約在checkHealthFactorLtv1函數(shù)中檢查健康因子,最后將贖回的USDC轉(zhuǎn)移給用戶。

7. 完成攻擊并獲利:最終,攻擊者返還閃電貸借入的USDC和wstETH,獲利離場(chǎng)。由于漏洞,攻擊者僅僅質(zhì)押了200USDC便可獲得60stEth?偨Y(jié)
本次攻擊的核心在于攻擊者利用redeemUnderlying函數(shù)使用了池子舊的token余額來(lái)計(jì)算健康因子,而此時(shí)用戶的token尚未從池中轉(zhuǎn)出,導(dǎo)致健康因子計(jì)算結(jié)果高于實(shí)際情況,系統(tǒng)錯(cuò)誤地認(rèn)為用戶的借貸狀態(tài)是安全的。攻擊者因此能夠繞過(guò)健康因子的正確校驗(yàn),*非*法獲取目標(biāo)資產(chǎn)。慢霧安全團(tuán)隊(duì)建議項(xiàng)目方在健康因子計(jì)算過(guò)程中,確保資產(chǎn)狀態(tài)的實(shí)時(shí)更新,從而避免類似情況的發(fā)生。
