{"content":{"title":"Cheese Bank 事件：根本原因分析","body":"在这篇博客中，我们分析了发生在2020年11月6日19:22:21 PM +UTC的Cheese Bank攻击。该攻击是在我们审查恶意快贷时发现的。这次攻击利用其测量资产价格的方式中的一个漏洞，从Cheese Bank盗取了330万美元的USDC/USDT/DAI。以下是技术细节的详细说明。\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/07tpTEbcv9HV20Fg5.jpg)\r\n\r\n## 摘要\r\n\r\nCheese Bank是一个基于以太坊的去中心化自主数字银行，允许投资者管理资产，包括借贷、基金管理、保险服务等。然而，它在基于AMM的预言机（即，Uniswap）上测量抵押品价值的方法存在缺陷。因此，通过在Uniswap上基于快贷操纵抵押物价格的方式，该攻击成功地实施了一系列恶意借贷操作，导致Cheese Bank损失了330万美元的USDC/USDT/DAI。\r\n\r\n## 背景\r\n\r\n去中心化金融（DeFi）生态系统最近迅速增长，总锁仓价值超过160亿美元。随着这种指数级增长，恶意行为者对操纵和攻击脆弱的DeFi协议的动机也随之增加。在最近的许多DeFi攻击中，快贷被用于允许用户开启无担保贷款，唯一的要求是贷款必须在同一交易中偿还，否则将回滚。这与传统DeFi借贷产生了显著的区别，后者通常要求用户在开始时对贷款进行过度抵押。\r\n\r\n在2020年11月，PeckShield的研究人员报告了两次快贷攻击，即[Akropolis](https://blog.peckshield.com/2020/11/13/akropolis)和[Value DeFi](https://blog.peckshield.com/2020/11/15/valuedefi)。在一系列攻击中，我们看到恶意行为者使用快贷瞬时借入、交换、存入并再次借入大量代币，以人工操纵单个交易所上特定代币的价格（例如，Uniswap、Curve）。这一过程本质上是打开了一个缺口，使攻击者能够利用该交易所的异常定价。在这篇博客文章中，我们详细说明了发生在Cheese Bank的最近事件——一个基于以太坊的去中心化自主数字银行。\r\n\r\n## 细节\r\n\r\n### 攻击过程\r\n\r\n我们从攻击背后的交易开始分析：[0x600a…f1cc](https://etherscan.io/tx/0x600a869aa3a259158310a233b815ff67ca41eab8961a49918c2031297a02f1cc)。该攻击从一个恶意合约（位于[0x9e02](https://etherscan.io/address/0x9e0259437804c7bf175421a451bc80611a0b93c3)）初始化，具体过程如下：\r\n\r\n- 第一步：从dYdX借入21k ETH的快贷\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/04TaPm8BnyYtidH1q.png)\r\n\r\n第一步：dYdX快贷21k ETH\r\n\r\n- 第二步：在UniswapV2上用50 ETH交换107k CHEESE\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/0xwFJWz7GBlukT9m6.png)\r\n\r\n第二步：在UniswapV2上用50 ETH交换107k CHEESE\r\n\r\n- 第三步：在UniswapV2的流动性池中添加107k CHEESE和相应的78 ETH，并获得UNI\\_V2 LP代币。\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/0QH47yndIC7trCDEN.png)\r\n\r\n第三步：在UniswapV2上进行addLiquidity(107k CHEESE, 78 ETH)\r\n\r\n- 第四步：使用第三步获得的所有LP代币铸造sUSD\\_V2代币。这允许攻击合约将这些LP代币作为抵押贷款用以从Cheese Bank借入加密资产。\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/0Ee_dfCnGjDzdrPhK.png)\r\n\r\n第四步：使用UNI\\_V2 LP代币铸造sUSD\\_V2代币\r\n\r\n- 第五步：通过将20k ETH交换为288k CHEESE在UniswapV2上提升CHEESE价格，这使得第一步的UNI\\_V2 LP代币作为抵押品对Cheese Bank来说更为有价值。这是这次事件中的关键一步，因为Cheese Bank使用流动性池中WETH的数量来估算相应的LP代币价格。经过操纵的UNI\\_V2-CHEESE-ETH池（存有20k以上的WETH）允许攻击者通过合法的`borrow()`调用从Cheese Bank中抽走所有的USDC、USDT和DAI。\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/0ExBZeq4e0CVKHiht.png)\r\n\r\n第五步：在UniswapV2上通过将20k ETH兑换成288k CHEESE来提高CHEESE价格\r\n\r\n- 第六步：刷新Cheese Bank的价格数据。攻击者故意调用`CheesePriceOracle::refresh()`函数来刷新从流动性池中的WETH数量和来源于UNI\\_V2-USDT-ETH池的ETH价格衍生出的UNI\\_V2-CHEESE-ETH LP代币的价格。具体来说，`CheesePriceOracle::fetchLPAnhorPrice()`函数获取UNI\\_V2-CHEESE-ETH合约的`wEthBalance`。在传入的`ethPrice`的情况下，`totalValue`由`wEthBalance x 2 x ethPrice`得出。因此，UNI\\_V2-CHEESE-ETH LP代币的单价由`totalValue / LP代币的总供应量`计算得出。这意味着，如果恶意行为者能够以某种方式增加池中的WETH数量（例如通过闪电借贷以太币的`addLiquidity()`），那么LP代币的价格就会增加。\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/0rwwH7Ps8LRYLEoiQ.png)\r\n\r\n第六步：刷新Cheese Bank的价格\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/0L0mklWIHeynVEAir.png)\r\n\r\nCheesePriceOracle::fetchLPAnchorPrice()\r\n\r\n- 第七步：通过`borrow()`调用从Cheese Bank中抽走USDC、USDT、DAI。\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/0UhAa3pILYw_jsU4x.png)\r\n\r\n第七步：从Cheese Bank借入2m USDC\r\n\r\n除了借入2m USDC外，1.23m USDT和87k DAI也通过`borrow()`从Cheese Bank中被借出。请注意，攻击者实际上在`borrow()`之前检查了余额。如下面所示来自[https://oko.palkeo.com/](https://oko.palkeo.com/)的截图所示，确定从攻击合约中`borrow()`到的USDC/USDT/DAI的确切余额。\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/0Pqstd6secluzk1WA.png)\r\n\r\n提取USDC/USDT/DAI\r\n\r\n- 第八步：在UniswapV2上将288k CHEESE兑换回19.98k ETH。现在，恶意行为者收获了330万美元等值的USDC、USDT和DAI。她需要将21k ETH的快贷还给dYdX，首选的选择是这288k CHEESE，价值填补了大约20k ETH。\r\n- 第九步：在UniswapV2上用58k USDC兑换132 ETH。由于在之前的步骤中消耗了一些以太（例如，支付给Uniswap的费用），恶意行为者需要用USDC再购买一些以太。\r\n- 第十步：将被攻击的资产收集到[0x02b7](https://etherscan.io/address/02b7165d0916e373f0235056a7e6fccdb82d2255)中。\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/03ZXI1eyCH6-lyLL4.png)\r\n\r\n第十步：收集被攻击的资产\r\n\r\n- 第十一步：将21k ETH的快贷归还给dYdX\r\n\r\n![](https://img.learnblockchain.cn/2025/03/09/0GHehEkae8kHJ9X_-.png)\r\n\r\n第十一步：将21k ETH快贷归还给dYdX\r\n\r\n### 余波\r\n\r\n再次，基于AMM的预言机允许攻击者带走`2m USDC + 1.23m USDT + 87k DAI + 2 ETH`，总损失约为330万美元。由于基于AMM的预言机（例如，Uniswap，Curve）常常成为许多近期攻击的目标，我们建议在参考它们作为预言价格时要格外小心，因为它们很容易被操纵。\r\n\r\n## 关于我们\r\n\r\nPeckShield Inc.是一家领先的区块链安全公司，致力于提高当前区块链生态系统的安全性、隐私性和可用性。如有任何商业或媒体查询（包括智能合约审计的需求），请通过[telegram](https://t.me/peckshield)、[twitter](https://twitter.com/peckshield)或[邮件](mailto:contact@peckshield.com)与我们联系。\r\n\r\n>- 原文链接： [peckshield.medium.com/ch...](https://peckshield.medium.com/cheese-bank-incident-root-cause-analysis-d076bf87a1e7)\r\n>- 登链社区 AI 助手，为大家转译优秀英文文章，如有翻译不通的地方，还请包涵～"},"author":{"user":"https://learnblockchain.cn/people/26974","address":null},"history":null,"timestamp":1741497467,"version":1}