{"author":{"address":"0xbD0b3505cc45d97DdB3e7FAa75ED0Fc41c61A354","user":"https://learnblockchain.cn/people/52"},"content":{"body":"![登链封面(事件).jpg](https://img.learnblockchain.cn/attachments/2024/08/gTwIXLVl66cecaa8910f7.jpg)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n# **背景介绍**\r\n\r\n近期，我们监控到一起针对 **BnbSmartChain** 上的项目 **HFLH** 的链上攻击事件，\r\n\r\nhttps\\://bscscan.com/tx/0xb61ae75835854e577657c25fe1891ff1c9ffb1b6b61ec4064396a08e222f679e\r\n\r\n\r\n被攻击的项目为 HFLH ，攻击者通过此次攻击获利约 9.099 BNB 约为 5300 USD 。\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n# **攻击及事件分析**\r\n\r\n首先，攻击者通过 AAVE 利用f lashloan 借了 2002 WBNB，\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![1.png](https://img.learnblockchain.cn/attachments/2024/08/HyaLSJyC66cecad9f19d0.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n接着，利用攻击合约通过合约 **Regist(0x4e5A3d30d1caEaB5CADaDB12ca84f0916C473D34)** 进行注册。\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![2.png](https://img.learnblockchain.cn/attachments/2024/08/ReFjEZLw66cecaed91111.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n随后，利用 Borrow 合约进行借贷。Borrow 合约的借贷代码如下：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![3.png](https://img.learnblockchain.cn/attachments/2024/08/XmTdbULX66cecaf9a704c.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n其中，借贷的金额计算方式为：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![4.jpg](https://img.learnblockchain.cn/attachments/2024/08/gb3fO9dU66cecb06c3d35.jpg)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n我们可以看到，获取HFLH的price的代码如下：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![5.png](https://img.learnblockchain.cn/attachments/2024/08/3EoR8B6W66cecb11bf2ff.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\nHFLH的价格是通过计算 pancakeSwap 中 WBNB 和 HFLH 的余额比例来计算的。且\r\n\r\nprice=HFLHamount/WBNBamount ，可以看出HFLH的数量越多，price越大。\r\n\r\n**攻击者通过转入 1999 WBNB 来借出 HFLH ，通过上述公式可以计算出借出的 HFLH 的数量为：**\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n\r\n![6.jpg](https://img.learnblockchain.cn/attachments/2024/08/mtxFL1VL66cecb1dcfa85.jpg)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n如下图：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![7.png](https://img.learnblockchain.cn/attachments/2024/08/dZlf6jJ866cecb2956e69.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n攻击者又将借出的 HFLH 转回到了 pancakeSwap Pair 中，随后又利用 borrow 转入 2.2 WBNB 借出 HFLH 。因为攻击者将借出的 HFLH 转回到了 pancakeSwap Pair 中，相当于拉升了 price ，所以此次转入 2.2 WBNB 可以借出更多的 HFLH 。\r\n\r\n接着，攻击者利用 pancakeSwap 的skim函数，将转入的 HFLH 拿回，又调用了 withdrawPrincipal 来归还并拿回第一次 borrow 时存入的 1999 WBNB 。\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![8.png](https://img.learnblockchain.cn/attachments/2024/08/apF0Y5Vu66cecb36b0bcc.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n最后，攻击者利用第二次借到的 HFLH 利用 pancakeSwap 兑换了 12.3 WBNB 。**最终获利 12.3 - 2.2 - 1.001(flashloan的利息) = 9.099 WBNB ，约为 5300 USD 。**\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n\r\n# **总结**\r\n\u003c!--StartFragment--\u003e\r\n\r\n**本次漏洞成因主要是因为 HFLH 合约在获取 HFLH Token 的价格时，通过单一来源 PancakeSwapV2 来计算，导致价格被攻击者操纵，最终利用价差套利**。建议项目方在设计经济模型、价格计算机制和代码运行逻辑时要多方验证，合约上线前审计时尽量选择多个审计公司交叉审计。\r\n\r\n\u003c!--EndFragment--\u003e","title":"零时科技 || HFLH 攻击事件分析"},"history":null,"timestamp":1724828538,"version":1}