DeFi之暗面——HackFi
DeFi的热潮点燃了2020年的市场人气,但随着应用的发展,新的风险也悄然滋生。
据odiaily星球日报不完全统计,从2月份贷款交易协议bZx被盗到年底星保项目Cover Protocol倒闭,2020年DeFi领域共发生40多起攻击事件,损失高达1.774亿美元(其中已追回4939万美元,详见下表)。从新推出的应用到由来已久的head协议,黑客们都变得“鲨鱼狂”。恍惚间,DeFi似乎成了“科学家”的提款机,甚至还带着调侃的外号HackFi。
为了尽可能清晰地回顾2020年DeFi的安全形势,我们将根据主要DeFi应用程序在受到攻击后发布的事件报告,并结合PeckShield、Slowmist等行业内安全公司负责人的调查分析,系统整理2020年DeFi的所有安全事件。
根据事件发生的原因不同,本文将所有攻击分为“技术因素事件”、“金融因素事件”、“人为因素事件”和“其他事件”四类。
需要注意的是,DeFi的应用跨越了科技和金融两个维度。因此,安全事故的原因往往是多种因素和多维度的结合。在下文中,即使某一事件被列为A类,也并不意味着该事件的发生不存在其他B类因素。在一些特定的情况下,我们会指定并标记它。
一、技术因素和事件
“一日在币圈,一年在人间;DeFi一天,币圈一年。”
不断变化的外部市场和DeFi应用本身的创新性和复杂性,使得即使是最有思想的开发者,也很难在产品快速迭代的同时达到完美。因此,合约的编译或产品设计难免会有或大或小的漏洞和不完善之处,纵观过去一年针对DeFi应用的各种攻击,能归结到这一类的事件数量是最多的。
更详细的说,这一类可以分为三个子类:协议本身存在漏洞或者设计不完善;交互过程中存在兼容性问题。底层网络有特殊性或失效。
第一类:协议本身有漏洞或设计不完善
首先,第一类—— DeFi协议存在漏洞或设计不完善。这个细分逻辑最清晰,最容易理解。我们会通过几个典型案例直接说明。
典型案例1:泡菜金融(11月22日)
11月22日,旨在通过流动性挖掘计划帮助稳定货币以实现强劲价格锚定的DeFi应用程序Pickle Finance遭到黑客攻击。黑客在调用控制器合约,的swapExactJarForJar函数时伪造了_fromJar和_toJar的合约地址,在合约,用假币换来了真正的DAI,成功窃取了DAI约2000万美元(完整攻击过程见慢雾技术调查分析)。从被盗金额来看,Pickle Finance被黑事件无疑是今年最严重的DeFi安全事件之一(仅次于Harvest.finance和Lendf)。我,被盗资金已追回)。
事件意外结束。遭受重创的泡菜金融,终于迎来了在—— DeFi领域最活跃的人DeFi向往的创始人安德烈克罗涅。11月24日,安德烈宣布,向往将合并Pickle Finance的开发资源,Pickle Finance也将推出全新的治理令牌DILL,并向受此次黑客事件影响的用户分发补偿令牌CORN。玉米应用于11月29日正式上线。
回顾Pickle Finance事件的整个攻击过程,重点是swapExactJarForJar未能识别出黑客部署的两个假Jar,合约漏洞最终成为悲剧。
典型案例2:封面协议(12月28日)
明星保险项目Cover Protocol今年经历了大起大落。从创始人在SAFE时代的破发,到《封面》前期成功拥抱向往的大腿,再到12月底震撼人心的夜晚,编剧都不敢这么写。
12月28日,Cover Protocol遭到黑客攻击,这也是2020年最后一次DeFi安全事件(完整的攻击过程见PeckShield的调查分析)。当晚,攻击者利用cover协议的业务逻辑错误,发放额外的COVER代币并套现,COVER的价格也从800美元左右暴跌至几乎为零。