KeyFrame內部研究專用

Smart Contract Audit: Framing a Comprehensive Audit — Forge College

Forge College·6月10日週三·7 min英文

三句話摘要

智能合約安全審計的六步框架:從建立心智模型到撰寫正式審計計劃。 審計智能合約前,先用六步框架把架構風險、審計範圍、可測試目標全部定義清楚,自動化工具的輸出只是熱點圖,真正的洞察來自有結構的手動檢查。 先查基礎,再查細節:審計如同建築物檢查,必須先確認「地基」——即狀態存儲與升級機制的安全性——才有意義去檢查邏輯細節。若代理合約的升級控制權集中在單一地址,整套系統就存在單點失效風險。

重點整理

重點
  • 1

    先查基礎,再查細節:審計如同建築物檢查,必須先確認「地基」——即狀態存儲與升級機制的安全性——才有意義去檢查邏輯細節。若代理合約的升級控制權集中在單一地址,整套系統就存在單點失效風險。

  • 2

    範圍界定決定審計效率:明確說明「不審計什麼」與說明「審計什麼」同等重要。例如前端介面、外部已驗證的第三方合約,應直接排除,避免浪費寶貴的手動審查時間。

  • 3

    把目標轉化為可驗證的二元問題:「確保合約安全」這種模糊目標無法驗證;應改寫為「只有具備 MINTER_ROLE 角色的帳戶才能成功呼叫 mint() 函式」,這樣才能用測試直接證偽。

  • 4

    嚴重性分級指導資源分配:升級控制集中(無多簽或時間鎖)屬高危,需立即修復;添加時間鎖屬中危;Gas 優化屬低危,在基礎安全未確認前可暫緩處理。

實用技巧與重點

乾貨
  • 工具:Slither、Mythril(靜態分析工具,輸出作為熱點圖使用,非最終結論)
  • 平台:Forge College(forge.college)
  • 合約類型:ERC-20 Proxy 升級合約
  • 六步工作流:① 傳遞目標 → ② 建立壓力領域 → ③ 第3步(設定測試目標)→ ④ 建立壓力領域 → ⑤ 定義報告 → ⑥ 定義證明
  • 高危案例:升級控制權由單一 EOA 持有、無多簽(Multisig)、無時間鎖(Timelock)→ 攻擊者取得該私鑰即可替換整份合約邏輯
  • 審計計劃交付物:執行摘要(管理層用)、技術發現含 PoC(開發者用)、明確修復建議
  • 測試目標示例(ERC-20 Proxy):升級控制安全性、代理委派是否鎖定至 implementation、初始化函式防重入、owner 無法被非授權方呼叫

結論

結論

審計智能合約前,先用六步框架把架構風險、審計範圍、可測試目標全部定義清楚,自動化工具的輸出只是熱點圖,真正的洞察來自有結構的手動檢查。

完整解析

詳細

本課程來自 Forge College 的《Foundry》系列,屬於 Capstone「綜合安全審查模組」的首講,主題是在實際動手審計合約之前,如何正確地「框架」整個審計流程。講者以建築物檢查作為比喻貫穿全課:你不會一進門就開始選燈泡,而是先看地基是否有裂縫、承重牆是否完好。智能合約審計的道理相同,若不先確認狀態存儲與升級機制,就直接深入某個 Gas 優化問題,很可能在最關鍵的風險上完全視而不見。

課程第一個核心概念是「心智模型」或稱架構檢查。講者強調,Web3 系統的「地基」就是狀態存儲與升級方式,「承重牆」就是存取控制與資金提領邏輯。以課程案例的 ERC-20 Proxy 合約為例,若整個升級控制權僅由單一帳戶持有,而無多簽或時間鎖保護,那麼一旦該私鑰洩漏,攻擊者便能直接替換 implementation 合約的所有邏輯,等同於整個協議歸零。這種架構風險必須在第一時間識別,而非等到逐行讀完程式碼後才回頭發現。

第二個核心是範圍界定與目標轉化。講者指出,審計師必須清楚知道「不審計什麼」——例如前端 UI、已有第三方審計的外部依賴——這些應直接排除,否則三週的時間可能全耗在無關緊要的地方。在確定範圍後,客戶給出的模糊期望(如「確保合約安全」)必須轉化為可二元測試的具體命題:例如「只有持有 MINTER_ROLE 的帳戶才能成功執行 mint()」,這樣才能設計出真正能驗證或推翻假設的測試案例。

最後,課程介紹六步工作流與審計計劃的組成。六步流程確保從目標設定到嚴重性分級,每一個環節都有明確產出,避免審計過程流於感覺驅動。Slither、Mythril 等自動化工具的輸出,在此框架下被定義為「熱點圖」——它們告訴你哪些區域值得深入人工審查,而非直接作為發現的依據。最終交付的審計計劃包含三層:給管理層看的執行摘要、給開發者看的技術發現含概念驗證(PoC),以及明確可執行的修復建議。講者強調,一份好的審計計劃其實就是審計報告的骨架,在動手之前就把報告的結構想清楚,才能在整個過程中保持專注與一致性。

關鍵時刻

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