{"content":{"title":"零时科技 || BlueBerryProtocol 攻击分析","body":"![顶部banner2.jpg](https://img.learnblockchain.cn/attachments/2024/03/4FIzx6Ro65e6c4ef5ac27.jpg)\r\n\r\n# | 背景\r\n<!--StartFragment-->\r\n\r\n2024年2月25日，我们监测到Ethereum上的一起攻击事件：https\\://etherscan.io/tx/0xf0464b01d962f714eee9d4392b2494524d0e10ce3eb3723873afd1346b8b06e4，目标为BlueBerryProtocol，损失资金约为455 ETH 1.4M USD。幸运的是该攻击被一名ID为c0ffeebabe白帽拦截（0xC0ffeEBABE5D496B2DDE509f9fa189C25cF29671\\[c0ffeebabe.eth]）,最终归还了366.5 ETH 1.2 M USD。\r\n\r\nBlueBerryProtocol是一个基于Compound fork的DeFi项目，提供借贷，抵押等服务。具体的运行模式如下图：\r\n\r\n<!--EndFragment-->\r\n\r\n![Pasted image 20240227162225.png](https://img.learnblockchain.cn/attachments/2024/03/dzEnwiyf65e6c5185e8d8.png)\r\n\r\n# | 攻击分析\r\n<!--StartFragment-->\r\n\r\n攻击者首先从Balancer中通过闪电贷，借了1个WETH。\r\n\r\n<!--EndFragment-->\r\n\r\n![Pasted image 20240227142222.png](https://img.learnblockchain.cn/attachments/2024/03/1nPpExKB65e6c53a65f9d.png)\r\n<!--StartFragment-->\r\n\r\n随后，攻击者将1个WETH抵押到BlueBerryProtocol中，并mint了1个bWETH。接着，攻击者利用抵押的1个bWETH作为抵押，分别利用borrow借走了8616个OHM（Decimal=9）、913262个USDC（Decimal=6）、6.86个WBTC（Decimal=8)。\r\n\r\n<!--EndFragment-->\r\n\r\n![Pasted image 20240227142251.png](https://img.learnblockchain.cn/attachments/2024/03/aDdxvW8K65e6c54ec78ad.png)\r\n<!--StartFragment-->\r\n\r\n最后，攻击者通过Uniswap将获得的OHM、USDC、WBTC换成457 ETH。\r\n\r\n<!--EndFragment-->\r\n# | 漏洞分析\r\n<!--StartFragment-->\r\n\r\n问题的根本原因是代码再处理不同资产时，尾数处理错误。WETH的decimal为18，OHM的decimal为9，USDC的decimal为6，WBTC的decimal为8。\r\n\r\n但是，BlueberryProtocol的price oracle在处理token的价格时，均按照decimal=18进行scale。\r\n\r\n<!--EndFragment-->\r\n\r\n![Pasted image 20240227161711.png](https://img.learnblockchain.cn/attachments/2024/03/BQJcmdve65e6c5789788c.png)\r\n\r\n<!--StartFragment-->\r\n\r\n导致OHM的价值缩水1e9，USDC价值缩水1e12，WBTC价值缩水1e10。导致攻击者通过仅仅1ETH的抵押便接走了价值460ETH的资产。\r\n\r\n<!--EndFragment-->\r\n\r\n# | 总结\r\n\r\n<!--StartFragment-->\r\n\r\n本次漏洞在于项目方使用同一份代码处理不同的代币，且没有考虑到不同代币的decimal不同导致的。造成decimal较小的资产大量缩水，从而被攻击者以极低的代价作为抵押借走。建议项目方在合约上线前，针对智能合约进行充分的审计和交叉审计，避免此类安全问题。\r\n\r\n<!--EndFragment-->"},"author":{"user":"https://learnblockchain.cn/people/52","address":null},"history":null,"timestamp":1709622838,"version":1}