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

Move語言再現整數溢出漏洞

近期,一個嚴重的整數溢出漏洞被發現存在於Move語言中。這個漏洞出現在引用安全驗證步驟中,可能導致拒絕服務攻擊。通過深入分析這個漏洞,我們可以對Move語言有更深入的理解。

Move語言在執行字節碼前會進行代碼驗證,分爲四個步驟。這個漏洞就出現在reference_safety步驟中。reference_safety模塊負責驗證引用操作的合法性,包括檢查是否存在懸空引用、可變引用訪問是否安全等。

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

驗證過程是以函數爲單位進行的。對於每個函數,會先識別出其中的基本塊。基本塊是一段連續的代碼序列,只有入口和出口處可能存在分支。然後對每個基本塊進行分析,生成執行前後的狀態,並將狀態傳播到後續塊。

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

狀態包含了locals和borrow graph兩部分信息。locals記錄了局部變量的信息,borrow graph表示變量間的引用關係。分析過程會不斷更新這些狀態信息。

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

漏洞出現在狀態合並的過程中。當函數參數和局部變量總數超過256個時,由於使用u8類型表示索引,會發生整數溢出。這導致合並後的狀態信息出現錯誤,進而可能引發拒絕服務攻擊。

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

雖然Move語言有檢查局部變量數量的機制,但是並未考慮參數數量。這一疏忽導致了漏洞的產生。

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

爲了觸發這個漏洞,攻擊者可以構造一個循環代碼塊,利用溢出改變塊的狀態。當再次執行時,由於狀態信息錯誤,訪問不存在的變量會導致程序崩潰。

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

這個漏洞再次說明了即使是經過精心設計的語言,也可能存在安全隱患。它提醒我們代碼審計的重要性,以及在語言設計中需要更全面的安全考慮。對於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語言又一高危漏洞

MOVE0.69%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 3
  • 轉發
  • 分享
留言
0/400
GateUser-a606bf0cvip
· 9小時前
move太不稳了吧
回復0
down_only_larryvip
· 22小時前
怎么又是move 奔溃咯
回復0
汤米老师1vip
· 22小時前
又要修bug啦!
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)