区块链大学区块链研习社区块链

遭黑客两连击,DeFi生态鸣起丧钟还是进入休整?

2020-04-22  本文已影响0人  区块链猫老师

对于DeFi(Decentralized Finance)投资者来讲,这一周都不会太平静。北京时间4 月 19 日上午 8 点 45 分,国产 DeFi 借贷协议 Lendf.Me 被曝遭受黑客攻击。这是继 4 月 18 日 Uniswap 被黑客攻击损失 1278 枚 ETH(价值约 22 万美元)之后,DeFi生态出现的又一重大安全事件 。

最新动向

两起安全事件接连爆发后,项目方、区块链安全公司纷纷跟进。4月18日,也就是周六,Uniswap 的imBTC被盗走;周日,Lendf.Me上价值2500万美金的资产被黑客洗劫一空;周一,dForce创始人杨民道如期于Medium发文通报“Lendf.Me被黑”一事的处理进展,表示“在过去的24小时里,一直在不停地工作,并将在以后的文章中详细介绍Lendf.Me采取的所有行动。”周二,黑客返还全部资产,dForce创始人杨民道公布后续行动计划。

Lendf.Me被攻击累计的损失约 24,696,616 美元,具体盗取的币种包括USDT、WETH、WBTC等12个币种。据欧科云链OKLink区块链浏览器显示,北京时间4月21日开始,Lendf.Me攻击者地址0xa9bf70a420d364e923c74448d9d817d3f2a77822下的资产在不断往外转出。当日14点,Lendf.Me攻击者地址下的ETH余额减少至$279.27。一小时后,该地址下ETH余额已经为0。随着各方的介入,最新消息显示黑客已退回全部被盗资产。

图片来源:oklink.com,4月21日13:30 图片来源:oklink.com,4月21日14:00

重入攻击

目前已知的情况是,攻击者利用了imBTC采用的 ERC-777 标准的一个漏洞,执行重入攻击(Reentrancy attack),导致市值约 2500 万美金的资产从 Lendf.Me合约里被取出。

而18日下午,攻击Uniswap的手法与此次Lendf.Me类似,两次事件的攻击者极有可能是同一伙人。黑客利用Uniswap和ERC777的兼容性问题,在进行ETH与imBTC交易时利用ERC777中的多次迭代调用tokensToSend来实现重入攻击

解释重入攻击之前,我们来复习一个关于以太坊的知识点。以太坊上的每一个代币都是一个合约,而这些合约都是根据某个标准来写。大多数用户更熟知的是ERC20标准,欧科云链OKLink区块链浏览器显示,截至4月21日,以太坊上ERC20代币数高达214075,且数量呈现上升趋势。

图片来源:oklink.com

然而,即使是ERC20同一标准下,代币在合约之间的转账仍然不是很方便。ERC777便应运而生,兼容ERC20的基础上又添加了新的内容。

此次事件中的Uniswap是根据ERC20标准设计的。Uniswap v1有一个工厂合约和一个交易合约,通过工厂合约,每个代币都可以和以太坊生成一个交易合约。也就是说,任何满足ERC20标准的合约都能够通过工厂合约直接注册到Uniswap上而不需要许可。ERC777兼容ERC20,ERC777标准下的合约同样也可以注册到Uniswap。

通常来讲,智能合约在正常执行期间可以通过执行函数调用,或者简单地转移以太坊来执行对其他智能合约的调用。这些智能合约本身可以称为其他智能合约,它们可以回调到调用他们的智能合约或回调栈中的任何其他智能合约。在这种情况下,我们说智能合约被重新输入,这种情况被称为可重入性。

重入本身不是问题,但智能合约以“不一致”的状态重新输入时,就会出现问题。Uniswap 上使用 ERC777 的安全性问题早在19年6月就被发现并公开过。ERC777 的 Uniswap 交易对会因为 在ERC777 标准里存在,而不存在于 ERC20 里被攻击,这时候,重新输入就变成了重入攻击。

防御对策

这已经不是第一次DeFi系统性风控漏洞被黑客利用了。从之前闹得沸沸扬扬的闪电货bZx漏洞事件到此次的二连击事件,2020年还未过半,DeFi就经历了三次大规模资产风险事件。

2月,bZx遭受攻击,其协议漏洞被利用,攻击者套利99万美元;3月12日的极端行情下,MakerDao等协议突发强制清算,机器人程序未及时调高gas费,有用户趁机以0出价获得系统拍卖的抵押资产,给MakerDao造成了567万美元的损失;此次的黑客二连击事件中,被盗资产更是高达2500万美元。DeFi 基础设施的脆弱性暴漏无疑。

DeFi的创建者本意是利用代码和智能合约创建一个无需审查权限、人人可参与的开放金融生态。其大规模发展的基础设施是各种去中心化协议。虽然有更美好的愿景,但DeFi 在抗风险能力上甚至不及中心化系统。

接连的安全事件让人们醒悟,没有0漏洞的协议,安全才是重中之重。对于项目方而言,在开发合约时就应把合约安全问题列为重点。可以将合约代码开源,让更多专业人士和技术团队参与进来,分析整理出易发生的意外事件,提升合约编写的安全性和功能准确性,防患于未然。其次,项目方可以与安全机构加强合作,审查代码。个人用户也需要在决策时格外谨慎,选择投资项目之前,利用好区块链浏览器等工具更全面地了解项目的链上信息才是关键。

这是一个快速迭代的领域,经此几劫,DeFi生态是丧钟长鸣还是进入休整,相信不久就能看到结果。这也是一个长期发展的行业,代码即法律的愿景还没有实现,更多的法规及监管介入才能帮助DeFi 生态健康发展。DeFi可能会在未来爆发,但这个可能或许还需要数十年的沉默期来铺垫。

上一篇下一篇

猜你喜欢

热点阅读