為什麼 Euler Finance 有審計報告卻還是被黑了 $1.97 億?審計到底能和不能發現什麼?
Euler Finance 的案例是「審計通過但依然被黑」最典型的例子,背後有明確的機制性原因。Euler Finance 在被黑之前有兩家頂級安全公司(Sherlock、Halborn)的審計,但 2023 年 3 月的攻擊利用的漏洞不在任何審計的覆蓋範圍內。原因:Euler Finance 在最後一次被審計的程式碼版本之後做了多次升級,攻擊者利用的是在一次升級中新引入的「贈予功能(donate)」和「保留金(reserves)」之間的邏輯交互問題,而這個升級後的程式碼沒有被重新審計。這揭示了審計最核心的局限:審計審查的是「特定時間點的特定程式碼版本」,升級後的新程式碼不在原審計的保護範圍內,除非進行重新審計。審計能發現的:已知的漏洞類型(重入攻擊、算術溢出、訪問控制問題)、邏輯錯誤、不安全的設計模式。審計不能保證的:升級後的程式碼安全;新引入功能和現有功能之間的複雜交互;未知的新型攻擊方式。實際建議:在選擇 DeFi 協議時,查看最後一次審計的日期,確認審計日期之後是否有過重大升級;如果有升級但沒有重新審計,把這個列入額外的風險考量。
「管理員私鑰(Admin Keys)」的風險具體意味著什麼?多簽(Multisig)真的能解決這個問題嗎?
管理員私鑰風險的本質是:如果一個智能合約存在一個單一的「擁有者(Owner)」地址,這個地址的持有者可以在不需要任何其他人同意的情況下執行高危操作——暫停合約(讓所有用戶無法提款)、更改利率參數(讓借貸條件對用戶不利)、升級合約邏輯(可能在升級中加入惡意程式碼)、甚至在某些設計下直接轉移資金。這是大多數「rug Pull」的技術基礎——項目方在部署合約時保留了 Owner 權限,隨時可以跑路。多簽(Multisig)確實是更安全的設計,但多簽本身不是零風險。Gnosis Safe(3/5 多簽)意味著需要 5 個已知地址中的 3 個聯合簽名才能執行操作。這讓單人作惡的難度大幅提高,但多簽成員本身的可信度仍然是關鍵——如果 5 個多簽成員都是同一個實體控制的,多簽的保護效果等同於沒有。時間鎖(Timelock)是多簽之外的另一層保護:任何管理員操作在提交後需要等待 24–72 小時才能執行,這給了用戶和外部觀察者發現和反應的時間。最安全的組合:知名獨立人士的多簽(如 5 個來自不同機構的安全研究員)+ 72 小時時間鎖。實際核查方法:在 Etherscan 搜索協議主合約,查看「Contract」標籤裡的 Owner 地址,再搜索這個 Owner 地址確認是 EOA(單一私鑰)還是 Gnosis Safe(多簽合約地址)。
Certik、Trail of Bits、OpenZeppelin 這些審計公司有什麼實際差異?我怎麼判斷哪個審計更可信?
審計公司的質量差異是真實存在的,但不能用「誰是第一名」這樣簡單的排名來評估。以下是更實用的評估框架。頂級審計公司(以技術深度和發現高質量漏洞著稱):Trail of Bits——以深度技術研究著稱,發表過大量開創性的安全研究,審計費用高昂(通常 $10–50 萬/項目),但有業界最好的技術聲譽;OpenZeppelin——是 ERC-20、ERC-721 等主流代幣標準的原始實作者,對以太坊生態的熟悉程度無人超越,OpenZeppelin 審計的協議通常有最高的機構可信度;Spearbit / Cantina——由頂級個人安全研究員組成的精英聯盟,對複雜 DeFi 協議的深度理解優秀。中端審計公司(覆蓋率廣但深度不一):Certik——審計量最大,為數千個協議提供過審計,但審計質量參差不齊,有過「通過 Certik 審計後依然出問題」的案例;PeckShield——亞洲最大的區塊鏈安全公司,技術能力中等偏上,但在複雜 DeFi 機制的分析上不及頂級公司。判斷標準:不只看「有沒有審計」,還要看「審計公司自己有沒有發現問題」——一份「0 個 Critical、0 個 High 問題」的審計可能意味著審計沒有找到問題(正面),也可能意味著審計質量不夠深入、漏掉了問題(負面)。比較好的信號是「審計發現了多個 High 問題但協議方全部修復了」——說明審計做得認真,協議方也對安全負責。
作為一個非技術背景的穩定幣用戶,我應該如何建立一個可持續的「DeFi 協議安全評估」習慣,而不是每次都花幾個小時研究?
對非技術用戶來說,目標不是成為智能合約安全專家,而是建立一個「排除明顯高風險協議」的基礎篩選習慣。以下是一個可持續的三層框架。第一層(每次新協議首次使用前,5 分鐘):DeFiLlama 搜索協議 → 查看 TVL 是否 > $5 億且存在超過 2 年 → 確認有審計報告(Security 標籤)→ Etherscan 確認主合約已驗證。這四個條件如果全部滿足,進入第二層篩選;如果有任何一個不滿足,停止考慮這個協議或大幅降低配置比例。第二層(每次首次使用前,額外 10 分鐘,針對你打算配置較大金額的協議):打開最新的審計報告,看「執行摘要(Executive Summary)」確認 Critical/High 問題都已修復 → X 上搜索協議名稱+「hack」或「exploit」確認最近 6 個月有沒有安全事件 → 確認協議是否有漏洞賞金計畫(bug bounty)。第三層(持續監控,每月 10 分鐘):已配置資金的協議有沒有發布重大升級(在協議的官方 X 帳號或 Discord 都可以看到)?如果有重大升級,確認是否有配套的新審計報告。如果有升級但沒有新審計,把配置金額降到你可以承受損失的範圍,等待新審計發布。
2023 年,Euler Finance 遭到閃貸攻擊,損失 $1.97 億。2022 年,Nomad bridge 被黑,損失 $1.9 億。2021 年,Cream Finance 三次被黑,累計損失超過 $1.3 億。這些都是 DeFi 生態裡的一流協議——不是無名小卒,有審計報告,有鎖定的數十億 TVL,但依然被黑了。
這讓很多用戶陷入一個困境:「我應該怎麼評估一個 DeFi 協議的智能合約安全性?看審計報告?但審計通過的協議也會被黑……」這篇文章嘗試給你一個更現實的框架:智能合約智能合約審計用和局限,識別高風險合約的五個信號,以及在你把穩定幣存穩定幣 DeFi 協議之前,應該做的基本盡職調查。
智能合約審計是由獨立的安全公司(Certik、Trail of Bits、OpenZeppelin、Halborn、PeckShield 等)對協議的合約代碼進行系統性的安全審查,識別潛在的漏洞和風險。一份典型的審計報告包含:被審計的合約範圍(哪些合約被審計了,哪些沒有);發現的問題(按嚴重程度分類:Critical、High、Medium、Low、Informational);每個問題的說明和修復建議;協議方對問題的回應和修復狀態。
審計的真實作用:審計可以發現常見的已知漏洞類型,如重入攻擊重入攻擊ref="https://crypto-bible.com/zh/glossary/wallet-and-security/reentrancy-attack/" target="_blank">重入攻擊ntrancy)、算術溢出(Overflow)、訪問控制漏洞(Access Control)、閃貸相關漏洞等;審計讓協議的代碼邏輯得到一個外部的專業視角審查,識別邏輯錯誤。
審計的局限:審計不能保證代碼「100% 安全」——審計公司自己也在報告裡寫明這一點。審計是在特定時間點對特定代碼的審查,如果協議後來升級或添加新模塊,原審計覆蓋不了新代碼。審計只能審查代碼本身,無法預測「代碼和外部協議的複雜交互」帶來的新漏洞(很多 DeFi 黑客利用的正是跨協議的複合漏洞)。Euler Finance 有兩家知名機構的審計報告,但被黑前的那個漏洞不在任何審計的覆蓋範圍——因為它在最後一次升級裡被引入,而升級後的代碼沒有被重新審計。
你不需要是一個 Solidity 開發者才能從審計報告裡獲取有用信息。以下是你應該重點查看的幾個部分:
第一步:確認審計的範圍(Scope)。審計報告的開頭通常有「審計範圍」說明,列出被審計的合約文件列表和 Git commit hash(代碼版本標識)。你需要確認:主要的核心合約(借貸池、流動性管理、預言機整合)是否在範圍內?如果有很多「Not in scope(不在審計範圍內)」的合約,那這份審計的覆蓋可能不完整。
第二步:看 Critical 和 High 嚴重性問題的數量和狀態。Critical(致命)漏洞:如果報告裡有未修復的 Critical 漏洞,不管其他方面多好,這個協議都不應該使用。High(高危)漏洞:已修復的 High 漏洞說明協議方認真對待了安全報告;如果有未修復的 High 漏洞,需要了解原因(有些 High 問題可能被協議方認為在當前架構下無法利用,但這是一個值得追問的問題)。Medium 和 Low 漏洞本身不是危險信號,但「大量未修復的 Medium 問題」可能暗示協議方對安全的重視程度不足。
第三步:檢查審計的時間和最新代碼的對應關係。審計報告通常標注了審計時間和被審計代碼的版本(commit hash)。你應該把審計報告的版本和協議目前部署在主網的代碼版本對比——如果協議最後一次重大升級是在最後一次審計之後,那最近的升級代碼沒有被審計過。
第四步:確認審計機構的聲譽。不是所有審計公司的嚴格程度都一樣。業界公認的高水準安全公司(非完整列表):Trail of Bits、OpenZeppelin、Spearbit、Cantina、Zellic、Halborn、ABDK。中等水準但仍有一定可信度:Certik、PeckShield、SlowMist。存在一些批評(不一定不好,但需要額外謹慎):一些知名度低、費率極低的小型審計公司,審計質量參差不齊。
在做任何 DeFi 穩定幣部署之前,你應該快速排查以下五個高風險信號:
信號一:無審計或審計來自不知名公司。完全沒有審計報告的協議,或者審計來自從未聽過的公司且找不到任何背景信息,是最基本的紅旗。即使在 DeFi 早期,成熟的協議都應該有來自可信機構的審計報告。
信號二:代碼未開源。成熟的 DeFi 協議通常把合約代碼開源(在 Etherscan 驗證,或者在 GitHub 公開)。如果一個協議聲稱有智能合約但代碼不公開,那「被審計」的代碼根本無法被獨立驗證,審計報告的可信度大打折扣。
信號三:管理員權限過大(Admin Keys)。查看合約是否有一個能夠「暫停合約」、「凍結資金」、「更改關鍵參數」的管理員密鑰(Owner 或 Admin)。如果管理員是一個未知的 EOA(外部帳戶),這意味著一個人或一小群人可以隨時更改協議行為甚至轉移資金——這是大多數「Rug rugl(跑路)」的技術基礎。相對更安全的設計:多簽錢包(Multisig,如需要 3/5 個已知的知名人士聯合簽名才能執行);時間鎖定(Timelock,管理員操作需要等待 24–72 小時才能執行,給用戶反應時間)。
信號四:預言機(Oracle)整合不安全。穩定幣和借貸協議的很多功能依賴「預言機」提供外部價格數據(如 ETH/USD 的即時匯率)。不安全的預言機整合是大量 DeFi 黑客的攻擊點:如果協議使用了可以被閃貸操縱的 DEX 現貨價格作為預言機,攻擊者可以在一個區塊內把 ETH/USD 報價臨時砸崩,再利用這個操縱的價格觸發異常清算,榨取協議資金。更安全的預言機:Chainlink(時間加權時間加權平均價格P,更難操縱);Uniswap V3 的 TWAP(30 分鐘 TWAP 比現貨報價安全得多)。
信號五:TVL 和年齡的組合。這是最簡單的「市場驗證」指標。一個有 $10 億 TVL 且已上線三年以上的協議,其安全性比一個上線兩個月、TVL $500 萬的協議要高得多——不是因為新協議一定不安全,而是因為長時間的高 TVL 意味著攻擊者已經有足夠的動機去嘗試攻擊,如果協議撐下來了,說明已知的攻擊向量沒有找到入口。
你不需要成為安全專家才能做基本的智能合約安全初步核查。以下工具可以幫助你在幾分鐘內得到第一層的信息:
DeFiLlama(defillama.com):查看協議的 TVL 歷史、鏈上地址、審計報告鏈接(DeFiLlama 有 Security 選項卡,整合了各主要協議的審計報告入口);Chainalysis(和 Immunefi)的漏洞賞金計畫——查看協議是否有漏洞賞金計畫(Bug Bounty)。有賞金計畫的協議通常意味著協議願意主動激勵外部安全研究員繼續找問題——這是一個積極的安全文化信號;Etherscan 的合約驗證頁面——搜索協議的主合約地址,確認代碼是否已在 Etherscan 驗證(即代碼已開源,任何人可閱讀);Phalcon Explorer(phalcon.blocksec.com)——分析特定交易的函數調用鏈,用於理解複雜的智能合約互動(高級用戶工具)。
在把穩定幣(USDC、USDS 等)存入任何 DeFi 協議之前,建議做一個五分鐘的基本檢查:在 DeFiLlama 搜索協議,查看 TVL 歷史和審計報告鏈接;確認審計機構是否可信,報告中是否有未修復的 Critical/High 問題;確認合約代碼在 Etherscan 已驗證(開源);確認管理員密鑰是否是多簽或有時間鎖定;協議已上線多長時間,有多少 TVL。這五個檢查不能給你「100% 安全」的保證,但可以幫你排除掉大量明顯的高風險協議。如果你對技術細節完全不感興趣,最簡單的原則是:只使用已建立時間超過兩年、TVL 超過 $5 億、且有多家知名安全公司審計記錄的協議(Aave、Compound、Curve、Sky Protocol 均符合這個標準)。高收益通常對應更新的、更複雜的協議——理解「你為什麼能賺到這個收益」永遠應該在「如何賺到最多收益」之前。