這一次“黑客”慫了,下一次呢?

打開 DeFi 世界之門,從小白到 DeFi 大神的進階必修課。

由 Conflux × Odaily星球日報聯合出品,星球日報資深記者@王也擔任主筆。


短短 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 本次被盜最終並沒有給用戶和平臺造成損失,但帶來的思考和探討已遠超事件本身。

事件發生後,許多看客已從多方視角發佈過專業的覆盤內容,但我們依舊看到了不少錯誤的說法和偏頗的論調,因此,我們也想以這篇文章表明: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 的協議為分叉 Compound V1 代碼而來。

假 imBTC 也是一個謠言,並不存在這個過程,imBTC 本身也無漏洞。

事實是,Lendf.me 在 Compound V1 代碼的基礎上加入了基於 ERC777 的 imBTC,而 ERC777 合約與 DeFi 協議的兼容性問題,給了黑客可趁之機。

具體來說,ERC777 原本是在 ERC20 基礎上加強了對 Token 的風險控制接口,是一次有益的改進。不過由於 DeFi 項目的可組合特性,一個合約在不同產品之間相互調用時,其業務邏輯複雜度也會大大增加,這就給注入代碼攻擊提供了可能性。

據 PeckShield 團隊介紹,ERC777 標準擴展的功能之一是提供了“hook”機制,可以使普通地址或合約通過註冊一個 tokensToSend() hook 函數來控制或拒絕發送 Token。簡單點說,“hook”函數能夠在一筆交易完成前後將通知發送給交易雙方,並允許其取消交易,確保了交易相對的客觀公正。

因為“hook”函數通知是需要操作時間的,黑客就利用這一點,發起重入攻擊,在用戶一筆交易未完成的時候,又發起一筆新的交易,擾亂了原有的交易節奏。

這一次“黑客”慫了,下一次呢?

圖片來源於:PeckShield

這個理解起來可能有些門檻,簡單解釋下:

Alice 有 100 ETH,她準備將這 100 ETH 抵押給 Bob 準備借出 0.01 個 imBTC,但是還沒等到這筆交易確認時,Alice 又將這 100 ETH 抵押給另外一個對手方,於是,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 萬美元。

這一次“黑客”慫了,下一次呢?

圖片來源於: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 沒什麼區別了。

這一次“黑客”慫了,下一次呢?

這一次“黑客”慫了,下一次呢?

其實,在我們看來,這些討論多為偏頗和“站著說話不腰疼”。藉助中心化執法機構的力量找回被盜資產是年輕 DeFi 必須走的路,沒必要上升到“去中心化和中心化”的矛盾層面。

而且,“世界很複雜”,不只有白或黑,也不只有明或暗,它是多維度、多層次、多元的,真實的世界沒有這麼二元。

今天我們的所有生活和資產並不都在鏈上,追責更是都發生在線下,智能合約的世界是一個尚不完整的世界,也絕對不是法外之地。

同時,區塊鏈追求的本來就是保護個人隱私,而非實現絕對匿名。

DeFi 的世界也並不是只有代碼,事實上,從剛過去不久的那場“3.12 暴跌”事件中,我們也能感受到去中心化的 DeFi 加入中心化人為調控之後,能夠更大程度減少極端行情給用戶帶來的資產損失,去中心化合約交易協議 dYdX 兩次調高最小交易量,合成資產交易平臺 Synthetix 臨時將費用追償延長到了一小時,這些都有效地緩解了交易的延遲和阻塞情況,避免了給用戶帶來資產上的損失。

1inch 協助警方同樣可被理解為一次宏觀的人為調控。無論是對開發者還是平臺用戶來說,黑客盜幣帶來的損失可謂是“滅頂之災”,如果開發者團隊不及時與 inch和警方溝通配合,用戶的資產根本不可能找回,資產都沒了,又何談金融呢?

代碼是死的,人是活的。年輕的 DeFi 加入人為調控以應對極端情況無可厚非。

而且嚴格意義上來說,如今的 DeFi 產品實際上本來就處於混合模式,資產上鍊層面是中心化,而在可編程性是去中心化,治理上是半中心化的。

因此,我們想說:今天的 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 成為所有人都能放心使用的金融工具。

安全永遠既是行業的底線,也是至高無上的準則。


分享到:


相關文章: