Move语言暴露整数溢出漏洞 节点崩溃风险引关注

Move语言又现高危漏洞:整数溢出可导致节点崩溃

近期,安全研究人员在深入分析Move语言时发现了一个新的整数溢出漏洞,可能导致节点崩溃。这个漏洞存在于Move语言的引用安全验证模块中,涉及到基本块分析和状态合并过程。

Numen Cyber独家发现move语言又一高危漏洞

Move语言在执行字节码前会进行代码验证,分为4个步骤。此次发现的漏洞出现在引用安全(reference_safety)验证阶段。该阶段会分析函数中的基本块,验证引用操作的合法性。

Numen Cyber独家发现move语言又一高危漏洞

验证过程中会维护一个AbstractState结构体,包含局部变量(locals)和借用关系图(borrow graph)。在分析基本块时,会执行块内指令生成post state,然后与pre state合并更新状态。

Numen Cyber独家发现move语言又一高危漏洞

漏洞产生于合并状态的join_函数中。该函数会遍历locals变量,但locals包含了函数参数和局部变量。当参数数量与局部变量数量之和超过256时,由于使用u8类型迭代,会发生整数溢出。

Numen Cyber独家发现move语言又一高危漏洞

攻击者可以构造特殊的循环代码块,利用这个溢出改变状态。在下一轮分析时,某些指令可能访问不存在的locals索引,从而触发panic导致节点崩溃。

Numen Cyber独家发现move语言又一高危漏洞

研究人员提供了一个概念验证(PoC),通过设置264个locals变量,可以在第二轮分析时触发panic。这暴露出Move语言在运行时缺乏足够的安全检查。

Numen Cyber独家发现move语言又一高危漏洞

这个漏洞再次说明,即使是强调安全的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语言又一高危漏洞

MOVE1.94%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 5
  • 分享
评论
0/400
智能合约恐惧症vip
· 08-02 02:38
move崩完本,原生也崩了
回复0
椰子水男孩vip
· 07-30 03:38
move又翻车了,早该换了
回复0
薛定谔_钱包vip
· 07-30 03:36
move又翻车了啊
回复0
0xDreamChaservip
· 07-30 03:34
move又崩?毕业都不够快
回复0
GasFeeCryvip
· 07-30 03:25
move又又又出事儿啦
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)