Oracle Attacks
Oracle 攻击是指一种网络攻击,它利用计算机系统对外部数据源(称为“预言机”)的信任中的漏洞。预言机是第三方数据提供商,向 智能合约 和 去中心化应用程序 (DApps) 提供信息,这些应用程序位于 区块链 网络上。这些数据源通过提供真实世界的数据(例如价格信息、天气状况和其他外部事件),在使智能合约能够自主执行方面发挥着关键作用。[1][4]
Oracle 攻击的性质
Oracle 攻击通常涉及操纵预言机提供的信息,以欺骗 智能合约 或 DApp。这些攻击的目标可能各不相同,但通常包括经济利益或破坏去中心化系统的正常运行。攻击者可能会尝试更改数据馈送,以触发智能合约中意外的操作,从而导致不良结果。[2]
Oracle 攻击的类型
1. 价格操纵:在 去中心化金融 (DeFi) 应用程序的背景下,攻击者可以操纵价格预言机以提供虚假的价格数据。这可以被利用来执行有利可图的交易或导致借贷平台内的清算。[5]
2. 篡改外部数据:攻击者可能会破坏数据源本身或其通信渠道,以将虚假信息注入到预言机馈送中。例如,攻击者可以伪造保险 智能合约 中使用的天气数据,以欺诈性地索赔赔偿。[4]
Oracle 攻击对 DeFi 安全的影响
协议破产
Oracle 操纵对借贷协议构成挑战,可能会导致更大规模的破产局面。例如,oracle 漏洞有可能在协议内引发不利的债务头寸,其中抵押品的价值低于用户的债务。鉴于借款人可能缺乏偿还债务的动机,这种情况可能会迫使流动性提供者承担损失。[2]
潜在的经济失败
除了协议破产的风险外,oracle 攻击还有可能在各种情况下引发全面的经济失败。例如,如果 oracle 不准确地报告价格波动,算法 稳定币 和 rebase 代币可能会失去其预期的价格挂钩。[2]
对用户体验的影响
为了避免破产,DeFi 货币市场密切监控 抵押品 资产的市场价值,并在债务头寸达到抵押不足的水平之前执行清算。但是,如果协议基于不准确的 oracle 数据进行计算,则这些清算可能是不合理的。[2]
缓解和预防
缓解 oracle 攻击的措施包括:
1. 多个 Oracle:使用多个独立的 oracle 并聚合其数据可以降低单个恶意源操纵的风险。[3]
2. 去中心化 Oracle:利用从各种提供商处获取数据并采用共识机制的去中心化 oracle 网络可以使攻击者更难以操纵数据馈送。[2][3]
3. 经济激励:设计鼓励 oracle 提供商诚实行为的机制,例如要求 抵押品 或 质押,可以阻止恶意活动。[4]
4. Oracle 升级和治理:定期更新和改进 oracle 设计,同时让社区参与治理,可以帮助解决新兴漏洞。[4][5]
Oracle 攻击的示例
- 2019 年 12 月,Synthetix 遭受了另一次攻击,该攻击归因于价格 oracle 操纵。值得注意的是,此事件模糊了链上和链下价格数据之间的界限。[5]
- 在 Harvest Finance 黑客攻击期间,攻击者通过执行涉及一种 oracle 攻击的闪电贷攻击,成功入侵了该协议的池。在此事件中,黑客通过进行交易降低了 USDC 在 Curve 池中的价值,从而操纵了其价格。随后,攻击者以被操纵的较低价格进入 Harvest 池,通过反向交易将 USDC 价值恢复到其原始状态,然后以较高的价格退出池。[3][5][6]
- 在另一起事件中,基于 Ethereum 的借贷协议 bZx 发生了一起漏洞,攻击者利用该漏洞创建了一个抵押不足的头寸。这种利用导致攻击者获得了约 370,000 美元的利润,同时导致 bZx 借贷池内约 620,000 美元的重大股权损失。[3]