KeyFrame內部研究專用

Clear as Mud, Gonçalo Sa - DeFi Security Summit 2022

DeFi Security Summit - DSS·10月19日週三·10 min英文

三句話摘要

Gonzalo Skateboard 分享開發 DeFi 協議時最常見的四個致命錯誤,以及為什麼它們會危害協議安全性。 協議安全的最大敵人不是複雜的攻擊,而是開發者為了看起來安全而做出的選擇。 可讀性決定可審計性:調用圖複雜到無法在任何螢幕上完整顯示的代碼,是審計人員的噩夢。Diamond Standard 等標準好心卻導致代碼過度碎片化,實際上降低了安全性。

重點整理

重點
  • 1

    可讀性決定可審計性:調用圖複雜到無法在任何螢幕上完整顯示的代碼,是審計人員的噩夢。Diamond Standard 等標準好心卻導致代碼過度碎片化,實際上降低了安全性。

  • 2

    不可變優於可升級:不要假設你需要升級功能。Uniswap 因為完全不可升級而被讚揚,VCV 則因為保留了權限函數導致私鑰被盜。用版本控制管理不同合約版本,風險更低。

  • 3

    安全工具應該全部組合使用:靜態分析、形式驗證、審計、變異測試,每一個工具都有其時間和地點。Maker 是正面案例,充分利用了形式驗證。不應該因為選擇了某個工具就放棄其他工具。

  • 4

    過度防禦等同於代碼污染:nonReentrant 修飾符被濫用到隨處可見。並不是所有函數都需要防重入,有時重入本身不是問題。Thorn 平台被批評時,多數批評根本不是真正的漏洞。

實用技巧與重點

乾貨
  • Diamond Standard:協議升級標準,但導致代碼碎片化且難以審計
  • Uniswap:完全不可升級的協議,因此更安全
  • VCV:反面案例,因保留權限函數而遭私鑰盜竊
  • Maker:正面案例,正確運用形式驗證
  • 安全工具列表
  • 靜態分析(Static Analysis)
  • 形式驗證(Formal Verification)
  • 審計(Audit)
  • 變異測試(Mutation Testing)
  • nonReentrant 修飾符:被過度使用,導致代碼膨脹
  • Thorn 平台:講者提及被評論者誤認為有重入與可鍛性漏洞,但實際上並非漏洞
  • 2020 年 GitHub 討論:關於 Diamond Standard 升級功能的爭論

結論

結論

協議安全的最大敵人不是複雜的攻擊,而是開發者為了看起來安全而做出的選擇。

完整解析

詳細

DeFi 開發面臨一個根本性的矛盾:開發者想要創新、想要用更複雜的架構加速開發,但過度的複雜性反而自我毀滅。Gonzalo 的談話核心在於四個具體的反面教材。

第一個問題是代碼可讀性。許多協議開發者追求高度模組化,把代碼分散到無數個小檔案,每個檔案只有一個定義和一個介面。這看似井井有條,但當審計人員打開你的項目時,他們面對的是一個龐大到無法在任何螢幕上顯示的調用圖。Diamond Standard 這類協議升級標準初心是好的,但實踐中導致代碼過度碎片化。講者強調:不可讀的代碼就是不可審計的代碼,不可審計的代碼就更容易被破解。這不是形容詞,是邏輯推論。

第二個問題是不必要的升級功能。講者稱之為「在代碼裡留後門」。2020 年的 GitHub 討論中,有人辯稱 Diamond 可以移除升級功能,但為什麼一開始就要加上呢?Uniswap 之所以被讚揚,正是因為它完全不可升級。如果需要新版本,用戶可以在前端選擇不同版本,但智慧合約本身永遠不變。VCV 是反面教材:它保留了權限函數,最終導致私鑰被盜。不可變的合約被部署後,如果沒有被攻擊,其被破解的風險隨時間遞減。

第三個誤區是在安全工具之間選邊站。開發者常說「我用了形式驗證,所以不需要靜態分析」或「我要審計,所以不需要變異測試」。這是錯誤的。靜態分析、形式驗證、審計、變異測試(像 Echidna 的變異工具),這些全部應該組合使用。Maker 是正面案例,正確地運用了形式驗證。講者的觀點是:不管你現在處於哪個融資階段,這些工具最終都會用上,乾脆全部用。

最後一個問題是過度防禦。nonReentrant 修飾符幾乎成了 DeFi 代碼的標配,但並非每個函數都需要它。重入本身有時不是問題。Thorn 平台的批評者們指責其代碼有重入和可鍛性問題,但講者指出這些根本不是實際的漏洞。代碼被不必要的防禦措施污染,結果反而降低了代碼品質和可讀性。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web3 安全」的內容

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️
8 min
Web3 安全英文8月14日

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️

Zach Humphries

  • 機構支撐的積極意義:價格操縱常被視為負面,但Ripple掌握大量XRP供應與escrow,在熊市期間提高價格下限,實際上替零售投資者鎖定了低風險的積累區間,這不是剝削而是市場穩定機制。
  • 歷史模式驗證:2024年7月至11月XRP在50美分附近橫盤整理,低點觸及42美分(wick),高點65美分;隨後11月5日至12月5日單月上漲456%,年底到2025年初累計漲幅534%,這個歷史周期正在1美元價位重演。
  • 比特幣聯動邏輯:講者在4-5月就預測「如果比特幣跌至60k以下,XRP會跌至1美元或更低」,此預測精準應驗,反映出熊市中兩者的明確連動關係。
Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady
72 min
Web3 安全英文PODCAST8月5日

Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady

Zero Knowledge

  • 反向 Linux 架構:Commonware 刻意暴露棧各層級控制,讓開發者自訂執行環境、共識機制、密碼學實現,而非像 Cosmos SDK 只允許應用層以上定制。2-3 個月能組裝一條定製鏈,代價是額外深度但回報是長期維護成本降低及效能優化彈性。
  • 容錯假設的典範轉移:Alpine Glow(Solana 2025)實現單輪投票定終的關鍵是將容錯預算分離為獨立的 Byzantine 和 Crash 容限。傳統系統把 33% 當一個整體預算;新模型允許 20% 惡意加 20% 崩潰,打破了 PBFT 理論界線,釋放單輪設計空間。
  • Minimet 與 Multimet 的遞進:Minimet 是 5F+1 設定下的乾淨構造,實現更短視圖延遲;Multimet(剛發布)進一步允許並行 mini-commits 且驗證者可推翻領導者審查,使用者交易在全球分布式網路達到 200-300 毫秒端到端定終。
Private Information Retrieval (PIR) with Alex Hoover
64 min
Web3 安全英文PODCAST7月29日

Private Information Retrieval (PIR) with Alex Hoover

Zero Knowledge

  • PIR 保護的是訪問模式,不是資料本身
  • PIR 與加密不同,它關注的是隱藏「客戶端查詢了什麼」,而非「資料是否加密」。在公開資料庫(如區塊鏈)上,客戶端可以在不洩露查詢對象給伺服器的情況下檢索特定條目,解決了輕量級客戶端的隱私和防審查問題。
  • 客戶端預處理方案是突破瓶頸的關鍵