DeFi 连续被黑— Uniswap 与Lendf.Me 的骨牌效应

DeFi 连续被黑— Uniswap 与Lendf.Me 的骨牌效应

上周末两项DeFi圈内小有名气的应用—— Uniswap去中心化交易所 和 Lendf.Me借贷平台 ——接连遭到骇客入侵,分别被盗走价值约30万美元及2500万美元的多种加密货币。

Uniswap是兑币的应用,让人们在加密货币钱包里就能直接以ETH换DAI,不用另外到交易所注册帐号。Lendf.Me功能则像是 Compound 借贷平台,让人们可以存币生息,但Lendf.Me还额外加上一些创新。当我看到Uniswap和Lendf.Me双双被骇,第一反应是:跑。

虽然我没有使用这两款应用,但DeFi应用被黑就像是地震一样。当你看到隔壁的大楼(Uniswap和Lendf.Me)被震倒了,难保自己待的大楼(Compound)不会受损。所以我马上把存放在Compound赚利息的钱全部领出来,静观其变。直到专业资安团队查明原因并确定Compound不受影响,我才又把钱存回去赚利息。

这种危机时刻,Compound 的放贷利率会特别高。放贷的人都怕本金有去无回,一有状况就会马上把银根抽走。相较之下,从Compound 借钱的人比较不怕。他们虽然有抵押物放在Compound 里,但手上也有从Compound 借出来的币。即便Compound 倒了,也不至于血本无归。借贷市场供需失衡 —— 放贷的人(供给方)大幅减少,借钱的人(需求方)大致不变 —— 资金供不应求,推升了Compound 的放贷利率。

利率高也代表风险高,得有一点心理准备才行。但事后大家都在问,Uniswap 和Lendf.Me 为什么会接连被骇?

相容的积木,不相容

事后多家资安专业机构主动加入调查,一致认定两起被骇事件都与ERC-777这种积木(代币)规格有关,这是一种非常小众的新款积木。

目前金融乐高(DeFi)世界里,几乎所有人都是采用ERC-20这种积木规格,并据此开发新应用。但在2018年有人仿造ERC-20积木,开发出新款的 ERC-777 积木,主打与ERC-20积木相容(backward compatible),而且安全性还有所改进。理论上,人们可以直接混用新旧两种积木来打造新应用。可惜,事与愿违。

事后查明发现,遭到骇客入侵的Uniswap 和Lendf.Me 的代码都没有漏洞。问题是出在号称与ERC-20「相容」的ERC-777 积木,根本不能直接拿来当成ERC-20 积木使用。而Uniswap 和Lendf.Me 这两项应用当初都是专为ERC-20 积木设计,事后有人拿ERC-777 积木直接当成ERC-20 积木使用时,开发团队也没有仔细检查ERC-777 积木是否与自身应用完全相容。这就让骇客找到机会趁虚而入。

骇客透过ERC-777 和应用的接合漏洞,把存放在应用里的加密货币盗领一空。可以说这是ERC-777 规格制定者号称与ERC-20「相容」误导了大家,也可以说Uniswap 和Lendf.Me 在引入ERC-777 时缺乏审慎的安全评估与配套措施,才导致这场灾难。

虽然Uniswap 和Lendf.Me 可说是难兄难弟,但DeFi 社群对两者的评价却不太相同 —— 同情Uniswap,谴责Lendf.Me。为什么?

反应慢半拍

Uniswap 被骇在先,之后轮到Lendf.Me,两者相隔约24 小时。虽然能反应的时间相当有限,但金融市场本来就是分秒必争。Uniswap 是去中心化交易所,上面有数百种交易对,但它们当时被骇的只有ETH / imBTC 这个交易对。

依据这条线索,专业的资安人员马上会从以下3 个问题点下手追查:

  1. ETH
  2. Uniswap 应用
  3. imBTC(ERC-777 规格的代币)

我不是专业的资安人员,无从得知当时情况,只能从事后诸葛的角度讨论。

若是以太币出问题,应该不会只有Uniswap被骇(是没有还是还没?),若是Uniswap应用出问题应该不只有ETH / imBTC这个交易对被骇(为什么不选其它?)。按照逻辑推论,大概可以猜测imBTC出问题的机率比较高,只是不知道问题在哪。

事件发生当下市场一片混乱。有些DeFi 应用立即暂停ERC-777 代币交易,但有些则还在观望 —— 同样也有上架imBTC 代币的Lendf.Me 就没有立即采取行动。24 小时后,骇客大摇大摆地盗领走价值7.5 亿台币的多种加密货币,Lendf.Me 才惊觉事态严重。

