Move語言引用安全模塊發現整數溢出漏洞 構造攻擊或致系統崩潰

robot
摘要生成中

Move語言引用安全模塊中發現整數溢出漏洞

近期,一項深入研究發現了Move語言中的一個新的整數溢出漏洞。這個漏洞存在於引用安全驗證過程中,涉及到Move語言的一些核心概念和機制。

Move語言在執行字節碼前會進行代碼驗證,分爲四個步驟。這個新發現的漏洞出現在reference_safety步驟中。該步驟負責驗證引用的安全性,包括檢查是否存在懸空引用、可變引用的訪問安全性以及全局存儲引用的訪問安全性等。

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

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

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

在驗證過程中,系統會維護一個AbstractState結構體,包含borrow graph和locals信息,用於確保函數中引用的安全性。驗證流程會執行基本塊代碼,生成執行後的狀態,然後將執行前後的狀態合並,更新塊狀態並傳播到後續塊。

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

漏洞出現在join_函數中。當函數參數長度加上局部變量長度超過256時,由於使用u8類型表示local變量,會導致整數溢出。雖然Move語言有檢查locals個數的機制,但只檢查了局部變量數量,沒有包括參數長度。

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

這個溢出漏洞可能導致拒絕服務攻擊。攻擊者可以構造一個循環代碼塊,利用溢出改變塊的狀態。當再次執行基本塊時,如果指令需要訪問的索引在新的locals map中不存在,就會導致系統崩潰。

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

爲了演示這個漏洞,研究人員提供了一個概念驗證(PoC)。通過設置特定的參數和局部變量數量,可以觸發整數溢出,導致系統panic。

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語言又一高危漏洞

這個漏洞揭示了即使是經過嚴格設計的語言也可能存在安全隱患。它強調了代碼審計的重要性,以及在語言設計中需要考慮更多的邊界情況。對於Move語言來說,建議在運行時增加更多的安全檢查,而不僅僅依賴於驗證階段的安全機制。

隨着Move語言在Web3領域的廣泛應用,深入研究和發現這類潛在漏洞對於提升整個生態系統的安全性至關重要。開發者和安全研究人員需要保持警惕,持續關注和改進Move語言的安全性能。

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

MOVE-1.76%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 9
  • 轉發
  • 分享
留言
0/400
GateUser-aa7df71evip
· 08-19 18:48
又一项目要黄 溢出必崩盘
回復0
TokenVelocityvip
· 08-17 11:11
打工两年养活大家倾家荡产就我一人负重前行3000天创业梦醒
回復0
GateUser-0717ab66vip
· 08-16 22:28
谁溢出谁sb
回復0
论坛潜水怪vip
· 08-16 22:27
move 又搞事情啊?
回復0
TokenTaxonomistvip
· 08-16 22:23
从统计学的角度来看,移动又一次走入了进化的死胡同……说实话,我并不惊讶。
查看原文回復0
Solidity Strugglervip
· 08-16 22:20
溢出漏洞真烦人...
回復0
0x谜语人vip
· 08-16 22:10
又是溢出漏洞 没完没了了都
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate App
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)