Move語言整數溢出漏洞:引用安全驗證存風險

Move語言又現高危漏洞:整數溢出可導致節點崩潰

近期,安全研究人員在深入分析Aptos Moveevm時發現了一個新的整數溢出漏洞。這個漏洞存在於Move語言的引用安全驗證過程中,可能導致節點崩潰。

Numen Cyber獨家發現move語言又一高危漏洞

Move語言在執行字節碼前會進行代碼驗證,分爲4個步驟。此漏洞出現在reference_safety步驟中。該步驟主要用於驗證引用的安全性,包括檢查是否存在懸空引用、可變引用訪問是否安全等。

Numen Cyber獨家發現move語言又一高危漏洞

驗證過程會遍歷每個基本塊並進行分析。基本塊是指除入口和出口外沒有分支指令的代碼序列。Move語言通過查找分支和循環指令來識別基本塊。

Numen Cyber獨家發現move語言又一高危漏洞

在驗證引用安全性時,會維護一個AbstractState結構體,包含borrow graph和locals信息。驗證過程會執行基本塊代碼,生成執行後的state,然後與執行前的state進行合並,更新塊狀態並傳播到後續塊。

Numen Cyber獨家發現move語言又一高危漏洞

漏洞出現在join_函數中。該函數用於合並執行前後的state,更新locals和borrow graph。當參數長度和局部變量長度之和大於256時,由於使用u8類型迭代locals,會導致整數溢出。

Numen Cyber獨家發現move語言又一高危漏洞

Numen Cyber獨家發現move語言又一高危漏洞

Numen Cyber獨家發現move語言又一高危漏洞

Numen Cyber獨家發現move語言又一高危漏洞

Numen Cyber獨家發現move語言又一高危漏洞

Numen Cyber獨家發現move語言又一高危漏洞

Numen Cyber獨家發現move語言又一高危漏洞

Numen Cyber獨家發現move語言又一高危漏洞

Numen Cyber獨家發現move語言又一高危漏洞

Numen Cyber獨家發現move語言又一高危漏洞

利用這個溢出可以改變基本塊的state。在存在循環的代碼中,多次執行同一基本塊時,可能訪問到不存在的locals索引,從而引發panic導致節點崩潰。

研究人員提供了一個PoC代碼,通過設置特定的參數和局部變量數量,觸發整數溢出,最終導致panic。

Numen Cyber獨家發現move語言又一高危漏洞

這個漏洞暴露出即使像Move這樣重視安全的語言也可能存在漏洞。建議Move語言設計者在運行時增加更多安全檢查,而不僅僅依賴驗證階段的檢查。同時也說明了代碼審計的重要性。

MOVE1.96%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 2
  • 轉發
  • 分享
留言
0/400
Blockchain解码vip
· 08-08 08:49
引用检验太脆弱
回復0
Hash_Banditvip
· 08-06 01:22
安全问题必须重视
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)