空难发生的第一时间,各国政府会立即要求航空公司暂时停飞该型号飞机,以避免悲剧重演。只不过DeFi市场缺乏强制力,只能靠应用开发商的「自知之明」。但开发商没有采取任何行动也不难理解。毕竟暂停服务会造成使用者不便,甚至会被质疑技术能力有问题。若每次都是虚惊一场,几次之后用户也会想「跳槽」。

该如何拿捏确实不容易。而这次Lendf.Me 就是因为反应太慢,导致用户的资产被提领一空,代价高昂。绝大多数人都是事件旁观者,如果换成当事人视角,想的事情可能会很不一样。

损失谁来赔?

Uniswap 和Lendf.Me 都是区块链上的智能合约,虽然背后开发商不同,但智能合约里面保管的都是用户的血汗钱。前者损失的规模比较小「只有」660 万台币,但后者却狂喷了价值7.5 亿台币的多种加密货币,受害者肯定为数不少。

这就遇到经典的DeFi 世界问题,万一资金被骇,谁来赔偿用户损失?

得先看赔不赔得起,接着才看负不负责任。像Uniswap在DeFi圈的声誉不错,即便幕后的开发团队没钱赔偿,若是发起募捐活动(Gitcoin Grant!),大概也可以很快凑满660万赔给用户。相对之下,Lendf.Me的损失金额恐怕是有心负责也赔不起,于是有受害者决定自发「写信」给骇客求情:

区块链上的每笔交易纪录都是公开透明,骇客入侵的足迹、资金流向当然也是一清二楚。受害者发送小额交易「送钱」到骇客的地址,并透过交易的备注栏位上留言:

疫情肆虐全球,生活不容易。我放在Lendf.Me 的那些钱,都是从银行借来的。如果这些钱弄丢了,我恐怕会妻离子散。求求你把钱还给我们,God bless you!

温情喊话之外,网友和警方也循着网路足迹陆续找到骇客的IP地址(来自中国)、电脑型号、萤幕解析度,以及系统使用语言资讯。随着犯罪线索越来越多,大家意识到偷走钱的那个人可能是位技术很强的工程师,但大概不是一位经验老练的骇客——犯案手法太不俐落了。没过多久,Lendf.Me的开发团队发出公告,指出已与骇客取得联系并协议退款。

直到我写文章当下,Lendf.Me已经从骇客手上取回绝大部分资金,并且将逐步归还给用户。幸好最终没人妻离子散,但这次连续被骇事件,也让人们开始反思「金融乐高」的系统性风险。

阿波罗13 号

有位作者以美国在1970年的阿波罗登月计划来比喻此次事件,我认为相当贴切:

1970 年4 月13 日... 位于美国休士顿的地面控制中心向已经进入太空的飞船传递了打开风扇、搅动低温氧气箱的指令。于是,阿波罗13 号的太空人随后打开了低温氧气箱风扇。但只过了2.7 秒,飞船就发生爆炸。阿波罗13 号上的三名太空人当时就傻了。

太空人斯威格特马上向地面指挥中心报告,并说出了那句被无数人借用的著名台词:休士顿,我们有麻烦了。(Huston,we have a problem.)

NASA 事后调查发现,阿波罗13 号发射前,操作舱进行过多项改进,其中之一是将氧气箱中的加热器电压由28V 提高到65V,但加热器上的热稳定开关却没跟着修改,电压仍然是原本的28V。启动之后,热稳定开关因为电压不同就融化了。接着,悲剧就发生了。

所幸,最终三位太空人都平安返回地球。

「金融乐高」和太空梭一样,所有装置都是一环扣一环。若对一项零件升级,却没有重新检视其他关联的零件是否应该调整,就容易发生悲剧。套用在这次事件,即便ERC-777 号称相容于ERC-20 恐怕有误导之嫌,但也可以说Uniswap 和Lendf.Me 如果在引入ERC-777 代币规格之前,就仔细评估相容性的风险,也许就可以免于被骇。

开发团队大概也有自己的苦衷 —— 自己的东西就顾不好了,哪有时间顾别人的。我认为这起被骇事件不是偶然,只是时间早晚。事件反映了当前DeFi 领域开发文化所衍生的问题。若开发者们没有从中找到应对方法,只是把矛头指向风暴中心ERC-777、Uniswap 或Lendf.Me,这大概不会是「金融乐高」的最后一次骨牌效应。

雪崩的时候,没有任何一片雪花会自认该为雪崩负责。— 斯坦尼斯洛

No snowflake in an avalanche ever feels responsible. — Stanislaw Jerzy Lec

但也可以反过来改编尼采的话,那些杀不死DeFi的,将使DeFi成长。


分享到:


相關文章: