Move語言引用安全機制曝整數溢出漏洞 或致拒絕服務攻擊

Move語言引用安全機制存在整數溢出漏洞

近期,安全研究人員在深入分析Move語言時發現了一個新的整數溢出漏洞。這個漏洞出現在Move語言的引用安全驗證過程中,可能導致拒絕服務攻擊。

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

Move語言在執行字節碼前會進行代碼驗證,分爲4個步驟。這個漏洞存在於引用安全(reference_safety)驗證階段。引用安全驗證的主要目的是確保沒有懸空引用、可變引用訪問安全、全局存儲引用訪問安全等。

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

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

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

引用安全驗證使用AbstractState結構體來跟蹤局部變量和引用關係。它包含locals和borrow graph兩部分。驗證時會比較執行前後的狀態,並合並更新。

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

漏洞出現在合並狀態的join_函數中。該函數使用u8類型迭代locals,但如果參數和局部變量總數超過256會導致整數溢出。雖然有校驗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語言又一高危漏洞

攻擊者可以構造一個循環的基本塊,利用這個溢出改變狀態。再次執行時訪問不存在的locals索引會導致panic,從而造成拒絕服務。

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

這個漏洞反映出即使是靜態類型安全的語言也可能存在安全隱患。建議Move語言在運行時增加更多安全檢查,不僅依賴驗證階段。同時也說明了代碼審計的重要性。

MOVE-1.75%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 4
  • 分享
留言
0/400
口嗨做多王vip
· 3小時前
代码又出锅了
回復0
鲸鱼观察员vip
· 07-31 00:57
补丁在路上了吗
回復0
BlockDetectivevip
· 07-31 00:49
修正很及时啊
回復0
Token小灵通vip
· 07-31 00:41
隐患不容忽视
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)