CVE-2024-24561

Vyper bounds check on built-in `slice()` function can be overflowed

State
Published
Severity
9.8 Critical
Published
Feb 1, 2024
Updated
Jun 17, 2025
Reserved
Jan 25, 2024

Read the record on cve.org

Description

Vyper is a pythonic Smart Contract Language for the ethereum virtual machine. In versions 0.3.10 and earlier, the bounds check for slices does not account for the ability for start + length to overflow when the values aren't literals. If a slice() function uses a non-literal argument for the start or length variable, this creates the ability for an attacker to overflow the bounds check. This issue can be used to do OOB access to storage, memory or calldata addresses. It can also be used to corrupt the length slot of the respective array.

Scores

CVSSScoreVectorSource
3.19.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HGitHub_M

Weaknesses

  • CWE-119 Improper Restriction of Operations within the Bounds of a Memory Buffer

Affected Products

ProductVersions
vypervyperlang
  • <= 0.3.10Affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.