DeFi 的热潮点燃了 2020 年的市场情绪,但伴随着应用的发展,新的风险也悄然滋生。
据 Odaily星球日报不完全统计,从二月借贷及交易协议 bZx 被盗,到年末明星保险项目 Cover Protocol 崩盘,2020 年 DeFi 领域内已发生了四十余起起攻击事件,损失金额高达 1.774 亿美元(其中约 4939 万美元已追回,完整可见下方表单)。从刚刚上线的全新应用,到成名已久的头部协议,黑客们已然“鲨疯了眼”,恍惚之间,DeFi 似乎变成了“科学家们”的提款机,甚至被戴上了 HackFi 这一调侃式的昵称。
为了尽可能清晰地复盘 2020 年 DeFi 领域的安全状况,我们将根据各大 DeFi 应用在遭遇攻击后发布的事件报告,同时结合派盾(PeckShield)、慢雾(Slowmist)等业内头部安全公司给出的调查分析,对 DeFi 领域 2020 年发生的所有安全事件进行一次系统梳理。
根据事件发生的不同起因,本文将所有攻击分为了「技术因素事件」、「金融因素事件」、「人性因素事件」以及「其他事件」四大类。
需要注意的是,DeFi 应用跨越了科技及金融两大维度,因此一起安全事故的起因往往是多因素、多维度的复合,下文中,即便某起事件被划分为 A 类,也不代表该事件的发生不存在其他 B 类因素,在一些具体案例内我们会指明标注。
一、技术因素事件
“币圈一天,人间一年;DeFi 一天,币圈一年。”
外部市场的瞬息万变以及 DeFi 应用本身的创新性和复杂性决定了,即便是思维最缜密的开发者也很难在产品快速迭代的同时做到十全十美,因此在合约编写或产品设计中往往难免出现或大或小的漏洞及不完善之处。纵观一年以来发生的针对 DeFi 应用的各种攻击,可归于此类别的事件数量最多。
往细了说,这一大类可以再分为三个细分类别:协议本身存在漏洞或是设计存在不完善之处;协议在交互过程中存在兼容问题;底层网络存在特殊性或发生故障。
第一类:协议本身存在漏洞或是设计存在不完善之处
首先是第一类 —— DeFi 协议本身存在漏洞或是设计存在不完善之处,这一细分类别的逻辑最为清晰,理解起来也最容易,我们将直接通过几个典型案例加以说明。
典型案例一:Pickle Finance(11 月 22 日)
11 月 22 日,旨在通过流动性挖矿方案来帮助稳定币实现价格强锚定的 DeFi 应用 Pickle Finance 遭黑客攻击。黑客在调用 Controller 合约中的 swapExactJarForJar 函数时伪造了 _fromJar 和 _toJar 的合约地址,通过转入假币换取了合约中的真 DAI,成功窃取了约 2000 万美元的 DAI(完整攻击流程可查看慢雾科技的调查分析)。从失窃金额上来看,Pickle Finance 被黑无疑是本年度最严重的 DeFi 安全事件之一(仅次于 Harvest.finance 和 Lendf.me,后者失窃资金已追回)。
事件的结局有些出人意料,遭遇重创的 Pickle Finance 最终迎来了他们的救世主 —— DeFi 领域最活跃的男人、Yearn(YFI)创始人 Andre Cronje。11 月 24 日,Andre 宣布 Yearn 将合并 Pickle Finance 的开发资源,同时 Pickle Finance 还将推出全新的治理代币 DILL,并将向受本次黑客事件影响的用户分发补偿代币 CORN。CORN 的申领已于 11 月 29 日正式启动。
回顾 Pickle Finance 事件的整个攻击流程,其关键在于 swapExactJarForJar 未能识别黑客部署的两个伪 Jar,合约漏洞最终酿成了悲剧。
典型案例二:Cover Protocol(12 月 28 日)
明星保险项目 Cover Protocol 这一年过的可以说是跌宕起伏,从 SAFE 时代的创始人决裂,到 Cover 初期成功抱上 Yearn 的大腿,再到 12 月末的惊魂一夜,电影剧本都不敢这么写。
12 月 28 日,Cover Protocol 遭遇黑客攻击,这也是 2020 年发生的最后一起 DeFi 安全事件(完整攻击流程可查看 PeckShield 的调查分析)。当晚,攻击者利用 Cover Protocol 的业务逻辑错误天量增发 COVER 代币并砸盘套现,COVER 的价格也从 800 美元左右开始一路暴跌,几近归零。
图片来自:PeckShield
有意思的是,本次黑客事件中的主要攻击地址指向了另一个 DeFi 项目 Grap Finance,该项目随后也已将其套现获取的 4350 枚 ETH 还给了 Cover Protocol 团队,并销毁了剩余的增发 COVER。尽管客观上来讲,Grap Finance 的行为确实像是白帽黑客为了保护 Cover Protocol 而采取了极端措施,但其行为仍然引起了不少的争议,一些声音质疑 Grap Finance 其实是因为身份泄漏不得不选择归还“赃款”。
事件发生后,Cover Protocol 官方宣布将根据漏洞发生之前的数据快照结果分发新的 COVER 代币,并将向流动性提供者分发共 4441 枚 ETH 作为激励。币安方面随后也宣布将启用「SAFU 基金」为快照时间后在币安买入 COVER 的持仓受损用户进行补贴。
典型案例三:MakerDAO(3 月 12 日)
作为稳定币/借贷赛道乃至整个 DeFi