Vyper 数组负索引漏洞 (CVE-2024-24563)
CVE编号
CVE-2024-24563利用情况
暂无补丁情况
N/A披露时间
2024-02-08漏洞描述
Vyper是面向以太坊虚拟机的Python智能合约语言。数组只能以无符号整数作为键值,而不能以有符号整数作为键值。类型检查器在检测到将`int`用作数组索引时不会抛出异常。类型检查器允许将有符号整数用作数组的索引。该漏洞在包括`0.3.10`在内的所有版本中都存在。对于整数,使用2的补码表示。由于数组被声明得非常大,边界检查会被通过,负值会被表示为非常大的数。截至本文发布时,尚未存在修复版本。 该漏洞存在三种潜在的风险类别:行为不可预测、访问不可访问的元素和拒绝服务。第一类:如果可能使用负整数作为数组的索引而不会发生回滚,那么开发人员很可能没有预料到这种访问方式可能导致合约的行为不可预测。第二类:如果合约具有形式为`assert index < x`的不变式,开发人员将假设无法访问索引`y | y >= x`的元素。然而,通过使用负索引,可以绕过这一限制。第三类:如果索引依赖于合约的状态,那么可能存在拒绝服务的风险。如果可以通过操纵合约的状态来将索引强制为负值,则数组访问将始终导致回滚(因为很可能数组不会被声明为非常大)。然而,所有这些情况都是非常不可能发生的。最可能的行为是在边界检查时发生回滚。解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。- 攻击路径 网络
- 攻击复杂度 低
- 权限要求 无
- 影响范围 未更改
- 用户交互 无
- 可用性 高
- 保密性 高
- 完整性 高
CWE-ID | 漏洞类型 |
CWE-129 | 对数组索引的验证不恰当 |
Exp相关链接

版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
评论