mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
交易所 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

致 dForce:杀不死你的只会让你更强大

收藏
分享

文:王也

出品:Odaily星球日报

编者注:原标题为《To dForce:What doesn't kill you makes you STRONGER》

短短48小时,黑客让dForce团队真切地体会到了“失而复得”的美好。

4月19日上午,由dForce团队开发的去中心化借贷协议Lendf.Me遭黑客攻击,价值2500万美金的锁仓资产被黑客洗劫一空,震动社区与行业。

而随后发生的“神反转”更是比电影还精彩,4月19日晚,黑客向Lendf.Me账户归还了12614枚 PAX,并附言Better Future,4月20日,黑客再次陆续归还代币,至今已悉数归还了全部被盗资产。

据悉,黑客此举,是因为在去中心化交易所 1inch 上泄漏了自己的 IP 地址,1inch 配合新加坡警方以及 dForce 团队向黑客施压,迫使其归还赃款,1inch 官方也证实了这一过程。

dForce 团队则在 4 月 22 日凌晨发文告知用户接下来将采取的行动方案:将永久关闭现有合约,新产品将启用新合约,并将在一周内公布资产返还的建议方案。

不幸之中的万幸,Lendf.Me 本次被盗最终并没有给用户和平台造成损失,但带来的思考和探讨已远超事件本身。

事件发生后,许多看客已从多方视角发布过专业的复盘内容,但 Odaily星球日报依旧看到了不少错误的说法和偏颇的论调,因此,我们也想以这篇文章表明:What does not kill you makes you stronger,相信历劫后的 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 的协议为分叉 Coumpund V1 代码而来。

假 imBTC 也是一个谣言,并不存在这个过程,imBTC 本身也无漏洞。

事实是,Lendf.me 在 Coumpund V1 代码的基础上加入了基于 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:00 UTC 开始,黑客从标有“Lendf.Me Hack”的地址到 Lendf.Me 项目的管理地址发起了多次交易,包括 57992 枚 ETH(价值约 1000 万美元),以及 USDT、BUSD、TUSD 等稳定币(约 1000 万美元),此外,还归还了 581 枚 WBTC、HBTC 和 imBTC,合计 2400 万美元。

世界不是非黑即白的,

DeFi本来就处于半中心化治理阶段

4月21日,Lendf.Me 被盗的剧情开始出现“神反转”,许多围观者都感叹这情节如同电影。

根据 etherscan 链上数据,从 4 月 21 日 6:00 UTC 开始,黑客从标有“Lendf.Me Hack”的地址到 Lendf.Me 项目的管理地址发起了多次交易,包括 57992 枚 ETH(价值约 1000 万美元),以及 USDT、BUSD、TUSD 等稳定币(约 1000 万美元),此外,还归还了 581 枚 WBTC、HBTC 和 imBTC,合计 2400 万美元。

图片来源于:etherscan

根据 1inch CEO Sergej Kunz 向媒体透露,黑客因为使用了基于 Web 的内容分发网络,所以才泄漏了关于他本人的重要元数据头部信息,而且所有三个交易请求都来自一个中国的 IP 地址,这表明黑客没有使用 Tor 之类的去中心化网络。此外,信息中还有黑客使用的电脑类型、屏幕分辨率和系统语言等内容。

Sergej Kunz 评价这个黑客,“他应该是一名优秀的程序员,但却是没有经验的黑客。”

因此,虽然官方没有公布细节,从已知信息,也可以推断出,警方和dForce团队掌握了黑客信息,从而迫使黑客退还资产。

无论过程如何,被盗资产成功追回本对于 dForce 和用户都是难得的 happy ending,但是 1inch 配合新加坡警方协助 dForce 团队追回被盗资,披露黑客的 IP 地址,却引发了社区对 DeFi“保护用户隐私”和“纯粹去中心化”的讨论。
去中心化的 DeFi 借贷平台依靠中心化的执法机关将被盗资产追回,支持者认为披露黑客的 IP 地址天经地义,无可厚非,虽然具有抗审查性,但 DeFi 毕竟不是法外之地。
反对者认为 1inch 作为去中心化交易平台有悖于 DeFi“保护用户隐私”的初衷。

去中心化交易所 ParaSwap 在 Telegram 的 DeFi 群中向用户表明不会披露任何用户的信息,即使用户是黑客。

1inch 也迅速做出了解释:「去中心化和隐私没有关系」,1inch 在监管合规范围内办事,并且 1inch 网站披露了自己的隐私政策:

ParaSwap 虽然拒绝了向 dForce 披露黑客 IP 地址的请求,但根据 The Block 的报道,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 是由一个个相关的协议和应用模块所组成的“积木组合”,其整体的安全性,取决于所有的积木中安全性最差的那一个。

币乎创始人咕噜(也是 Lendf.Me 大户之一)根据应用/协议/资产级别的安全性,将 DeFi 产品风险分为以下方面:

  • 智能合约代码安全性引入的风险:
咕噜认为这是目前 DeFi 应用最主要的风险,占了总风险的大多数。
  • 智能合约(如果有)Admin Key 引入的运营风险:
什么是智能合约的 Admin Key?智能合约作为一个提供服务的「机器人」,很多时候运营方需要留有人工的权限去控制这个「机器人」,例如关停「机器人」,再例如冻结智能合约中某个账户的资产等。如果存在这样的 Admin Key 人工权限,就会引入额外的风险。
  • 持有特定资产本身的风险:
持有的资产本身具有价格波动的市场风险、资产被 Token 合约本身(如果有)的 Admin Key 冻结/没收的风险等。
  • 抵押借贷类 DeFi 本身的市场风险。
  • 智能合约平台的风险。
  • 用户自身私钥管理的风险。

对于以上这些风险,DeFi 平台方不仅要确保在产品上线前有过硬的代码审计和漏洞排查,还要在不同产品做业务组合时,考虑因各自不同业务逻辑而潜在的系统性风控问题。

另外在应对风险时,DeFi 平台应和安全公司及时合作,做好代码和系统风险的安全审计工作,因为 Lendf.Me 的代码是 fork 的 Compound V1 的,而Compound V1 是 trail of bits 这家公司审计的,所以后来就没有再找安全公司去做审计,这就为后面遭遇黑客攻击埋了隐形炸弹。

dForce 团队也认识到了问题的严重性,在最新发布的公告中宣布永久关闭现有合约,新产品将推出新合约。

其实在事件发生和解决后,用户和 dForce 社区都给予了团队很大的精神支持,许多损失惨重的用户依旧表明了“被盗事件不会击溃 DeFi,相信 dForce 团队”的立场,足可以看出行业对优质创业团队的包容和友好。

但更重要的是,这次事件能够引起 DeFi 开发者们的足够重视,加大在安全方面的投入,安全团队也应该增强对 DeFi 产品审计的多样性和全面性,也可以研发更多供 C 端用户使用的可以评估 DeFi 安全性的工具和产品,让 DeFi 成为所有人都能放心使用的金融工具。

安全永远既是行业的底线,也是至高无上的准则。

免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。