Move語言引用安全驗證整數溢出漏洞剖析

robot
摘要生成中

Move語言引用安全驗證中的整數溢出漏洞分析

近期,研究人員在深入分析Aptos Moveevm時發現了一個新的整數溢出漏洞。這個漏洞存在於Move語言的引用安全驗證過程中,具體涉及reference_safety步驟。本文將深入探討這個漏洞,並解釋其觸發過程及潛在影響。

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

Move語言的驗證過程

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

驗證過程首先會識別基本塊。在Move語言中,基本塊是通過遍歷字節碼、查找所有分支指令和循環指令序列來確定的。每個基本塊是一段除入口和出口外沒有分支指令的代碼序列。

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

引用安全驗證機制

Move語言支持不可變引用(&)和可變引用(&mut)兩種類型。引用安全驗證模塊會以函數爲單位,掃描函數中各基本塊的字節碼指令,判斷所有引用操作是否合法。

驗證過程使用AbstractState結構體來表示狀態,包含borrow graph和locals兩個關鍵組件。驗證時會比較執行基本塊前後的狀態變化,並將結果傳播到後續塊。

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

漏洞詳情

漏洞存在於join_函數中。該函數用於合並執行基本塊前後的狀態。問題出在iter_locals()方法上,它返回u8類型的迭代器。當函數參數長度與局部變量長度之和超過256時,會導致整數溢出。

雖然Move語言有校驗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語言又一高危漏洞

漏洞利用及影響

利用這個整數溢出漏洞,攻擊者可以構造特殊的循環代碼塊,改變塊的狀態。當再次執行基本塊時,如果指令訪問的索引在新的locals map中不存在,就會導致拒絕服務(DoS)。

具體來說,在reference safety模塊中,MoveLoc/CopyLoc/FreeRef等操作碼可能會因爲訪問不存在的LocalIndex而導致panic,進而使整個節點崩潰。

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

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

總結與建議

這個漏洞再次證明了即使是經過精心設計的語言也可能存在安全隱患。對Move語言來說,我們建議:

  1. 加強代碼審計,避免類似疏忽。
  2. 在Move運行時增加更多檢查代碼,不僅依賴驗證階段的安全檢查。
  3. 運行階段增加安全加固措施,防止驗證被繞過後造成更嚴重的問題。

作爲Move語言安全研究的先行者,我們將繼續深入探索相關安全問題,爲Move生態系統的健康發展貢獻力量。

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

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 9
  • 分享
留言
0/400
LiquidationWatchervip
· 07-07 17:46
天哪,又一个DeFi漏洞... 让我现在想起2022年的重大回忆
查看原文回復0
熊市朝阳人vip
· 07-07 02:16
move凉了啊,炒a还不如炒b
回復0
Sunday Degenvip
· 07-06 08:36
啧 这bug确实有点低级
回復0
Moon火箭手vip
· 07-05 04:47
Move的拦截高度256就失守 警惕火箭坠毁风险
回復0
Web3产品经理vip
· 07-05 04:47
查看转化漏斗数据,这个溢出错误 = 主要的用户体验摩擦,老实说
查看原文回復0
PanicSeller69vip
· 07-05 04:47
Move 太脆皮了吧
回復0
WhaleMistakervip
· 07-05 04:46
move狗要凉?
回復0
治理投票从不参与vip
· 07-05 04:28
Aptos 又是代码bug啊???
回復0
SignatureCollectorvip
· 07-05 04:18
又是溢出问题 爬
回復0
查看更多
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)