# Oracle Attacks

> Oracle 攻击是一种网络攻击，它利用系统对预言机的信任中的漏洞，可能操纵提供给区块链智能合约的数据...

- Canonical URL: https://iq.wiki/zh/wiki/oracle-attacks
- Categories: Projects & Protocols
- Tags: DeFi
- Created: 2023-08-18T11:24:33.211Z
- Last updated: 2023-08-18T10:24:33.211Z
- Source: IQ.wiki — the world's largest blockchain and crypto encyclopedia (https://iq.wiki)

---

**Oracle 攻击**是指一种网络攻击，它利用计算机系统对外部数据源（称为“预言机”）的信任中的漏洞。预言机是第三方数据提供商，向 [智能合约](https://iq.wiki/wiki/smart-contract) 和 [去中心化应用程序](https://iq.wiki/wiki/decentralized-application) (DApps) 提供信息，这些应用程序位于 [区块链](https://iq.wiki/wiki/blockchain) 网络上。这些数据源通过提供真实世界的数据（例如价格信息、天气状况和其他外部事件），在使智能合约能够自主执行方面发挥着关键作用。[\[1\]](#cite-id-4d1g843lf34)[\[4\]](#cite-id-pvgmpjp00a)


## Oracle 攻击的性质

Oracle 攻击通常涉及操纵预言机提供的信息，以欺骗 [智能合约](https://iq.wiki/wiki/smart-contract) 或 [DApp](https://iq.wiki/wiki/decentralized-application)。这些攻击的目标可能各不相同，但通常包括经济利益或破坏去中心化系统的正常运行。攻击者可能会尝试更改数据馈送，以触发智能合约中意外的操作，从而导致不良结果。[\[2\]](#cite-id-90eh3gsqnl9)

## Oracle 攻击的类型

1\. 价格操纵：在 [去中心化金融](https://iq.wiki/wiki/defi) (DeFi) 应用程序的背景下，攻击者可以操纵价格预言机以提供虚假的价格数据。这可以被利用来执行有利可图的交易或导致借贷平台内的清算。[\[5\]](#cite-id-rzq11h97qnb)

2\. 篡改外部数据：攻击者可能会破坏数据源本身或其通信渠道，以将虚假信息注入到预言机馈送中。例如，攻击者可以伪造保险 [智能合约](https://iq.wiki/wiki/smart-contract) 中使用的天气数据，以欺诈性地索赔赔偿。[\[4\]](#cite-id-pvgmpjp00a)

3. [时间戳](https://iq.wiki/wiki/timestamp) 攻击：攻击者可能会通过预言机提供被操纵的时间戳，从而利用时间敏感的 [智能合约](https://iq.wiki/wiki/smart-contract)。这可能会扰乱基于时间的功能的正确执行。

## Oracle 攻击对 DeFi 安全的影响

### 协议破产

Oracle 操纵对借贷协议构成挑战，可能会导致更大规模的破产局面。例如，oracle 漏洞有可能在协议内引发不利的债务头寸，其中抵押品的价值低于用户的债务。鉴于借款人可能缺乏偿还债务的动机，这种情况可能会迫使流动性提供者承担损失。[\[2\]](#cite-id-90eh3gsqnl9)

### 潜在的经济失败

除了协议破产的风险外，oracle 攻击还有可能在各种情况下引发全面的经济失败。例如，如果 oracle 不准确地报告价格波动，算法 [稳定币](https://iq.wiki/wiki/stablecoin) 和 rebase 代币可能会失去其预期的价格挂钩。[\[2\]](#cite-id-90eh3gsqnl9)

### 对用户体验的影响

为了避免破产，[DeFi](https://iq.wiki/wiki/defi) 货币市场密切监控 [抵押品](https://iq.wiki/wiki/collateral) 资产的市场价值，并在债务头寸达到抵押不足的水平之前执行清算。但是，如果协议基于不准确的 oracle 数据进行计算，则这些清算可能是不合理的。[\[2\]](#cite-id-90eh3gsqnl9)

## 缓解和预防

缓解 oracle 攻击的措施包括：

1\. 多个 Oracle：使用多个独立的 oracle 并聚合其数据可以降低单个恶意源操纵的风险。[\[3\]](#cite-id-nlqez4qx647)

2\. 去中心化 Oracle：利用从各种提供商处获取数据并采用共识机制的去中心化 oracle 网络可以使攻击者更难以操纵数据馈送。[\[2\]](#cite-id-90eh3gsqnl9)[\[3\]](#cite-id-nlqez4qx647)

3\. 经济激励：设计鼓励 oracle 提供商诚实行为的机制，例如要求 [抵押品](https://iq.wiki/wiki/collateral) 或 [质押](https://iq.wiki/wiki/staking)，可以阻止恶意活动。[\[4\]](#cite-id-pvgmpjp00a)

4\. Oracle 升级和治理：定期更新和改进 oracle 设计，同时让社区参与治理，可以帮助解决新兴漏洞。[\[4\]](#cite-id-pvgmpjp00a)[\[5\]](#cite-id-rzq11h97qnb)

## Oracle 攻击的示例

* 2019 年 12 月，[Synthetix](https://iq.wiki/wiki/synthetix) 遭受了另一次攻击，该攻击归因于价格 oracle 操纵。值得注意的是，此事件模糊了链上和链下价格数据之间的界限。[\[5\]](#cite-id-rzq11h97qnb)
* 在 [Harvest Finance](https://iq.wiki/wiki/harvest-finance) 黑客攻击期间，攻击者通过执行涉及一种 oracle 攻击的闪电贷攻击，成功入侵了该协议的池。在此事件中，黑客通过进行交易降低了 [USDC](https://iq.wiki/wiki/usdc) 在 Curve 池中的价值，从而操纵了其价格。随后，攻击者以被操纵的较低价格进入 Harvest 池，通过反向交易将 USDC 价值恢复到其原始状态，然后以较高的价格退出池。[\[3\]](#cite-id-nlqez4qx647)[\[5\]](#cite-id-rzq11h97qnb)[\[6\]](#cite-id-bmr7qqrc517)
* 在另一起事件中，基于 [Ethereum](https://iq.wiki/wiki/ethereum) 的借贷协议 [bZx](https://iq.wiki/wiki/bzx) 发生了一起漏洞，攻击者利用该漏洞创建了一个抵押不足的头寸。这种利用导致攻击者获得了约 370,000 美元的利润，同时导致 [bZx](https://iq.wiki/wiki/bzx) 借贷池内约 620,000 美元的重大股权损失。[\[3\]](#cite-id-nlqez4qx647)
