近期,我們監控到一起針對 BnbSmartChain 上的項目 HFLH 的鏈上攻擊事件,
https://bscscan.com/tx/0xb61ae75835854e577657c25fe1891ff1c9ffb1b6b61ec4064396a08e222f679e
被攻擊的項目爲 HFLH ,攻擊者通過此次攻擊獲利約 9.099 BNB 約爲 5300 USD 。
首先,攻擊者通過 AAVE 利用f lashloan 借了 2002 WBNB,
接着,利用攻擊合約通過合約 Regist(0x4e5A3d30d1caEaB5CADaDB12ca84f0916C473D34) 進行注冊。
隨後,利用 Borrow 合約進行借貸。Borrow 合約的借貸代碼如下:
其中,借貸的金額計算方式爲:
我們可以看到,獲取HFLH的price的代碼如下:
HFLH的價格是通過計算 pancakeSwap 中 WBNB 和 HFLH 的余額比例來計算的。且
price=HFLHamount/WBNBamount ,可以看出HFLH的數量越多,price越大。
攻擊者通過轉入 1999 WBNB 來借出 HFLH ,通過上述公式可以計算出借出的 HFLH 的數量爲:
如下圖:
攻擊者又將借出的 HFLH 轉回到了 pancakeSwap Pair 中,隨後又利用 borrow 轉入 2.2 WBNB 借出 HFLH 。因爲攻擊者將借出的 HFLH 轉回到了 pancakeSwap Pair 中,相當於拉升了 price ,所以此次轉入 2.2 WBNB 可以借出更多的 HFLH 。
接着,攻擊者利用 pancakeSwap 的skim函數,將轉入的 HFLH 拿回,又調用了 withdrawPrincipal 來歸還並拿回第一次 borrow 時存入的 1999 WBNB 。
最後,攻擊者利用第二次借到的 HFLH 利用 pancakeSwap 兌換了 12.3 WBNB 。最終獲利 12.3 - 2.2 - 1.001(flashloan的利息) = 9.099 WBNB ,約爲 5300 USD 。
本次漏洞成因主要是因爲 HFLH 合約在獲取 HFLH Token 的價格時,通過單一來源 PancakeSwapV2 來計算,導致價格被攻擊者操縱,最終利用價差套利。建議項目方在設計經濟模型、價格計算機制和代碼運行邏輯時要多方驗證,合約上线前審計時盡量選擇多個審計公司交叉審計。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。