跨链桥多签权限被替换 Celo到底发生了什么?
北京时间 11 月 23 日晚,鱼池 F2Pool 创始人神鱼于微博转发安全组织 Rugdoc 的风险提示称:“有在 Celo 链上挖矿的请注意,跨链桥(Optics)的多签被人换了,疑似有问题,降低风险的办法是把 Celo 链上的其他资产卖成 Celo,目前卖的人还不多,亏几个点。大家自行判断风险,是赌一赌还是止损,全凭实力,胆子大的还可以套利。”
作为 Celo 官方牵头构建的跨链桥协议,Optics(合约地址:0x6a39909e805A3eaDd2b61fFf61147796ca6aBB47)是当前资金从外部生态流入 Celo 的主要渠道,该桥出现问题,无疑会对整个 Celo 生态的资金流通造成影响。因此,在 Optics 的问题被爆出之后,恐慌情绪也开始在社区之内弥漫。
根据来自 Celo 背后开发团队 cLabs 的首席执行官 Tim Moreton 的事件解释声明,多签权限被替换是因为有人单方面激活了 GovernanceRouter 合约上的 Optics 修复模式(recovery mode),虽然桥梁服务一切正常,但这一操作导致 Optics 协议被修复管理账户(recovery manager account )完全控制,原本的多签权限也被覆盖。不过,Tim 认为锁定在桥上的资金(当前锁定资金量超 4000 万美元)当前没有风险。
而从 Tim 披露的链上事务记录可以看出,该事件实际发生于 25 天之前的 10 月 29 日,也就是说,在 10 月 29 日后,Optics 一直处于修复模式之中,但 cLabs 团队直到 11 月 22 日才向社区公开披露了事态情况。
最值得注意的是,除了解释多签权限被替换的技术原理之外,Tim 还提到了一位已被 cLabs 开除的前高级开发者 James Prestwich。Tim 声称,修复模式被激活就发生在 James 因行为不当而被解雇后的 15 分钟,且在 Optics 的部署过程中,James 曾为配置创建过一个包括修复地址的 pull request,且曾请求确认过这个地址并要求报销费用。Tim 还表示,自从发现问题后,cLabs 曾想尽了一切办法与 James 接洽以解决问题,但迄今并未成功。
不过,对于 Tim 的“指控”,James 本人却回应称:“我从来都不是 Optics 修复模式的密钥持有者;我很失望 cLabs 和 Celo 选择将他们的欺凌公开化,他们正通过撒谎来攻击我的声誉;根据律师的建议,我现在什么都不会说。”
显然,Tim 与 James 的说法存在矛盾,如果二人都没有说谎,那么究竟是谁激活了修复模式呢?
在事件发生之后,社区之内也通过链上记录展开了调查,社区成员 @diwu1989 指出,在激活修复模式的最后一笔交易(交易哈希:0x8b1e0ca5f32c08e0afe64f0ab42204e3519712fe3bba0eeedeece56ccbf49461)中,修复管理地址从「0x3d9330014952bf0a3863feb7a657bffa5c9d40b9」被修改成了「0xdcbf2088b7a6ef91f954be9ca658ea5b8e9b62d4」,而后者系由「0x2f4bea4cb44d0956ce4980e76a20a8928e00399a」创建(创建交易哈希:0xd224025870298fea9877880b89b24ed0569c41d3dd147e6afec5ac41da4d098e),所以问题的关键就是要找到 0x2f 开头地址的所属。
另一位社区成员 @Ryan 沿着这一思路继续调查发现,该地址与另一家项目 PartyDAO 存在关联,因其是当前少数持有 PARTY 代币的地址之一,如果可以联系到该项目,或可知晓其身份。
社区成员 @Deepcryptodive 也指出, 0x2f 开头地址的资金来自于 0x2a98 开头的 Kucoin 地址,通过 Kucoin 的 KYC 系统,应该也可查出此人的身份。
在多人的共同调查之下,真相最终水落石出,由去中心化内容平台 Mirror 的地址备注中可知,0x2f 开头地址的资金归属于一名叫做 Anna 的人,那么 Anna 会是激活了修复模式的那个人吗?
答案似乎是肯定的,社区用户从 Github 记录上查到,正是在 26 天之前,一名头像和姓名(Anna)都相同的社区开发者,在 Github 上报告了一个关于 Optics 修复模式时间锁的漏洞,为了补上漏洞,需要激活修复模式并更换为一个更加安全的多签地址。此外,从历史提交代码上看,Anna 也的确参与了 PartyDAO 的开发工作。
至此,真相基本水落石出,链上地址对的上,报告中提及的漏洞与解决方案与此次事件也相吻合,所以基本可以判断正是 Anna 激活了 Optics 的修复模式,修复管理账户大概率也在 Anna 的控制之下。
不过,虽然事态脉络已然厘清,但部分社区成员对于 CELO 以及 cLabs 在此事中的处理方式却很不满意。作为 Celo 的开发团队,cLabs 理应比任何外部调查者都更清楚事情的来龙去脉,但在 Tim 的声明中却并没有给出一个清晰的解释,反而是做了一些毫无根据的猜测,将矛头引向一个已被解雇的开发者 James。
除此之外,另一些社区成员也对 Tim 在声明中提到的“桥上资金没有风险”相当不满,因为单从 Tim 的描述推断,合约当前的控制权显然并不在 cLabs 或其他已知社区成员的掌握之中,所以单方面声称“资金没有风险”是极其不负责任的。
推特大 V @Monet Supply 就此事总结了该团队所范的三个错误:
没人在应用上线前检查已部署的合约;
迟迟 25 天没有向社区做任何披露;
Tim 那则诡异的声明(我们失去了合约控制权,但资金很安全……)。
Monet Supply 最后将这一切归因于 Celo 内部管理的混乱,并表示自己将因此看跌 CELO。
昨日晚间,为了为了平息社区内的恐慌及不满情绪,Celo 官方组织了一场 AMA 对话,并就此事在官方论坛再次发声加以解释。这一次,代表 cLabs 发声的不再是首席执行官 Tim,而是换成了另外两名开发者 Eric 和 Marek。
新的声明披露了一些关键信息,包括将对 Optics 合约进行一定审计并向社区披露,以及通过发布 Optics V2 来迁移用户资金。Marek 还提到:“我们肯定会从这次事件中吸取教训,我们将继续分析哪里出了问题,以及为什么会出问题。为此,我们计划尽快发布一份完整的事件回顾报告。”
事已至此,虽然很多细节问题仍需等待 Marek 提到的报告发布后才可进一步明晰(比如 Anna 和 cLabs 之间为何看起来毫无沟通?修复管理账户是否还在 Anna 的控制之下?),但事态基本情况已大体明了。
整体来看,此次的“ Optics 安全事件”多少存在一定的“虚惊”成分,作为社区开发者,Anna 替换多签的目的更像是在修复 bug 而非作恶,这也是为什么过去 25 天 Optics 没有出现任何资金流失。不过,凡事也不能太过乐观,在事件彻底收官之前,建议大家短期内尽量减少 Optics 的使用频率,如有跨链需求,可尽量选择同样支持 Celo 生态的 Anyswap,或如神鱼建议的那样将桥接资产兑换为 CELO,再利用中心化交易所出入。
跨链赛道一直都是安全事故的高发领域,虽然暂时没有造成任何资金损失,但此次事件所敲响的警示同样不容忽视,希望 Celo 开发团队以及其他项目方能够以此为戒,改善内部管理秩序,提高透明度,带给用户更安全、更放心的跨链体验。
Scan QR code with WeChat