KeyFrame內部研究專用

From High-Level DeFi Properties to Concrete Security Bugs, Nurit Dor - DeFi Security Summit 2022

DeFi Security Summit - DSS·10月24日週一·20 min英文

三句話摘要

DeFi 智能合約中使用形式驗證屬性來系統性地發現漏洞的方法論。 規範品質決定測試品質;系統化的屬性定義與漏洞注入驗證,是發現 DeFi 合約隱蔽漏洞的最實用方法。 屬性分類提供系統化思維框架——從最基礎的單元測試到抽象的高級屬性,不同層級的屬性針對不同類型的漏洞,覆蓋範圍互補而非重複。

重點整理

重點
  • 1

    屬性分類提供系統化思維框架——從最基礎的單元測試到抽象的高級屬性,不同層級的屬性針對不同類型的漏洞,覆蓋範圍互補而非重複。

  • 2

    有效狀態屬性發現了 Compound V3 的位運算錯誤——通過檢查「若餘額 > 0 則相關位必開啟」這一簡單不變式,發現約 50% 的抵押品未被正確計入,這類漏洞用傳統代碼覆蓋率無法捕捉。

  • 3

    漏洞注入研究是衡量屬性品質的實測方法——與其假設屬性有效,不如故意注入已知漏洞,看屬性是否能檢測到,Silo Finance 的案例顯示 20 個屬性對 6 個注入漏洞的覆蓋率無重疊。

  • 4

    屬性定義本身就能發現漏洞——即使未執行形式驗證工具,仔細思考「什麼應該永遠成立」這個問題,就能透過邏輯推理在代碼審查時發現錯誤。

實用技巧與重點

乾貨
  • 屬性的 6 大類型
  • 單元測試:檢查特定函數行為
  • 有效狀態:系統必須始終滿足的條件
  • 變量轉換:什麼能變、誰能變、何時必須變
  • 狀態轉換:系統在狀態間的合法轉移
  • 高級屬性:不依賴具體實現的抽象條件
  • 風險評估:思考最糟情況與反面情境
  • 屬性規範化方式
  • 邏輯形式:「如果 P 成立,執行操作 X 後,Q 必成立」(霍爾邏輯)
  • Certora 驗證語言(CVL):程序式語法
  • Fuzzing 框架:另一種屬性編寫方式
  • 真實案例的發現
  • OpenSea:函數簽名推導屬性,無需查看實現
  • Compound V3:一個位向量屬性同時發現 2 個漏洞(其中 1 個高危)
  • Silo Finance:總供應量變化推導存款變化,發現計算錯誤
  • SushiSwap 荷蘭拍卷:「人不得申領兩次」這一簡單規則捕捉地址使用錯誤
  • 覆蓋率測試結果
  • Silo:6 個漏洞注入,20 個屬性,無單一屬性捕捉全部漏洞
  • 不同屬性間覆蓋率無重疊區域,組合價值高

結論

結論

規範品質決定測試品質;系統化的屬性定義與漏洞注入驗證,是發現 DeFi 合約隱蔽漏洞的最實用方法。

完整解析

詳細

Certora 產品副總裁 Nurith Tydor 在此演講中闡述了一套系統化的屬性定義方法論,用於在 DeFi 合約中發現深層漏洞。她開篇指出,所有系統都存在漏洞,問題不在於漏洞是否存在,而在於能否有效地定義與檢測它們。

她首先將屬性概念類比到電梯系統:單元測試只檢查門是否能打開,有效狀態則要求運行中門始終關閉,變量轉換關注樓層號何時改變,狀態轉換則把整個系統視為自動機。這層層遞進的分類避免了盲目測試,使團隊能針對不同風險維度進行檢驗。在代碼覆蓋率方面,Tydor 指出傳統的行覆蓋率或路徑覆蓋率都不足以保證安全性,因為漏洞往往出現在特定數值組合下,無法計算但可通過漏洞注入研究來評估。

在具體案例中,Compound V3 的例子最具說服力。該協議使用 uint16 位向量追蹤用戶的抵押品類型,同時用映射表存儲具體額度。一個簡單的不變式「若餘額 > 0 則位必開啟」揭示了位計算中的計數錯誤,導致約 50% 的抵押品未被正確記錄。這個漏洞不僅高危(用戶可被不正當清算),而且該屬性甚至發現了另一個相關漏洞(清算時位未置零)。同樣,Silo Finance 的例子展示了「總供應量變化推導存款變化」這一簡單規則如何捕捉到計算錯誤,導致協議喪失所有流動性。

Tydor 強調,屬性本質上是邏輯命題,可用霍爾邏輯或 CVL(Certora 驗證語言)等形式化語言表達,但即使不用工具驗證,僅通過思考「什麼應該永遠成立」就能在代碼審查時發現漏洞。SushiSwap 荷蘭拍卖的案例說明,「任何人不得申領兩次」這一簡單規則能捕捉到多簽地址被誤用的漏洞——這類漏洞會被傳統單元測試忽略,因為測試通常只考慮 msg.sender,而非其他可能的調用者。

最後,她引入漏洞注入研究來量化屬性的覆蓋率。Silo 的研究顯示 20 個精心設計的屬性對 6 個注入漏洞的檢測覆蓋率中,沒有任何屬性能捕捉全部漏洞,但也沒有重疊冗余——這說明多維度屬性組合的價值在於互補,而非堆疊。

關鍵時刻

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