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

MOVE2.9%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 4
  • 转发
  • 分享
评论
0/400
Crypto凤凰vip
· 08-14 11:11
底部区间不慌,修复之路才刚开始...再惨有18年惨?
回复0
GateUser-a606bf0cvip
· 08-12 07:20
move太不稳了吧
回复0
down_only_larryvip
· 08-11 17:32
怎么又是move 奔溃咯
回复0
汤米老师1vip
· 08-11 17:31
又要修bug啦!
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)