什么是闪电贷攻击?
时间:2023-03-16
上月,Avalanche上的DeFi平台(“去中心化金融,也被称为“开放式金融”平台)Platypus Finance遭遇闪电贷攻击,被盗走约900万美元。
那么,什么是闪电贷(Flash Loan)?
先说DeFi,其核心就在于“去中心化”。DeFi通过运用加密货币和智能合约在区块链上提供交易、借贷和投资等金融服务,但不依托于任何中心化的金融机构、中介或交易场所。换言之,DeFi提供了与传统金融服务相类似的金融服务,但又同时实现了金融脱媒。
闪电贷大多被用在套利、攻击或置换借款的抵押品,它是一种不需要抵押品的贷款,需要透过智能合约来进行,且借款和还款必须在同一笔交易内完成。如果在交易的最后没有还款动作,则借款的动作会被视为无效。
比如,上图的用户在借款A 后到DEX 将大笔的A 换成B,导致因为流动池内两代币的比例失衡,所以DEX 上A 的价格下跌B 的价格上升.再到其他使用上述DEX 作为价格预言机的借贷平台抵押B 并借出A,因为抵押品的价格高于市场所以能借出大量低于市场价格的A.最后再将最初借的A 还给闪电贷协议,多出来的A 就是本笔交易的获利。闪电贷的借款(第一步)和还款(第四步)在同一笔交易中。在区块链中充斥着这种获利方式。
黑客主要是抓住了这些项目的薄弱点去获取利益。黑客可以窃取锁在智能合约里的加密资产,项目的用户往往就只能自己承担无法赎回加密资产的损失。
那么具体怎么操作呢?举例:
第一步,攻击者将闪电贷获得的4400万USDC存入Platypus USDC池,并获得4400万 LP-USDC。
第二步,攻击者将这4400万LP-USDC存入MasterPlatypusV4。
第三步,攻击者在PlatypusTreasure合约中调用了borrow来铸造大约4180万USP。(该平台的借贷限额被设置为95%,这意味着攻击者最多可以用他们的4400万LP-USDC借到大约4180万USP。)
第四步,由于借来的USP数额没有超过限额,协议的isSolvent值将总是返回true。而isSolvent变量为true,攻击者可以调用EmergencyWithdraw来提取其质押的4400万LP-USDC全部资金。攻击者在支付了移除流动性的手续费用后,总共可以提取43,999,999,921,036 USDC(LP-USDC)。
最后一步,攻击者偿还闪电贷款,并以多个稳定币的形式获利约850万美元。
在闪电贷的案例中,攻击者从 DeFi 协议中接收贷款,花费贷款资金,并在同一智能合约交易中全部归还贷款。由于贷款的全部过程发生在同一笔智能合约交易中,因此不需要抵押品。
黑客只需要承担非常小的风险;如果交易无法实现收支平衡,借贷人无法偿付贷款,那么整笔交易就会被撤销,也就是说用户只会损失 GAS 费。如果黑客利用贷款资本在短期内套利,那么在归还借来的本金后依旧还有的赚。
但是这些利润必须有其出处,每次攻击事件都是不同且复杂的,这些利润往往来自那些在交易中输给攻击者的“失败者”,利润由此产生。
数字时代,任何技术的进步与发展,都将衍生出新的网络攻击方式。
网络安全,已经成为经济社会良性发展的重要保障。