{"author":{"address":"0xbD0b3505cc45d97DdB3e7FAa75ED0Fc41c61A354","user":"https://learnblockchain.cn/people/52"},"content":{"body":"![登链封面(事件).jpg](https://img.learnblockchain.cn/attachments/2024/08/IuRlIHmw66c6a213a8ab3.jpg)\r\n\r\n# **背景介绍**\r\n\u003c!--StartFragment--\u003e\r\n\r\n近期，我们监控到一起针对 Ethereum 的链上攻击事件，https\\://etherscan.io/tx/0xfe8bc757d87e97a5471378c90d390df47e1b29bb9fca918b94acd8ecfaadc598\r\n\r\n被攻击的项目为 **Mantra DAO 的 DeFi 项目 Zenterest**。\r\n\r\n该项目是一个 **Compound Fork **的项目，提供借贷等功能，不过该项目已经关闭。\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![1.png](https://img.learnblockchain.cn/attachments/2024/08/laf8Lx7366c6a01cc3598.png)\u003c!--StartFragment--\u003e\r\n\r\n# **攻击及事件分析**\r\n\r\n首先，攻击者利用 Uniswap V3 通过 flash ，借入了 85.0085 WHITE \r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![2.png](https://img.learnblockchain.cn/attachments/2024/08/7rcU47yp66c6a0384984d.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n随后，攻击者将自己的2 000 MPH 转给了Zenterest，并 mint 了 751,165,762,743 / 1e18zenMPH ，即 MPH Token 的 underlying Token （价值 21200 MPH ）。\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![3.png](https://img.learnblockchain.cn/attachments/2024/08/WFPOateU66c6a07fcbb39.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n在 Compound 中， mintTokenAmount 为 mintAmount 除以exchangeRate（为underlying Token的价值） \r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![4.png](https://img.learnblockchain.cn/attachments/2024/08/lRDqQgbn66c6a08eed848.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n**exchageRate 的计算方式为**\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![5.png](https://img.learnblockchain.cn/attachments/2024/08/W6SwhwvO66c6a09d2e5a4.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n其中， **totalCash** 为 2,130,237,755,166,997,669,234 ，\r\n\r\n**totalBorrows** 为377,279,871,321,643,951,514,656 ，\r\n\r\n**totalReserves** 为336,296,661,332,642,353,710,274 ，\r\n\r\n**totalSupply** 为 1,527,610,653,739 。\r\n\r\n故 **exchangeRate **为 28,222,798,550.562313 。\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![6.png](https://img.learnblockchain.cn/attachments/2024/08/8hqKwBQ166c6a0aa42015.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n所以， mintToken 为 751,165,762,743 。\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![7.png](https://img.learnblockchain.cn/attachments/2024/08/NLyZyL0966c6a0b570a66.png)\r\n\r\n\r\n![8.png](https://img.learnblockchain.cn/attachments/2024/08/Bd5xaRZG66c6a0bdde8cd.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n接着，攻击者将从 Uniswap 中 flash 闪电贷获得的 85 WHITE Token 转给了 Zenterest。 \r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![9.png](https://img.learnblockchain.cn/attachments/2024/08/fWQQnO7l66c6a0ca272ef.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n这里，**攻击者是为了操纵 zenWHITE 的 borrowRate ，否则导致 borrowRate 过高，导致攻击失败。**\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![10.png](https://img.learnblockchain.cn/attachments/2024/08/dzaeTwJ266c6a0dc4a74b.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n然后，攻击者利用 cToken 的 borrow 借出 zenWHITE 的所有余额。\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![11.png](https://img.learnblockchain.cn/attachments/2024/08/UtGY6Q0g66c6a0e752e45.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n**漏洞点就出现在 ZenterestPriceFeed 价格预言机上，**\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![12.png](https://img.learnblockchain.cn/attachments/2024/08/MTL8Phgd66c6a0f2a4863.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n我们可以看到 ZenterestPriceFeed 的代码如下：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![13.png](https://img.learnblockchain.cn/attachments/2024/08/TdRuCCTV66c6a0fdc99c0.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n其价格是通过 updatePrice 和 updatePriceBatch 来更新的。\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n\r\n![14.png](https://img.learnblockchain.cn/attachments/2024/08/V31jhMmG66c6a1092815f.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n我们可以看到，此价格预言机中的价格已经570天没有更新，所有价格均已过期，我们找到最近一次更新 MPH Token 价格的交易如下：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![15.png](https://img.learnblockchain.cn/attachments/2024/08/KT19ED6966c6a11463a09.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n最近的更新 MPH Token 价格的交易为：**https\\://etherscan.io/tx/0x8938ec223516e0f09d904ee6187032f2038f3f768d754eb19b4f19450e7d185d**\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![16.png](https://img.learnblockchain.cn/attachments/2024/08/TdjPCqnI66c6a1217102a.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n其价格更新参数的数据结构为：\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![17.png](https://img.learnblockchain.cn/attachments/2024/08/LotFDxAW66c6a12e3dcd9.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n所以，通过 Zenterest Price Oracle 获取的 **MPH Token 的价格为 0x35b52f953f951 =944,836,858,607,953 ，而当前实际的价格为 0.4677 USD 。**\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![18.png](https://img.learnblockchain.cn/attachments/2024/08/13kvUzho66c6a13a8062c.png)\r\n\r\n\u003c!--StartFragment--\u003e\r\n\r\n同时，我们可以看到获取的 **WHITE Token 的价格为 66,570,137,662,599,764 ，而当前实际的价格为 4200 USD 。**\r\n\r\n攻击者投入 23200 MPH ，借贷 89.91 WHITE ，根据 Zenterest Price Oracle 获取的价格计算，\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n![19.png](https://img.learnblockchain.cn/attachments/2024/08/TJpEJfG166c6a143d4f0b.png)\r\n\u003c!--StartFragment--\u003e\r\n\r\n所以，攻击者可以借出 89.91 WHITE ，攻击者归还从 Uniswap 借到的 85 WHITE 和 0.0085 WHITE利息，最终获利 4.9 WHITE ，价值 21000 USD 。\r\n\r\n\u003c!--EndFragment--\u003e\r\n\r\n\r\n# **总结**\r\n\u003c!--StartFragment--\u003e\r\n\r\n本次漏洞的成因是项目已经不再使用，但是 cToken 却没有暂停，且价格预言机的价格没有更新，导致标的资产价格失真，**攻击者利用失真的价格来通过借贷进行获利，最终导致攻击者用极少的 MPH 掏空了项目方的 WHITE 代币。**\r\n\r\n\u003c!--EndFragment--\u003e","title":"零时科技 || Zenterest 攻击事件分析"},"history":null,"timestamp":1724293684,"version":1}