Building a Solid Mindset for Auditing Move Contracts | DeFi Security Summit 2025
三句話摘要
從 EVM 安全觀轉向 Move 語言:Move 智能合約的架構差異與特有漏洞模式。 Move 智能合約審計的核心在於掌握其資料模型差異,並針對 Capability Object 可被強制建立、Hot Potato 可被隱式丟棄這兩個 Move 特有攻擊面進行系統性驗證。 Move 的資料模型根本上不同於 EVM:EVM 以合約為中心儲存狀態;Aptos 將資料存於帳戶,Sui 將資料存於獨立物件。這意味著 EVM 的安全思維不能直接套用。
重點整理
重點- 1
Move 的資料模型根本上不同於 EVM:EVM 以合約為中心儲存狀態;Aptos 將資料存於帳戶,Sui 將資料存於獨立物件。這意味著 EVM 的安全思維不能直接套用。
- 2
Move 的類型系統是安全的核心工具:Move 編譯器在編譯期就拒絕類型錯誤,加上物件與函式皆可攜帶類型能力(abilities),讓許多 EVM 常見漏洞在語言層面就被阻擋。
- 3
語言無關的審計方法仍然必要:無論哪種語言,都要以狀態機框架思考協議(開放 → 活躍 → 高風險 → 關閉),並定義不變量(invariants),找到能使其失效的反例即為漏洞。
- 4
Capability Object 與 Hot Potato 是 Move 特有的攻擊面:前者若能被強制建立即可繞過權限控制;後者若存在可隱式丟棄的路徑,則閃電貸等機制的還款強制邏輯會失效。
實用技巧與重點
乾貨- 平台:Aptos、Sui(Move 生態)、EVM(對比基準)
- EVM vs Move 資料儲存:EVM 存於合約本身;Aptos 存於帳戶;Sui 存於獨立物件(Object)
- Move 編譯器特性:編譯期攔截執行時錯誤,合約部署後無此類 runtime error
- 重入(Reentrancy):Move 傳統上不可重入;EVM 的重入防護在演講數天前才推出
- Transaction 可見性差異:EVM 在交易執行時才知道修改了哪些資料;Move 在建立交易時即已知道所有涉及物件
- Capability Object 模式:Sui 用能力物件門控函式,初始化時建立,僅管理員持有;攻擊向量:是否有函式可被強制建立能力物件
- Hot Potato 模式:無法被 drop 的物件,強制呼叫特定消耗函式(如還款);攻擊向量:是否存在可讓物件被隱式丟棄的錯誤路徑
- 審計框架:定義不變量(invariants)→ 尋找反例 → 確認漏洞
- 狀態機審計:分析協議在各狀態(開放/活躍/風險/關閉)下的邊界行為
結論
結論“Move 智能合約審計的核心在於掌握其資料模型差異,並針對 Capability Object 可被強制建立、Hot Potato 可被隱式丟棄這兩個 Move 特有攻擊面進行系統性驗證。”
完整解析
詳細本場演講的核心命題是:傳統 EVM 安全工程師在轉向 Move 生態(Aptos、Sui)時,若照搬既有思維,將會錯過 Move 獨有的漏洞模式。講者將內容分為兩大部分:語言無關的通用漏洞方法論,以及 Move 架構本身帶來的特殊攻擊面。
首先從架構差異切入。EVM 以合約為中心,狀態資料直接存於合約本身;而 Aptos 將資料與合約分開,儲存在帳戶層級;Sui 則更進一步,將資料封裝為獨立存在於鏈上的物件(Object),這些物件不從屬於任何智能合約。這種資料模型的根本差異,直接影響了攻擊路徑的分析方式。此外,Move 的編譯器會在編譯期就攔截潛在的執行時錯誤,這讓許多 EVM 常見的執行期漏洞在 Move 中從源頭被消除。至於重入攻擊,Move 傳統上也因為其執行模型而天然免疫——而 EVM 的重入防護機制甚至直到演講前數天才正式推出,突顯了兩者的設計哲學差距。
在語言無關的審計方法論上,講者強調必須以狀態機框架來分析去中心化協議。一個 DeFi 協議通常會經歷「開放 → 活躍 → 高風險 → 關閉」等狀態,審計員需要在每個狀態轉換邊界上窮舉異常情境。配合狀態機分析的,是不變量(invariant)的定義:先明確列出協議的核心不變量(例如「總抵押物永遠大於總借款」),再系統性地尋找能使其失效的反例,找到的即為漏洞所在。
進入 Move 特有漏洞,講者重點介紹兩個模式。第一是 Capability Object:Sui 使用能力物件來門控特定函式,概念上等同於 EVM 的 `onlyOwner` modifier,但以物件傳遞而非地址比對實現。能力物件通常在合約初始化時建立,且只有管理員能持有。安全審計的關鍵問題是:是否存在某條程式路徑可以「強制建立」這類能力物件?若有,攻擊者便能繞過所有權限控制。第二是 Hot Potato 模式:這是 Move 用來強制回調的設計——建立一個無法被丟棄(drop)的物件,要求呼叫方必須呼叫特定函式來消耗它。閃電貸即是典型應用:借款時建立 Hot Potato 物件,還款函式消耗該物件以完成交易。審計重點在於:是否存在某個錯誤的程式路徑,讓該物件被隱式丟棄?若有,攻擊者便可借款而不還款。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

