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)