本文深入探讨了 DeFi 中的闪电贷,这是一种无需抵押的即时贷款工具,但需要在同一笔交易中偿还。文章详细解释了闪电贷的工作原理、攻击模式,并通过实例展示了如何利用闪电贷操纵价格和漏洞智能合约,导致重大损失。此外,文章还提供了应对闪电贷攻击的缓解策略,包括使用可靠的预言机、实施时间加权平均价格等。
如果你曾经从银行获得过传统贷款,你就会知道其中的流程——你提供抵押品,签署文件,并在几个月或几年内偿还。但在 DeFi (去中心化金融) 中,情况却大相径庭。进入 闪电贷 的世界——这是一项引人入胜的发明,你可以 立即借到数百万美元,无需抵押品,只要你在同一笔交易中偿还即可。
听起来很疯狂,对吧?但这是可能的,因为 以太坊虚拟机 (EVM) 的工作方式:每笔交易都是 原子性的 ——这意味着要么完全发生,要么根本不发生。因此,如果你未能在交易结束前偿还借款,那么整个过程就会恢复原状,就像什么都没发生过一样。
这种机制使闪电贷成为一种 强大的工具。交易者使用它们来进行套利机会(在一个交易所低买,在另一个交易所高卖),开发者使用它们来进行清算或复杂的金融操作——所有这些都无需前期资本。
但这里也有不利的一面:攻击者也喜欢闪电贷。为什么?因为他们可以使用巨额借款来:
在过去的几年里,闪电贷攻击已经导致了像 bZx、PancakeBunny 和 Harvest Finance 这样的 DeFi 协议 损失数亿美元。
🚀 本博客的目标不仅仅是给你理论,而是要 一步一步地带你了解闪电贷攻击的实际运作方式——这样,无论你是开发者还是安全爱好者,你都会知道如何发现和防御它们。
从核心上讲,闪电贷 是一种 无抵押贷款,你必须 在同一笔交易中偿还。与你锁定抵押品的传统贷款不同,闪电贷利用了以太坊等区块链的一个特殊属性:原子性。
原子性意味着以太坊虚拟机 (EVM) 上的交易要么:
这个属性使闪电贷成为可能。以下是它们的工作方式:
将闪电贷想象成被包裹在 单笔交易 中。在 EVM 层面:
这使得它对 贷方来说是无风险的,但对借款人来说非常强大。
几个主要的 DeFi 平台推广了闪电贷:
每个平台都有稍微不同的机制,但底层原则——借款 → 执行 → 在一笔交易中偿还——保持不变。
到目前为止,我们已经看到 闪电贷本身并没有恶意 ——它们只是一种工具。但像任何工具一样,在错误的人手中,它们可能被用于破坏性目的。当攻击者通过闪电贷借入大量代币,并利用这种临时的力量来 操纵一个易受攻击的 DeFi 协议的逻辑 时,就会发生 闪电贷攻击。
大多数 DeFi 协议的设计都基于以下假设:
闪电贷打破了所有这些假设。在一个原子交易中,攻击者可以控制巨大的流动性,冲击代币的市场价格,或者压倒治理——然后返还资金,就像什么都没发生过一样。
这为利用创造了一个完美的设置。
让我们来看看攻击者最常使用的模式:
一些著名的事件表明了这些攻击的破坏性:
这些案例都遵循了相同的公式:使用借来的流动性 → 操纵一个薄弱点 → 提取利润 → 偿还贷款。
闪电贷攻击不是关于“直接偷钱”。它们是关于 暂时成为房间里最富有的人 并利用这种力量将协议规则弯曲成对你有利的角度——然后在悄无声息地离开。
假设我们有一个 DEX 池,它有一个糟糕的价格预言机(只是使用代币余额,可以操纵),还有一个 vault,允许任何人存入某种代币,并根据价格提取。这个 vault 使用可操纵的池价格计算价值。
简化的 DEX 闪电贷提供者接口
适用于 Foundry/Hardhat 环境的带有解释的最小 Solidity 示例
此示例分 3 步捕获闪电贷攻击的本质:
executeAttack
请求代币的闪电贷。onFlashLoan
。以太坊虚拟机 (EVM) 保证单笔交易中的所有操作要么成功完成,要么完全恢复原状。这种原子性质支持闪电贷,用户可以在其中借入大量资金、执行操作并在一次交易中偿还贷款。如果未能偿还,则整个交易将恢复原状,就像从未发生过一样。这种独特的属性允许攻击者在没有前期资本的情况下执行多个复杂操作,对他们自己来说是无风险的,但可能会损害目标协议。
许多协议缺乏必要的保护措施,例如延迟的预言机更新或在交易期间验证资产价格完整性的机制。如果没有这些,攻击者可以暂时操纵内部状态或价格参考,并在状态最终确定之前利用这些不一致之处。
协议通常依赖价格预言机来确定资产估值。如果这些预言机依赖于单一来源(例如可以轻松操纵的去中心化交易所池),攻击者会在其闪电贷交易期间执行价格操纵来欺骗协议。这种脆弱性让攻击者可以在基于这些已损坏价值借入、铸造或清算资产之前人为地抬高或降低资产价格。
集成像 Chainlink 这样的预言机,它可以聚合多个数据源并提供防篡改的价格馈送,从而降低闪电贷期间价格操纵的风险。
TWAP 预言机在特定的时间窗口内计算价格,而不是依赖于瞬时现货价格,从而平滑了闪电贷旨在利用的突然峰值或下跌。
包括约束以拒绝具有巨大价格影响或交易量的异常交易或贷款,从而防止超出预期范围的突然协议状态更改。
设计具有闪电贷意识的智能合约函数。例如,限制闪电贷参与或要求对清算或抵押品估值等关键函数进行额外验证。
开发人员和安全研究人员应维护全面的审计实践,重点关注预言机完整性、重入、输入验证和经济攻击向量。安全检查清单应包括使用模拟闪电贷场景进行测试,以便及早发现漏洞。
闪电贷是去中心化金融 (DeFi) 中强大而创新的金融工具,可以在单笔区块链交易中实现即时、无抵押的借款。它们为套利、自动化清算和高效的资本利用开辟了途径,使 DeFi 更加动态和易于访问。
但是,闪电贷本身并非本质上是恶意的——只有当协议未能充分防范操纵时,风险才会出现。开发人员必须主动设计和审计智能合约,以防御价格预言机操纵和攻击者使用闪电贷利用的逻辑缺陷等漏洞。
对于读者和崭露头角的安全研究人员,强烈建议在 Foundry 或 Hardhat 等安全环境中尝试概念验证 (PoC),以加深对 DeFi 中攻击和防御的理解。
请继续关注我们未来的帖子,我们将在其中探讨其他关键的 DeFi 攻击向量,例如价格预言机攻击、夹层攻击和治理利用,帮助你构建在此快速发展的生态系统中保护去中心化应用程序所需的知识和技能。
- 原文链接: blog.blockmagnates.com/f...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!