KeyFrame內部研究專用

Detecting real-world Vulnerabilities — Yannis Bollanos | Dedaub

Web3 Security Summit·8月9日週五·35 min英文

三句話摘要

安全公司如何透過改進靜態分析管線,偵測讀寫重入與部分所有權等真實世界智能合約漏洞。 真實世界的智能合約攻擊往往藏在「表面安全」的設計之下,靜態分析必須結合資金敏感性啟發、跨合約重入簽名資料庫與部分所有權量化指標,才能在維持低誤報率的同時有效偵測這類隱性漏洞。 精確度與完整性是靜態分析的核心矛盾。 誤報讓工程師放棄工具,漏報讓工具失去價值;該公司的策略是以啟發式過濾降低誤報,同時以跨合約分析資料庫提升完整性。

重點整理

重點
  • 1

    精確度與完整性是靜態分析的核心矛盾。 誤報讓工程師放棄工具,漏報讓工具失去價值;該公司的策略是以啟發式過濾降低誤報,同時以跨合約分析資料庫提升完整性。

  • 2

    讀寫重入的可偵測關鍵在於「資金敏感儲存槽位」。 Balancer 提款流程中 LP token 總供應量先更新、池子餘額後更新,在兩者中間的回調窗口讀取 LP 價格即可獲得膨脹值。偵測器若對所有重入點的 view 函數一律報警誤報率極高,因此只對「讀取值最終流入 transfer 參數」的儲存槽位報警,大幅縮小誤報範圍。

  • 3

    透過分析所有已部署合約可建立重入簽名資料庫,使偵測具備傳遞性。 一旦某簽名的實現被標記為可重入,所有呼叫該簽名的上層函數也會被傳遞標記,讓偵測器跨協議泛化,並在 Paribus 等 Compound V2 Fork 攻擊上驗證有效。

  • 4

    「部分所有權」概念突破了傳統「owner 調用即可信」的假設。 Arcadia 為使用者部署的 Vault 合約中,owner 的敏感操作受到大量外部呼叫或 require 限制,代表 owner 其實是受約束角色。統計這類限制的數量,可作為「部分所有」程度的量化指標,一旦合約中存在未受保護的重入點,即使調用者是 owner 也應發出警告。

  • 5

    --

實用技巧與重點

乾貨
  • 公司已完成 200+ 次審計,累積漏洞賞金超過 300 萬美元
  • 引用兩篇論文:現有自動化工具僅偵測應偵測漏洞的 20-30%,且誤報率高
  • Sturdy Finance:2023 年 6 月被盜約 80 萬美元(Balancer 穩定幣池讀寫重入)
  • Paribus(Compound V2 Fork,Arbitrum):被盜 7 萬美元(讀寫重入變體)
  • Arcadia Finance:被盜約 50 萬美元(部分所有權重入繞過健康度檢查)
  • 分析工具鏈:Gigahorse(EVM bytecode → IR)、Symbolic(路徑敏感符號分析)、Datalog(遞迴關聯查詢引擎)
  • 資金敏感啟發式:儲存槽位讀取值若流入 transfer 的接收地址或金額參數 → 標記為貨幣敏感槽位
  • 讀寫重入偵測查詢三要素:① 識別重入點(重入簽名調用或原生轉帳)② 記錄尚未更新的儲存 ID ③ 確認該儲存 ID 被標記為資金敏感
  • 重入簽名資料庫:對所有已部署合約傳遞式分析,重入標記沿調用鏈向上傳播
  • 部分所有權量化指標:統計合約中 owner 可達的敏感操作被額外限制(外部調用驗證 / require / if)的次數,數量越多代表部分所有程度越高
  • Chain Security 曾率先揭露 Curve 的讀寫重入問題(本演講向其致謝)
  • --

結論

結論

真實世界的智能合約攻擊往往藏在「表面安全」的設計之下,靜態分析必須結合資金敏感性啟發、跨合約重入簽名資料庫與部分所有權量化指標,才能在維持低誤報率的同時有效偵測這類隱性漏洞。

完整解析

詳細

