又一个 DeFi 被炸了,这次的主角是 imBTC。至于为啥选 imBTC,主要是因为在 ERC-777 的代币里它的价格最高。ERC-777 代币可以理解成 ERC-20 的升级版,比 ERC-20 多了几个接口。
先来科普一下背景,imBTC 是由 imToken 发行的 1:1 锚定 BTC 的 ERC-777 代币。任何人都可以通过 imBTC 的合约进行铸币,或者销毁代币换出 BTC。
截至发稿时我又去看了一下,imBTC 的发行量是 708.2421,托管钱包里的 BTC 则是 708.3695 枚。 黑客没有能力转走 imBTC 托管的 BTC 也没有能力增发 imBTC 的代币。 所以各位看官不要担心,这次雷的不是 imBTC。
但同时为了阻止进一步的攻击,imBTC 已经紧急的按下了暂停键,所有的充提、转账交易都被暂停。
另外,我不得不吐槽一下,我怀疑黑客在 419 这个日子攻击简直是 ghs。
事实上,这次事件是由两拨攻击组成。一波针对 uniswap,一波针对 Lendf.Me。
第一波攻击是 4 月 18 日早上 08:58,通过 ERC-777 和智能合约耦合时候的漏洞,抽干了 uniswap 里 ETH-imBTC 这个交易对的底池。
实际上,uniswap 的这个 ERC-777 的问题也是老漏洞了,不过大家都没在意。按照 PeckShield 的估算,这次 uniswap 的损失在 1,278 个 ETH,价值约 22 万美金。
当天的 12:12 分,Tokenlon 监测到异常并成立紧急处理小组,定义为最高等级的安全问题。到 12:49 分,imBTC 的转账功能被暂停,同时 Tokenlon 向其他合作伙伴通报了这起安全事件。
至此,第一波攻击到这里就差不多结束了。严格来说,这波的攻击确实是打的让人有点猝不及防。 因为这个单看的话,不过是 imBTC 的 ERC-777 还是 uniswap V1 的协议都是没问题的,但是在耦合的时候就是出问题了,这个我稍后给大家讲。
后来下午 17:00,Tokenlon 的小组收到了合作伙伴的反馈,并且确认了安全风险评估,没问题。就继续开启了 imBTC 的转账功能。
一夜无话,大家都觉得这事情过去了。可能黑客也觉得,出了第一会儿事情大家就长记性了,早早睡了。
然而,第二天也就是 4 月 19 日上午,Lendf.me 遭到攻击。
这次攻击分为两个部分,第一个部分是通过合约上的漏洞,从 etherscan 上我们可以看出黑客每次攻击之后都会从 Lendf.me 抽走双倍的代币。
黑客攻击 Lendf.me 的交易记录
通过不断翻倍的过程,黑客很快就抽走了 Lendf.me 上的所有 imBTC 的代币。但事情还没有结束,之后黑客又将抽走的 imBTC 抵押回了 Lendf.me,然后借走了其他代币,就这样…整个 Lendf.me 都被抽空了。
这次 Lendf.Me 直接损失了 2500 万美金,更致命的是 Lendf.Me 损失的不是自己的资产,而是用户锁仓在 DeFi 的资产。
但实际上,10:12 的时候 Tokenlon 已经配合 Lendf.me 暂停了 imBTC 的转账和充提功能。目前黑客的地址 0x53835 中依然还有 250 枚 imBTC 无法转出。
至此,第二轮的黑客攻击已经落下帷幕,至于是否会有第三轮暂时还不得而知。关于这次攻击,我后来也去问了些有技术背景的朋友。这次的问题主要发生在 ERC-777 代币和系统的耦合上。
也就是说 imBTC、uniswap、Lendf.me 单独用的时候都不会出问题,但因为 ERC-777 预留的一个功能接口和智能合约在耦合的时候出现了问题,就被黑客抓住了 bug。
有趣的是,事后 Compound 的 CEO Leshner 在 Twitter 上「幸灾乐祸」,吐槽 @LenfMe 抄袭 Compound 的代码:
如果一个项目没有专门的技术去开发自己的智能合约,而去剽窃其他团队的代码并重新部署,那么很明显这个团队没有能力或意愿去考虑安全性的问题。希望开发人员能从这次 Lendf.ME 的攻击中学到教训。
其实如果我们回到时间线上去看,18 日的中午 Tokenlon 的团队就已经跟合作伙伴提示了这个风险,这个合作伙伴里面明显是有 Lendf.Me 的。当时 Lendf.Me 的团队反馈是并不认为有安全问题。
从这个角度上来看,Compound CEO 吐槽的也不无道理。但 u1s1,Lendf.Me 既然是 Fork 了 Compound 的代码,不也证明 Compound 自己也有问题吗?有啥好起劲的。
我记得第一次用 uniswap 的时候,看着 beta 警告我的内心是很惶恐的。警告写着,即便 uniswap 的合约已经经过安全审计,但你依然有可能失去所有的资产,你需要自行承担风险。
不知道有多少人认真的看过这个警告。但从 2020 年开始,我们至少已经经历了三次可以称得上是见证历史的 DeFi 事件:bZx 遭遇闪电贷攻击、Maker 预言机失效和 Lendf.Me 被攻击。
这背后折射出来的,其实是整个 DeFi 的系统性风险:没人对安全进行兜底。一旦发生安全风险,比如这次的 Lendf.Me 被攻击,项目方可能根本没有能力对用户的资产进行清偿。
而责任制,无论是公司形态的有限责任制还是国家信用的无限责任制,都是现代金融体系可以去运转的基础之一。 责任也是一种信用。
现代金融体系是建立在责任制度下的,通过责任来控制风险。你存款进银行,银行就有责任保护你的财产安全(即便是有限责任),有的时候银行还会通过存款保险这样的体系来转移和分散责任。有的时候保险的风险过大,还会有再保险补上。
而 DeFi 的问题在于,我们并无法给 DeFi 找到一个责任主体。在解决这个问题之前,跨链、DeFi 的可组合性都只是镜花水月。
Lendf.Me 炸雷,我们向谁去索赔?这是个问题。
—— 版权声明 ——
因私自搬运至媒体平台牟利的人过多。自 2019 年 10 月 16 日起,本站内容不再按照 CC BY-NC-SA 4.0 国际许可协议进行授权。
欢迎分享本文到朋友圈、微博等社交网络,媒体平台全文转载请来函问询。转载文章请保留文章作者高堡杂谈并保留此段声明、标题和其中的错别字。未经许可全文转载或抹去作者、来源网站视为未授权转载,视为未授权,保留追诉的权利。