vyper 的范围(start, start + N) 恢复为负数 (CVE-2024-32481)

CVE编号

CVE-2024-32481

利用情况

暂无

补丁情况

N/A

披露时间

2024-04-26
漏洞描述
Vyper是一种面向以太坊虚拟机的Python风格智能合约语言。在版本0.3.8及其之前的版本中,当循环遍历形式为`range(start, start + N)`且`start`为负数时,执行将始终回滚。这个问题是由于range `stmt.parse_For_range()`的代码生成中插入了错误的断言导致。当`start`为带符号时,使用`le`而不是`sle`,并将`start`解释为无符号整数进行比较。如果`start`是负数,则它的第255位设置为`1`,因此被解释为一个非常大的无符号整数,使断言始终失败。任何具有`range(start, start + N)`的合约,其中`start`为带符号整数且可能为负数的情况都会受到影响。如果调用在提供负数`start`的情况下通过循环,执行将回滚。版本0.4.0b1修复了这个问题。
解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。
CVSS3评分
5.3
  • 攻击路径
    网络
  • 攻击复杂度
  • 权限要求
  • 影响范围
    未更改
  • 用户交互
  • 可用性
  • 保密性
  • 完整性
CWE-ID 漏洞类型
阿里云安全产品覆盖情况