闪电贷攻击频发 黑客「空手套」DeFi


闪电贷攻击频发 黑客「空手套」DeFi文章插图
闪电贷攻击频发 黑客「空手套」DeFi文章插图
半个月内 , 发生在DeFi协议上的闪电贷攻击一起接着一起 , 闪电贷成了黑客借来生「金蛋」的鸡 。
进入11月 , Value DeFi、起源协议Origin Protocol、Akropolis和Cheese Bank都遭到了闪电贷攻击 , 总损失额超过1000万美元 。
Value DeFi的前身是被称为「五姨夫」的YFV , 它的损失超过540万美元 , 这还是黑客「归还」了200万美元后的结果 。 颇有戏剧性的是 , 在被攻击前一天 , 该团队曾公开表示Value是最安全的DeFi项目 , 随后便被黑客「光顾」 。
成都链安解释 , 「闪电贷攻击」指利用闪电贷和其他漏洞结合后 , 进行套利和操纵价格等攻击 。 「闪电贷本身不是漏洞 , 不过作恶者可以利用它 , 以极低的成本撬动巨量资金 , 在多个协议间进行价格操纵或套利 。 」
区块链开发者小岛美奈子认为 , 黑客能轻易操纵价格的原因是DeFi协议没有采用安全的预言机策略 , 即当预言机传达数据失真时 , 攻击便极易发生 。 另有行业人士点出本质 , DeFi协议在实现本身的功能时 , 采用单一市场价格反馈的设计极其危险 。
「因为是新的事物 , 很多项目在设计时并未充分考虑到这方面风险 。 」成都链安提示 , 项目方在业务逻辑设计时 , 应当考虑这类极端情况 , 必要时应找专业的审计机构审计 。
4天内两DeFi协议遭「闪电贷攻击」
11月17日 , 起源协议Origin Protocol的稳定币OUSD遭闪电贷攻击 , 价格最低跌至0.13美元 。 此次攻击使得Origin Protocol共计损失了225万美元的DAI和100万美元的ETH 。
就在这起安全事故的3天前 , DeFi协议Value DeFi也被黑客「光顾」 , 里面也涉及到闪电贷这一工具 。
11月14日23点36分 ,Value DeFi 的 MultiStables机枪池遭受黑客攻击 , 损失将近740 万美金的 DAI 。 此前 , Value DeFi曾在社交平台宣布自己是最安全的DeFi , 结果立马被打脸 。 黑客在完成攻击后还返还了200万美元 , 并以「do you really know flashloan(闪电贷)」的提问发出嘲讽 。
闪电贷攻击频发 黑客「空手套」DeFi文章插图
闪电贷攻击频发 黑客「空手套」DeFi文章插图
?Value DeFi的MultiStables机枪池正常页面
闪电贷似乎成了黑客近来最得心应手的工具 。 今年以来 , 多起DeFi的安全事故都被安全机构指出利用了「闪电贷攻击」 , 受害项目方包括bZx、Balaner、Havest、Akropolis、Cheese Bank等 , 以及最近的Value DeFi和Origin Protocol 。
「开发者还没有了解以太坊的特性 , 」区块链开发者小岛美奈子认为 , 频频发生闪电贷攻击是因为项目开发者对此缺乏了解 。
闪电贷是什么?利用它的攻击到底是怎么发生的?
Jeff是区块链安全公司 PeckShied 硅谷研发中心负责人 , 他对蜂巢财经介绍 , 区块链上的闪电贷是一种「不需要抵押就可以借贷」的贷款方式 , 但贷方必须在同一区块内还贷 , 否则这个交易就会失败 。 所以闪电贷对借款平台来说基本是零成本、零风险 。 而黑客就可以利用这样的贷款方式 , 以很小的成本借出大笔资金 , 然后用这笔资金去造成一些数字资产的价格波动 , 再从中渔利 。
根据安全机构的梳理 , 我们可以清楚地从Value DeFi的这起攻击中 , 看到闪电贷攻击的运作方式 。
当晚 , 黑客先通过 Aave 的闪电贷功能借来8万枚 ETH , 紧接着通过UniswapV2上的闪电贷借来 1.16亿枚 DAI 。 借来大把钱后 , 黑客开始在Curve和Value DeFi上操纵价格进行套利 。
选择这两个协议 , 黑客是利用了它们之间的关联——Curve上有USDC的兑换池 , 要想在Value DeFi合成资产3CRV , 也需要用到USDC 。
在Curve上 , 黑客主要是用闪电贷借来的钱抬高USDC的价格 , 一度让这个美元稳定币脱锚上涨至1.788美元 。 而在Value DeFi上 , 黑客将一部分DAI存入该协议的机枪池中 , 铸造出名为3CRV的合成资产 。
Value DeFi机枪池合约中有3种合成资产 , 分别是3CRV、bCRV和cCRV , 为了方便计价 , 该协议合约在铸币时会将bCRV、cCRV转换成3CRV 进行计价 , 转换途径需先将bCRV/cCRV换成USDC , 再把USDC换成3CRV 。
问题就出在这里 。 由于Value DeFi以Curve的价格作为预言机 , 而Curve上USDC的价格已经大幅上涨 。 因此 , 当攻击者发起3CRV提现时 , 合约会照常将bCRV、cCRV 转换成以3CRV计价 , 但此时USDC/3CRV 的价格被操作拉高 , 导致用bCRV、cCRV 能兑换出更多的3CRV 。