跨鏈橋多簽權限被替換,Celo到底發生了什麼?
作者:Azuma,星球日報
北京時間 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 開發團隊以及其他項目方能夠以此為戒,改善內部管理秩序,提高透明度,帶給用戶更安全、更放心的跨鏈體驗。