DeFi狂熱後的危機帶來什麼教訓?本文作者在文中呼籲 DeFi 專案審慎地檢查專案的安全模型並開誠佈公、充分地告知使用者其中的安全風險。考慮到這篇文章的實際成文時間(早於 2 月 ETHDenver 活動),作者對 DeFi 領域已經陷入狂熱的警告可謂具有先見之明。
bZx 攻擊事件在 ETHDenver 活動期間發生,後來 Curve 專案似乎也出了些問題。攻擊事件結束了,但 DeFi 的故事還沒有結束,也不該結束。為了讓 DeFi 走向成熟,也該好好感受一下作者在本文中的大聲疾呼。
本文源於2020年2月我在 ETHDenver 發表的一場演講。
不知你是否看過《乖仔也瘋狂(Risky Business)》,這是一部由湯姆·克魯斯主演的成長電影。戲中的他在父母離家後捲入了一系列的麻煩,他必須自己動手解決問題,然而這隻會造成更多的麻煩。這段旅程之所以可愛,是因為長著一張娃娃臉的阿湯哥太天真了,一刻也沒有閒著。如果他年紀再大一點或更幼稚一點,那他的選擇就太沒責任心了,任何人都無法寬恕。
密碼貨幣行業跟這部電影多有相似之處。我們逃避了許多本該直面的事情,也拒絕從既往的錯誤中汲取教訓,甚至拒絕承認智慧合約也不是完全信得過。等到真的把事情搞砸,又拿理想主義和不夠成熟來給搪塞他人。
但是,天真並不能降低風險,而且隨著時間的推移,這套說辭也不會再被接受。如果我們真想得到人們的尊重,而非顏面無存,就不該再這樣裝傻賣萌,掩蓋行業的實際風險。
遺忘歷史之人終將重蹈覆轍
前事不忘,後事之師,但如果不吸取教訓,看過就忘,那一定會重蹈覆轍。現狀就是這樣,只要研究一下智慧合約攻擊,就會發現這只是同一種攻擊在一遍一遍又一遍地重演……
如何才能真正降低風險?
1. 自我意識 2. 警惕 3. 感激 4. 偏執
總而言之,我們需要一種文化來減少和降低風險:
自我意識:我們應該意識到我們自己和我們的行為對周圍的人以及更廣闊的世界所產生的影響。
警惕:我們應該保持警惕,在風險導致負面結果之前就覺察到它們,無論是對我們自己還是周圍人的風險。我們也應該積極尋求資訊,以減少 「未知的未知」。
敬畏:我們應該敬畏這些系統的複雜性,並敬畏我們所擁有的力量,以及我們能對周圍真實存在的人產生的影響。
偏執:我們應當保持一種深層次的恐懼、偏執和懷疑。否則長久以來只能寄希望於裝可愛了。
何為風險?
風險就是壞事發生的可能性,即事情不按預期發展的概率。當你期待著一件事情的發生時 —— 期待著大賺一筆、期待著拯救世界、或做出一款令人稱奇的產品 —— 然後實際發生的事情卻剛好相反。
風險無處不在,而我們推理風險的能力卻非常糟糕。
我讀過太多關於網際網路進化的內容。早期的網際網路建設者真是一群過於樂觀的理想主義者,雖然我們今天仍生活在他們創造的成果中,但他們從未想象過 Google 和 Facebook 能有如此之大的影響力和控制權。
https://nymag.com/intelligencer/2018/04/an-apology-for-the-internet-from-the-people-who-built-it.html
Lanier:最初的廣告演變成了大規模的不間斷行為干預過程,每個人都處於裝置的監視之下,並在精心設計的刺激下潛移默化。這一可怕的事情早已被科幻作家所預見,Philip K. Dick 或《1984》就直接描繪了這樣的場景。儘管存在這麼多警告,我們依然步入了這樣的世界,在數字網路的統治之下創造了大規模的行為矯正機制。而這樣做是因為我們希望同時成為棒棒的社會主義者和棒棒的自由主義者。
我們需要對可能發生的一切有所覺察,如此才能嘗試減輕我們面臨的風險,甚至是深層次的道德風險。我們並不想自己想象的那樣,在連線每一個人並創造一個新的去中心化的世界。事實上,我們正在創造一個超級高效的隱私侵犯系統,而全世界每一個人都難逃魔爪。
所有風險
風險的種類五花八門。有些乃金融市場所獨有,而有些風險則專門針對密碼學貨幣和智慧合約。
DeFi 最有趣也最可怕的一點是,它將上述兩種本身就具備風險的事物結合在了一起。我們將它們放在一起,掰開揉碎,然後又出於某種僥倖心理,希望一切都沒有問題。
真想要不出問題,就別偷懶啊你們。
每當這些系統相互連線,彼此依賴,或者互相疊加時,你就處在巨大的風險中。我們喜歡將 DeFi 想象成 「DeFi 樂高(Lego)」,但如果它的基礎不牢固,它實際上就是 「DeFi 疊疊樂(Jenga)」 了,而我們也會摔得鼻青臉腫。
每當有人未遵守協議時,你也會處於風險之中。DeFi 確實消除了一些交易對手方的風險,但你仍然無法避免由流動性、滑點、以及老土的以訛傳訛帶來的風險。如果一個處理著數百萬美金使用者存款的 DeFi 系統可以升級,那你簡直秒秒鐘都是幾十萬上下啊。
如果你還沒有關注 Chris Blec 的 Twitter,趕快去關注!他正在做一項研究,試圖確認這些可升級的智慧合約是如何保證安全性的。僅僅依靠一枚私鑰麼?(這是在拷問 bZx,因為他們在 2018 年已經承諾使用了多籤加治理的解決方案。)是什麼在保護智慧合約的程式碼不被更改或控制?又是什麼在守衛著這些錢?大部分(我們就不說全部了)這些 DeFi 智慧合約都是可升級的。而且 ······ 請注意!人們還會被釣魚 —— 即便那些控制著複雜的智慧合約系統的人也不例外。
風險的範圍如此之廣,以至於我們難以承受,更別提管理這些風險了。太多的事情威脅著個人、系統、乃至這些相互交織的系統。
這些風險對於 DeFi 的生態系統而言意味著什麼?它能有多糟呢?
2020 年 2 月 15 日:Fulcrum / bZx
好吧,在我此次演講的同時(2020 年 2 月 15 日,美國標準時間上午 9:50)發生了一件糟糕的事情,人們還在嘗試確認這是不是對智慧合約的攻擊或者對漏洞的利用。據估算,攻擊者透過某些複雜的手段獲利大約 35 萬美金。然後,更多的細節浮出水面,而事情也變得越發複雜。兩天後,類似的攻擊再次發生,而這次攻擊者獲利 65 萬美金。
譯者注:作者在這裡指的是 2 月 15 日發生在 bZx 協議上閃電貸攻擊事件。
然而,在我看來,這次事件究竟源於駭客攻擊、利用、漏洞還是市場操縱都無關緊要。總之,發生了一些意料之外的事情。而每當金融市場發生意料之外的事情時,很少是好事。要是這種事情發生時還有一方賺到了 35 萬美元,那通常意味著有另一方損失了 35 萬美元。
發生這些攻擊的原因是某些 #DeFi 系統以各種方式相互連線、依賴和構建。而當作惡者在所有這些不同的平臺上合併頭寸時,TA 賺到了一大筆錢。但是,某些人賺的盆滿缽滿的背後,是另一些人在大虧特虧。
來自 Aave 的 Stani 在 Telegram 中轉發了這條行家的訊息,詳細說明了可疑的漏洞是什麼。儘管分析聽起來頭頭是道,但結局仍然讓我感到困擾:
「然而,如果上述分析無誤,那麼這聽起來一點也不像一次攻擊。它並非合約中的漏洞 —— 而是一套複雜的套利 / 市場操縱計劃,橫跨了 4 個最知名的 DeFi 網站,而非一次攻擊。」 Stani 分享的資訊,儘管不是他寫的
譯者注:bZx 閃電攻擊事件始末可看 由 PeckShield 提供的分析。
打住打住,這太荒謬了!「我們的智慧合約沒有被黑!我們不是用不安全的方式寫了糟糕的程式碼,只是我們的程式碼被用來做了不安全的事!」 這像人話嗎?
這就是為什麼我說我們需要更加勤奮和偏執,而不要拿法律術語來當擋箭牌,更別想著用花哨的詞語來掩蓋現實。試圖從技術上或法律上來推卸責任並不會改變已經發生的事實,也不會對受害者有所補償。相反,專注於創造安全可靠的產品以防止意外的發生,並保護使用者的資產不受損失,才是重點。
註釋:後來發現攻擊是透過 操縱 / 利用 系統來輔助發動的,但真正的突破點還是在程式碼本身的錯誤上。
不管怎樣!在發生攻擊的那個清晨,Phil Daian 像往常一樣發表了一些富有先見之明的想法。如果你還不認識 Phil,容我介紹一下,他在這類事情上做了大量的研究。他在 Devcon 4 上的演講就是關於智慧合約安全的。他指出了以下幾點:
「安全性不僅僅體現在程式碼能否按照設計執行,還包括產品的設計應當為使用者提供哪些屬性。以太坊社羣在前一方面表現出色,而後一方面則因為 #DeFi 的利潤豐厚而做得一塌糊塗。僅僅因為你的程式碼正常執行並不能代表你的系統安全無虞。」來源:Phil 在某個安全 Telegram 群組內的言論
這是我們所有人都應當首先考慮的事情,我沒有其它需要補充的內容。
儘管我們能從這輪攻擊中收穫良多,但考慮到 bZx 團隊早在 2019 年 9 月就被預先警告過這類攻擊方式了,教訓實在是過於慘痛:
太長不看:由於在沒有驗證回報率的前提下依賴了一個鏈上的去中心化價格預言機,DDEX 和 bZx 很容易受到原子化價格操縱的影響。這將導致 DDEX 在 ETH/DAI 市場中損失流動的 ETH,以及 bZx 損失所有的流動性資金。幸運的是,實際上尚未有資金蒙受損失。—— samczsun
Sam Sun —— 一位安全研究員、白帽、也是一名出色的智慧合約駭客 —— 寫了一篇關於 DDEX 和 bZx (又名 Fulcrum) 的文章,在文中他研究瞭如果操縱它們所依賴的喂價方式會有什麼後果。(需要說明的是:他負責任地向合適的團隊披露了漏洞,並在修復過程中協助他們,就和他在幫助 0x、Curve、ENS、Kyber、Cheeze Wizards、Livepeer、Authereum、以及其他團隊時一樣。