KeyFrame內部研究專用

Towards Adoption of Symbolic Execution for DeFi Security - Palina Tolmach, DeFi Security Summit 2023

DeFi Security Summit - DSS·7月17日週一·19 min英文

三句話摘要

符號執行技術在智能合約漏洞檢測中的應用原理、工具對比與實踐技巧。 符號執行是發現智能合約中複雜邏輯漏洞的強大技術,但其實際價值取決於對工具特性的深入理解和根據場景進行的細緻參數調優。 符號執行相比傳統測試的優勢 — 單元測試只驗證具體輸入路徑,模糊測試難以隨機滿足複雜邏輯條件(如x+1==1024)。符號執行將變數視為符號量,自動遍歷所有執行路徑,使用SMT求解器計算能觸發bug的具體輸入值。

重點整理

重點
  • 1

    符號執行相比傳統測試的優勢 — 單元測試只驗證具體輸入路徑,模糊測試難以隨機滿足複雜邏輯條件(如x+1==1024)。符號執行將變數視為符號量,自動遍歷所有執行路徑,使用SMT求解器計算能觸發bug的具體輸入值。

  • 2

    工具實踐中的常見陷阱 — 工具默認配置可能無法報告某些漏洞(如MythRil在Solidity 0.8後不報告斷言失敗),需要調整Solidity版本或添加test case驗證工具正常運作;SMT求解器超時會導致工具無聲失敗。

  • 3

    性能與易用性的權衡 — Python工具提供豐富的調優選項(關閉檢測器、限制分析範圍、調整SMT頻率),在最優配置下效能接近;Rust工具啟動開銷導致無法突破1.5秒瓶頸。選擇合適工具需要權衡開發成本與分析時間。

  • 4

    符號測試是改進方向 — 新興趨勢允許在既有測試框架內應用符號執行,限制分析範圍提高效率,KVM等工具支持完整EVM語義,性能從32分鐘優化至3分鐘。

實用技巧與重點

乾貨
  • 工具列表及開發方
  • MythRil — Consensus
  • Manticore — Trail of Bits
  • HEVM — Theorem Foundation
  • IVM — 波鸿大學團隊
  • KVM — a16z & Runtime Verification
  • 性能基準數據(同一合約)
  • HEVM:1.5秒
  • MythRil:初期4分鐘無結果,優化後2分鐘內
  • KVM:4月32分鐘 → 現在3分鐘(筆記本環境)
  • 不同SMT求解器:性能差異最大20倍
  • Solidity版本影響
  • MythRil需要Solidity 0.8前版本才報告某些斷言失敗
  • 實踐技巧
  • 工具不報告漏洞時,先用`assert false`驗證工具是否正常運作
  • 支持多個SMT求解器很重要,允許針對不同合約優化
  • 可調優項:限制分析範圍、減少SMT求解器查詢頻率、聚焦特定漏洞類型
  • MakerDAO案例:簡化合約包含真實bug,4次函數呼叫後觸發不變式斷言,未優化時MythRil無法檢測

結論

結論

符號執行是發現智能合約中複雜邏輯漏洞的強大技術,但其實際價值取決於對工具特性的深入理解和根據場景進行的細緻參數調優。

完整解析

詳細

智能合約的安全驗證一直是區塊鏈開發的核心挑戰。傳統的單元測試雖然必要,但只能驗證開發者預設的具體輸入情景,覆蓋面有限;模糊測試通過隨機生成輸入提高覆蓋率,但面對複雜邏輯條件時無能為力。例如,若要觸發條件x+1==1024的代碼分支,模糊測試器需要隨機生成恰好為1023的值,在大多數情況下無法達成。符號執行技術應運而生,它將變數不視為具體值,而作為符號量可取任意值。工具會自動遍歷程式的所有可能執行路徑,根據遇到的條件(if語句、循環、斷言)持續縮小符號變數的取值範圍,最終利用SMT求解器確定是否存在滿足某個故障條件的具體輸入。

在實踐應用中,MythRil和Manticore等Python工具因高度可配置而更易使用,允許開發者調整分析範圍、關閉非必要檢測器、優化SMT求解器交互策略等。而HEVM等Rust工具速度最快(簡單案例1.5秒完成),但啟動開銷和配置選項較少限制了其適應性。性能與易用性的權衡常常體現在實際選擇中:對MakerDAO代碼庫的真實bug進行分析時,未優化的MythRil運行4分鐘後仍無結果,因為SMT求解器在複雜運算上超時;增加超時時間反而延長執行時間無濟於事;唯有調整求解器策略、限制分析範圍到特定功能後,才能在2分鐘內找到bug。這說明工具本身功能相近,但調優能力和靈活性決定了實際可用性。

使用符號執行工具時必須注意幾個關鍵點:首先,工具默認配置往往不完整,如MythRil在Solidity 0.8版本後默認無法報告某些斷言失敗,需要手動調整版本設定或透過簡單測試用例(如`assert false`)驗證工具確實在工作;其次,不同SMT求解器對複雜運算的性能差異可達20倍,針對特定合約選擇合適求解器至關重要;最後,對於大型合約須設置合理的求解器超時時間並優化分析策略(如限制路徑深度、關閉非必要檢測)。近期出現的符號測試(symbolic testing)趨勢通過將符號執行限制在既有測試範圍內,既提高了分析效率,又降低了集成複雜度。新工具如KVM在完整性(支持完整EVM語義及Foundry作弊碼)和性能上都取得突破,將符號執行從學術工具推向實用開發工具。

關鍵時刻

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