演講者 Yanis 任職於一家以程式分析技術見長的安全公司(推測為 Dedaub),該公司完成超過 200 次智能合約審計,累積漏洞賞金逾 300 萬美元。本場演講的起點是一個業界共識:根據兩篇學術論文的引用,現有自動化安全工具僅能偵測到應偵測漏洞的 20-30%,且大量誤報讓開發者與安全工程師望而卻步。因此,改進靜態分析必須同時兼顧兩個相互拮抗的目標:精確度(低誤報,讓人願意看警告)與完整性(低漏報,讓工具真正有價值)。

為了達成這個目標,該公司建構了三層分析管線。第一層 Gigahorse 是 EVM 位元組碼反編譯器,能將原始 bytecode 提升為標準化中間表示(IR),恢復變數與語句結構,並推斷記憶體存取模式、陣列指標、結構體指標與合約的高層儲存佈局,無需接觸原始碼。第二層 Symbolic 採用路徑敏感方式,為 IR 中所有變數賦予符號值與具體值,使分析能夠精確區分「owner 調用」、「受檢地址調用」與「任意用戶調用」等執行上下文——這是區分「信任輸入」與「汙染輸入」的關鍵能力。第三層則是 Datalog 查詢引擎,將所有程式執行資訊(控制流、記憶體使用、符號值等)儲存於關係資料庫式表格,透過遞迴聯結查詢生成漏洞報告,且能保障多項分析的效率。

第一個案例圍繞 Sturdy Finance 的 800,000 美元損失展開。根本原因是 Balancer 穩定幣池在提款流程中存在狀態更新順序問題:先燒毀 LP token(總供應量下降)、執行代幣轉帳並回調接收者,最後才更新池子的實際餘額。攻擊者在回調窗口內讀取 LP token 的價格——此時總供應量已減少但池子餘額尚未反映,導致每份 LP token 的隱含價值被人為抬高,攻擊者藉此膨脹抵押品價值,借出超額資金。靜態分析的困難在於:合約確實使用了重入鎖,而讀取操作都是 view 函數,不受鎖保護;若對所有「重入點之後仍有未更新儲存」的 view 函數一律報警,正常合約中打破 checks-effects-interactions 模式但安全使用重入鎖的情形將造成大量誤報。為此演講者提出「資金敏感儲存槽位」啟發式過濾:若某槽位的讀取值最終流入 transfer 的接收地址或金額參數,則標記為貨幣敏感槽位,偵測器只對此類槽位在重入點的讀寫不一致情況報警。同時,透過對所有已部署合約進行傳遞式分析,可建立一個重入簽名資料庫——一旦某簽名的實作被判定為可重入,所有呼叫該簽名的上層函數也會被遞迴標記。這一機制在 Paribus(Compound V2 Fork,Arbitrum 上損失 7 萬美元)等類似案例上得到驗證,確認偵測器的泛化能力。

第二個案例是 Arcadia Finance 的 500,000 美元損失,展示了一種更微妙的攻擊面:「部分所有權」。Arcadia 為每位用戶部署獨立的 Vault 合約,用戶名義上是 Vault 的 owner,卻受到協議設計的多重限制。Vault 允許 owner 提供 Action Handler(需通過白名單驗證),並在 Action Handler 執行完畢後進行健康度檢查(確保抵押品 ≥ 借貸金額)。攻擊者先將抵押品轉入 Action Handler,再從 Action Handler 呼叫 `liquidateVault`:此時 Vault 內無抵押品僅剩債務,清算條件成立,清算函數設定了兩個狀態變數,使後續的健康度檢查被完全跳過,攻擊者因此帶走所有資金而無需還款。傳統靜態分析通常將 owner 調用視為可信,不發出警告;但演講者指出,Arcadia Vault 的 owner 在許多敏感操作上受到外部調用驗證、require、if 條件的額外限制——這些限制的數量正是「部分所有」程度的量化指標。若分析器偵測到:① 調用者雖為 owner 但合約對其操作設有大量額外限制,且 ② 存在未受重入保護的外部回調,則應提升警戒並報警,即使調用者是已驗證地址。

---

關鍵時刻

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