Discussion - Auditors, Sessions 3 & 4, DeFi Security Summit 2022
三句話摘要
智能合約安全評估的實務方法、行業標準化、開發者準備與審計員責任邊界的專家討論。 安全評估的真正價值在於及早識別風險並指導改進方向,而非提供絕對保證;開發者應視其為持續安全過程的一部分,而非單次解決方案。 審計命名與客戶期望管理
重點整理
重點- 1
審計命名與客戶期望管理
- 2
「審計」一詞暗示完整保證,與實際情況不符。業界改用「安全評估」、「尽職調查」或「審查」,更準確反映服務本質——在時間和預算約束下,識別已知漏洞模式和邏輯問題,而非完全消除風險。
- 3
前置準備的槓桿效應
- 4
開發者應在評估前完成靜態分析(Slither等工具)、編寫單元測試、準備清晰文檔。這讓審計員不必耗時檢查工具能自動發現的基礎問題,而專注於商業邏輯和複雜漏洞,大幅提升審計價值密度。
- 5
責任邊界與事件響應
- 6
審計員不應對後續駭客攻擊負責。評估是有時限的評估服務,即使投入無限資源也無法保證發現所有問題。審計員的責任是清楚傳達發現,客戶需自行決策。事件發生時,審計員通常會協助分析是否有遺漏,但不作為常設事件響應團隊。
- 7
持續安全過程勝過末期審計
- 8
安全不應只在部署前做一次審計。應從設計階段就納入安全人員,進行威脅建模、設計審查、編寫測試,然後才審計,部署後還需監控應急預案。過早設計評審效果不佳(因人未準備好接受意見),最佳時機是架構確定但仍可調整的階段。
實用技巧與重點
乾貨- 標準與工具
- EthTrust(以太坊企業聯盟):三階段檢查框架(靜態分析→人工審核→質量檢查)
- 推薦工具:Slither、Mythril、Foundry、Eth Doppelgänger(VS Code 擴展,用於追蹤 OpenZeppelin 依賴版本)
- 審計報告組成
- 系統概述(驗證審計員理解設計)
- 執行摘要(供決策者快速掌握要點)
- 漏洞發現清單(分類與嚴重程度)
- 集中化/治理風險分析(如多簽持有者地址分布)
- 最佳實踐建議(區分安全漏洞 vs. 品質建議)
- 代碼成熟度矩陣(長期改進路線圖)
- 時間與成本
- 複雜協議深度評估:8 週左右,可能發現 15+ 嚴重漏洞、20+ 高危漏洞
- 近期費率上漲約 30%,因等待隊列極長、成本上升、新進競爭者進場
- 排隊等待期可利用免費辦公時間準備,不全是負面
- 代碼組織權衡
- 模組化:便於重用和追蹤依賴,但增加審計複雜度
- 單體架構:對特定用途足夠,更易閱讀,無須過度設計
- 可升級合約
- 屬性質為功能而非缺陷,但實施複雜且易出錯
- 需從設計初期規劃,每步驟謹慎驗證
- 替代方案:使用適配器模式處理依賴升級
結論
結論“安全評估的真正價值在於及早識別風險並指導改進方向,而非提供絕對保證;開發者應視其為持續安全過程的一部分,而非單次解決方案。”
完整解析
詳細這場討論匯聚了 Sigma Prime、Trailbits、Consensys Diligence、Open Zeppelin 等主要安全審計公司的領導者。討論開篇澄清了一個根本性的語言問題:「審計」一詞在智能合約領域造成了嚴重誤導。傳統財務審計暗示完整、全面的檢查和明確的通過/失敗判定,這使許多開發者誤認為安全審計能提供類似保證。實際上,智能合約評估受制於時間預算,無法發現所有漏洞,更無法保證代碼在部署後不被攻擊。因此業界正逐漸改用「安全評估」、「尽職調查」或「審查」等術語,更準確反映服務性質。
關於開發者何時應尋求評估,專家指出時機至關重要。過早評估(代碼仍在快速迭代)浪費資源,因為評估結果會迅速過時;過晚評估(部署後才檢查)則失去改進機會。最佳時機是當主要架構和假設確定、代碼基本凍結但仍可調整時。為協助開發者準備,以太坊企業聯盟推出了 EthTrust 標準,分三個階段列出應檢查的項目。第一階段涵蓋靜態分析工具可自動檢測的基礎問題,如不當使用 tx.origin 進行身份驗證;第二階段是人工審核,確認代碼是否安全使用這些特性;第三階段是質量檢查,包括文檔完善度、規範清晰度和生產就緒度。
專家強烈建議開發者在接受評估前先自行完成大部分準備工作:運行 Slither 等靜態分析工具、編寫單元測試、準備清晰的設計文檔和規範。這不只節省成本,更重要的是讓審計員把有限時間專注在複雜的商業邏輯漏洞和經濟攻擊向量,而非浪費在工具能自動檢測的基礎問題。一些客戶抗拒這種要求,認為他們已付費應由審計員全額檢查,但專家認為這實際上損害了自身利益,因為審計時間被分散到低價值項目。
評估報告的結構也反映了行業對「評估不是保證」的理解。優質報告包含多個層次:系統概述幫助管理層確認審計員真正理解了設計;執行摘要提供高層風險判斷;漏洞列表逐條說明;集中化分析探討若維護者惡意行動會發生什麼;最佳實踐建議區分安全漏洞與品質改善;代碼成熟度矩陣提供中長期改進路線圖。評估不是聲稱代碼「安全」或「不安全」,而是清楚陳述現狀和風險。
討論中一個激烈的議題是審計員責任。社區中有人主張若經評估的協議遭駭,審計員應承擔責任。所有專家堅決反對。評估是有時限的專業服務,即使投入無限時間也無法保證發現所有漏洞——除非進行昂貴的形式驗證,而那也無法証明審計員未想到的變數。審計員的責任限於清楚傳達發現和風險,使客戶能做出知情決策。若發生事件,審計員通常會協助分析相關區域是否有遺漏,提供技術支援,但這是合作而非保證。
最後,討論觸及可升級合約是特性還是缺陷的長期辯論。共識是可升級性本身是合法的特性,許多現代協議確實需要升級能力。然而實施極其複雜且易出錯。開發者應從設計初期就規劃升級機制,謹慎執行每一步驟,並考慮代理模式以外的替代方案如適配器。問題不在升級本身,而在於許多人盲目加入升級功能(「以防萬一」)卻未深思,或在用戶互動中忘記合約可升級的風險。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

