Move語言引用安全機制發現整數溢出漏洞 影響AptosMoveEVM

robot
摘要生成中

Move語言引用安全機制中發現新的整數溢出漏洞

近期,安全研究人員在深入分析Aptos MoveEVM時發現了一個新的整數溢出漏洞。這個漏洞存在於Move語言的引用安全驗證過程中,具體位於reference_safety步驟。

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

Move語言在執行字節碼前會進行代碼單元驗證,分爲4個步驟。引用安全驗證是其中的一個重要環節,主要用於確保沒有懸空引用、對可變引用的訪問是安全的、對全局存儲引用的訪問是安全的等。

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

引用安全驗證的核心是分析每個函數中的基本塊。基本塊是指除入口和出口外沒有分支指令的代碼序列。Move通過遍歷字節碼、查找所有分支指令和循環指令來確定基本塊。

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

驗證過程使用AbstractState結構體來表示狀態,包含borrow graph和locals兩部分。驗證時會執行基本塊代碼生成post state,然後與pre state合並更新塊狀態,並傳播到後續塊。這個過程類似V8 turbofan中的Sea of Nodes思想。

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

漏洞出現在join_函數中。當函數參數長度與局部變量長度之和大於256時,由於使用u8類型迭代local,會導致整數溢出。雖然Move有校驗locals個數的過程,但只校驗了locals而未包括參數length。

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 map中不存在,就會導致DoS。

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

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

MOVE9.76%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 5
  • 分享
留言
0/400
无聊看戏的vip
· 07-20 18:00
这bug离谱死了,怎么还这么低级
回復0
WalletInspectorvip
· 07-20 17:59
呵 用move不如用rust
回復0
Meme币操盘手vip
· 07-20 17:58
哈哈又一个l1被干掉了... 经典的整数溢出阿尔法泄露
查看原文回復0
LidoStakeAddictvip
· 07-20 17:56
Move又出问题了 啧啧
回復0
Buy_High_SellLowvip
· 07-20 17:53
又摆烂了 毁灭吧 一切重来
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)