文:王也
出品:Odaily星球日报
编者注:原标题为《TodForce:Whatdoesn'tkillyoumakesyouSTRONGER》
短短48小时,黑客让dForce团队真切地体会到了“失而复得”的美好。
4月19日上午,由dForce团队开发的去中心化借贷协议Lendf.Me遭黑客攻击,价值2500万美金的锁仓资产被黑客洗劫一空,震动社区与行业。
而随后发生的“神反转”更是比电影还精彩,4月19日晚,黑客向Lendf.Me账户归还了12614枚PAX,并附言BetterFuture,4月20日,黑客再次陆续归还代币,至今已悉数归还了全部被盗资产。
据悉,黑客此举,是因为在去中心化交易所1inch上泄漏了自己的IP地址,1inch配合新加坡以及dForce团队向黑客施压,迫使其归还赃款,1inch官方也证实了这一过程。
dForce团队则在4月22日凌晨发文告知用户接下来将采取的行动方案:将永久关闭现有合约,新产品将启用新合约,并将在一周内公布资产返还的建议方案。
不幸之中的万幸,Lendf.Me本次被盗最终并没有给用户和平台造成损失,但带来的思考和探讨已远超事件本身。
事件发生后,许多看客已从多方视角发布过专业的复盘内容,但Odaily星球日报依旧看到了不少错误的说法和偏颇的论调,因此,我们也想以这篇文章表明:Whatdoesnotkillyoumakesyoustronger,相信历劫后的dForce团队和DeFi行业,会更加健康地成长。
DeFi乐高遭遇“多米诺骨牌”式崩塌,到底是谁的锅?
4月19日,黑客利用ERC777合约和DeFi平台的兼容性问题,在Lendf.Me上多次调用重入攻击,并以imBTC为抵押,将Lendf.Me上价值2500万美金的资产洗劫一空。
发生盗币事件后,媒体和大众关注的焦点是“追责”,大额资金被盗,到底是谁的锅?虽然事件已告一段落,但依然有很多错误说法在社群内误传。
讨论的声音很多,有的把“罪名”扣在ERC777头上,称是合约本身存在漏洞;有人追问dForce的安全合作方Peckshied为何没有及时发现漏洞;还有人将矛头指向imToken,声称是imBTC存在问题,黑客抵押了假imBTC贷出ETH。
而事实是,以上都是错误说法。
ERC777合约本身并没有问题,它是对ERC20合约的一个改造和升级,不但实现了功能扩展,还有ERC20标准一样良好的兼容性。这件事也并非Peckshied的责任,虽然PeckShield是dForce的安全合作方,但他们并没有对Lendf.me的代码进行过审计,Lendf.me的协议为分叉CoumpundV1代码而来。
假imBTC也是一个谣言,并不存在这个过程,imBTC本身也无漏洞。
事实是,Lendf.me在CoumpundV1代码的基础上加入了基于ERC777的imBTC,而ERC777合约与DeFi协议的兼容性问题,给了黑客可趁之机。
具体来说,ERC777原本是在ERC20基础上加强了对Token的风险控制接口,是一次有益的改进。不过由于DeFi项目的可组合特性,一个合约在不同产品之间相互调用时,其业务逻辑复杂度也会大大增加,这就给注入代码攻击提供了可能性。
据PeckShield团队介绍,ERC777标准扩展的功能之一是提供了“hook”机制,可以使普通地址或合约通过注册一个tokensToSend()hook函数来控制或拒绝发送Token。简单点说,“hook”函数能够在一笔交易完成前后将通知发送给交易双方,并允许其取消交易,确保了交易相对的客观公正。
因为“hook”函数通知是需要操作时间的,黑客就利用这一点,发起重入攻击,在用户一笔交易未完成的时候,又发起一笔新的交易,扰乱了原有的交易节奏。
图片来源于:PeckShield
这个理解起来可能有些门槛,Odaily星球日报简单解释下:
Alice有100ETH,她准备将这100ETH抵押给Bob准备借出0.01个imBTC,但是还没等到这笔交易确认时,Alice又将这100ETH抵押给力另外一个对手方,于是,Alice就用这100ETH借出了两倍的imBTC。黑客攻击Lendf.Me的过程就是上述过程的多次循环,重入攻击可以理解为黑客凭空生出了很多“钱”,让合约以为这是合法的“钱”,然后可以用抵押借贷的方式,把真钱都取走了。
从上述过程我们可以很清晰地了解到,ERC777合约本身实际可以极大的提高DeFi应用的用户体验,通过使用的Hook回调机制,在ERC20中需要二笔或多笔完成的确认交易,而使用ERC777单笔交易就可以完成。
真正导致漏洞出现的根源在于ERC777合约与DeFi协议的兼容性出现了问题。
目前,安全团队针已经针对ERC777合约与DeFi协议的兼容性问题给出了很多安全建议,这次攻击也使得DeFi开发者严肃正视DeFi业务组合可能存在的系统性风险问题。
因DeFi协议之间的可组合性和互操作性,使得各DeFi协议之间的相互影响逐渐加深、也更为复杂:就算单个协议运行起来是安全的,不代表这些安全的协议组合在一起使用也是安全的。
所以,开发者们不可以只追求DeFi乐高的“庞大”,更应该在系统的兼容性和安全性方面多做努力,毕竟对于金融产品来说,「安全」才是重中之重。
追责不是目的,而是希望找出问题所在后,不再被类似的问题打倒。
世界不是非黑即白的,DeFi本来就处于半中心化治理阶段
4月21日,Lendf.Me被盗的剧情开始出现“神反转”,许多围观者都感叹这情节如同电影。
根据etherscan链上数据,从4月21日6:00UTC开始,黑客从标有“Lendf.MeHack”的地址到Lendf.Me项目的管理地址发起了多次交易,包括57992枚ETH,以及USDT、BUSD、TUSD等稳定币,此外,还归还了581枚WBTC、HBTC和imBTC,合计2400万美元。
世界不是非黑即白的,
DeFi本来就处于半中心化治理阶段
4月21日,Lendf.Me被盗的剧情开始出现“神反转”,许多围观者都感叹这情节如同电影。
根据etherscan链上数据,从4月21日6:00UTC开始,黑客从标有“Lendf.MeHack”的地址到Lendf.Me项目的管理地址发起了多次交易,包括57992枚ETH,以及USDT、BUSD、TUSD等稳定币,此外,还归还了581枚WBTC、HBTC和imBTC,合计2400?万美元。
图片来源于:etherscan
根据1inchCEOSergejKunz向媒体透露,黑客因为使用了基于Web的内容分发网络,所以才泄漏了关于他本人的重要元数据头部信息,而且所有三个交易请求都来自一个中国的IP地址,这表明黑客没有使用Tor之类的去中心化网络。此外,信息中还有黑客使用的电脑类型、屏幕分辨率和系统语言等内容。
SergejKunz评价这个黑客,“他应该是一名优秀的程序员,但却是没有经验的黑客。”
因此,虽然官方没有公布细节,从已知信息,也可以推断出,和dForce团队掌握了黑客信息,从而迫使黑客退还资产。
无论过程如何,被盗资产成功追回本对于dForce和用户都是难得的happyending,但是1inch配合新加坡协助dForce团队追回被盗资,披露黑客的IP地址,却引发了社区对DeFi“保护用户隐私”和“纯粹去中心化”的讨论。
去中心化的DeFi借贷平台依靠中心化的执法机关将被盗资产追回,支持者认为披露黑客的IP地址天经地义,无可厚非,虽然具有抗审查性,但DeFi毕竟不是法外之地。
反对者认为1inch作为去中心化交易平台有悖于DeFi“保护用户隐私”的初衷。
去中心化交易所ParaSwap在Telegram的DeFi群中向用户表明不会披露任何用户的信息,即使用户是黑客。
1inch也迅速做出了解释:「去中心化和隐私没有关系」,1inch在监管合规范围内办事,并且1inch网站披露了自己的隐私政策:
ParaSwap虽然拒绝了向dForce披露黑客IP地址的请求,但根据TheBlock的报道,ParaSwap自己的产品也在收集用户邮箱和IP地址,而且ParaSwap官网也没有任何隐私政策的说明。
还有一些反对者认为此举违背了DeFi“去中心化”的原教旨主义。他们认为真正的DeFi,向黑客发起追讨或者法律诉讼的应该是DeFi用户,而不是开发者;而Lendf.Me开发者团队在以公司主体的名义通过法律途径追回资产,说明这家公司在承担代理风险。
他们潜意识里认为DeFi的存在就是为了消除代理风险,如果有一家公司在承担DeFi协议的代理风险的话,那这个DeFi就和CeFi没什么区别了。
其实,在Odaily星球日报看来,这些讨论多为偏颇和“站着说话不腰疼”。借助中心化执法机构的力量找回被盗资产是年轻DeFi必须走的路,没必要上升到“去中心化的和中心化”的矛盾层面。
而且,“世界很复杂”,不只有白或黑,也不只有明或暗,他是多维度、多层次、多元的,真实的世界没有这么二元。
今天我们的所有生活和资产并不都在链上,追责更是都发生在线下,智能合约的世界是一个尚不完整的世界,也绝对不是法外之地。
同时,区块链追求的本来就是保护个人隐私,而非实现绝对匿名。
DeFi的世界也并不是只有代码,事实上,从刚过去不久的那场“3.12暴跌”事件中,我们也能感受到去中心化的DeFi加入中心化人为调控之后,能够更大程度减少极端行情给用户带来的资产损失,去中心化合约交易协议dYdX两次调高最小交易量,合成资产交易平台Synthetix临时将费用追偿延长到了一小时,这些都有效地缓解了交易的延迟和阻塞情况,避免了给用户带来资产上的损失。
1inch协助同样可被理解为一次宏观的人为调控。无论是对开发者还是平台用户来说,黑客盗币带来的损失可谓是”灭顶之灾“,如果开发者团队不及时与inch和沟通配合,用户的资产根本不可能找回,资产都没了,又何谈金融呢?
代码是死的,人是活的。年轻的DeFi加入人为调控以应对极端情况无可厚非。
而且严格意义上来说,如今的DeFi产品实际上本来就处于混合模式,资产上链层面是中心化,而在可编程性是去中心化,治理上是半中心化的。
因此,Odaily星球日报想说:今天的DeFi本来就处于半中心化的治理+去中心化的协议的阶段,很多DeFi原教旨主义者以去中心化意识形态一概而论,以偏概全,其实缺乏DeFi在应用层面的思考。
创业者的实践总是一步一步的,说风凉话并不能推动行业发展。
为DeFi行业敲响警钟:
全面评估和抵御系统性风险
虽然这次Lendf.Me被盗事件以追回全部资产收尾,但客观地说,从黑客“留下尾巴”一路找到线索,还是有一定“侥幸”因素的。
所以更重要的自然是,“这一次”过去了,如何预防“下一次”。
DeFi开发者和从业者必须认真思考DeFi业务组合可能存在的系统性风险问题。
DeFi是由一个个相关的协议和应用模块所组成的“积木组合”,其整体的安全性,取决于所有的积木中安全性最差的那一个。
币乎创始人咕噜根据应用/协议/资产级别的安全性,将DeFi产品风险分为以下方面:
智能合约代码安全性引入的风险:
咕噜认为这是目前DeFi应用最主要的风险,占了总风险的大多数。
智能合约AdminKey引入的运营风险:
什么是智能合约的AdminKey?智能合约作为一个提供服务的「机器人」,很多时候运营方需要留有人工的权限去控制这个「机器人」,例如关停「机器人」,再例如冻结智能合约中某个账户的资产等。如果存在这样的AdminKey人工权限,就会引入额外的风险。
持有特定资产本身的风险:
持有的资产本身具有价格波动的市场风险、资产被Token合约本身的AdminKey冻结/没收的风险等。
抵押借贷类DeFi本身的市场风险。
智能合约平台的风险。
用户自身私钥管理的风险。
对于以上这些风险,DeFi平台方不仅要确保在产品上线前有过硬的代码审计和漏洞排查,还要在不同产品做业务组合时,考虑因各自不同业务逻辑而潜在的系统性风控问题。
另外在应对风险时,DeFi平台应和安全公司及时合作,做好代码和系统风险的安全审计工作,因为Lendf.Me的代码是fork的CompoundV1的,而CompoundV1是trailofbits这家公司审计的,所以后来就没有再找安全公司去做审计,这就为后面遭遇黑客攻击埋了隐形炸弹。
dForce团队也认识到了问题的严重性,在最新发布的公告中宣布永久关闭现有合约,新产品将推出新合约。
其实在事件发生和解决后,用户和dForce社区都给予了团队很大的精神支持,许多损失惨重的用户依旧表明了“被盗事件不会击溃DeFi,相信dForce团队”的立场,足可以看出行业对优质创业团队的包容和友好。
但更重要的是,这次事件能够引起DeFi开发者们的足够重视,加大在安全方面的投入,安全团队也应该增强对DeFi产品审计的多样性和全面性,也可以研发更多供C端用户使用的可以评估DeFi安全性的工具和产品,让DeFi成为所有人都能放心使用的金融工具。
安全永远既是行业的底线,也是至高无上的准则。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。