
CVE-2025-47774 – Vyper's `slice()` may elide side-effects when output length is 0
https://notcve.org/view.php?id=CVE-2025-47774
15 May 2025 — Vyper is the Pythonic Programming Language for the Ethereum Virtual Machine. In versions up to and including 0.4.2rc1, the `slice()` builtin can elide side effects when the output length is 0, and the source bytestring is a builtin (`msg.data` or `
.code`). The reason is that for these source locations, the check that `length >= 1` is skipped. The result is that a 0-length bytestring constructed with slice can be passed to `make_byte_array_copier`, which elides evaluation of its source argument when... • https://github.com/vyperlang/vyper/security/advisories/GHSA-3vcg-j39x-cwfm • CWE-691: Insufficient Control Flow Management •
CVE-2025-47285 – Vyper's `concat()` builtin may elide side-effects for zero-length arguments
https://notcve.org/view.php?id=CVE-2025-47285
15 May 2025 — Vyper is the Pythonic Programming Language for the Ethereum Virtual Machine. In versions up to and including 0.4.2rc1, `concat()` may skip evaluation of side effects when the length of an argument is zero. This is due to a fastpath in the implementation which skips evaluation of argument expressions when their length is zero. In practice, it would be very unusual in user code to construct zero-length bytestrings using an expression with side-effects, since zero-length bytestrings are typically constructed w... • https://github.com/vyperlang/vyper/security/advisories/GHSA-qhr6-mgqr-mchm • CWE-691: Insufficient Control Flow Management •

CVE-2025-26622 – sqrt doesn't define rounding behavior in Vyper
https://notcve.org/view.php?id=CVE-2025-26622
21 Feb 2025 — vyper is a Pythonic Smart Contract Language for the EVM. Vyper `sqrt()` builtin uses the babylonian method to calculate square roots of decimals. Unfortunately, improper handling of the oscillating final states may lead to sqrt incorrectly returning rounded up results. This issue is being addressed and a fix is expected in version 0.4.1. Users are advised to upgrade as soon as the patched release is available. • https://github.com/vyperlang/vyper/pull/4486 • CWE-682: Incorrect Calculation •

CVE-2025-27104 – double eval in For List Iter in Vyper
https://notcve.org/view.php?id=CVE-2025-27104
21 Feb 2025 — vyper is a Pythonic Smart Contract Language for the EVM. Multiple evaluation of a single expression is possible in the iterator target of a for loop. While the iterator expression cannot produce multiple writes, it can consume side effects produced in the loop body (e.g. read a storage variable updated in the loop body) and thus lead to unexpected program behavior. Specifically, reads in iterators which contain an ifexp (e.g. `for s: uint256 in ([read(), read()] if True else [])`) may interleave reads with ... • https://github.com/vyperlang/vyper/pull/4488 • CWE-662: Improper Synchronization •

CVE-2025-27105 – AugAssign evaluation order causing OOB write within the object in Vyper
https://notcve.org/view.php?id=CVE-2025-27105
21 Feb 2025 — vyper is a Pythonic Smart Contract Language for the EVM. Vyper handles AugAssign statements by first caching the target location to avoid double evaluation. However, in the case when target is an access to a DynArray and the rhs modifies the array, the cached target will evaluate first, and the bounds check will not be re-evaluated during the write portion of the statement. This issue has been addressed in version 0.4.1 and all users are advised to upgrade. There are no known workarounds for this vulnerabil... • https://github.com/vyperlang/vyper/security/advisories/GHSA-4w26-8p97-f4jp • CWE-787: Out-of-bounds Write •

CVE-2025-21607 – Success of Certain Precompile Calls not Checked in Vyper
https://notcve.org/view.php?id=CVE-2025-21607
14 Jan 2025 — Vyper is a Pythonic Smart Contract Language for the EVM. When the Vyper Compiler uses the precompiles EcRecover (0x1) and Identity (0x4), the success flag of the call is not checked. As a consequence an attacker can provide a specific amount of gas to make these calls fail but let the overall execution continue. Then the execution result can be incorrect. Based on EVM's rules, after the failed precompile the remaining code has only 1/64 of the pre-call-gas left (as 63/64 were forwarded and spent). • https://github.com/vyperlang/vyper/security/advisories/GHSA-vgf2-gvx8-xwc3 • CWE-670: Always-Incorrect Control Flow Implementation •

CVE-2024-32649 – vyper performs double eval of the argument of sqrt
https://notcve.org/view.php?id=CVE-2024-32649
25 Apr 2024 — Vyper is a pythonic Smart Contract Language for the Ethereum virtual machine. In versions 0.3.10 and prior, using the `sqrt` builtin can result in double eval vulnerability when the argument has side-effects. It can be seen that the `build_IR` function of the `sqrt` builtin doesn't cache the argument to the stack. As such, it can be evaluated multiple times (instead of retrieving the value from the stack). No vulnerable production contracts were found. • https://github.com/vyperlang/vyper/security/advisories/GHSA-5jrj-52x8-m64h • CWE-95: Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection') •

CVE-2024-32648 – vyper default functions don't respect nonreentrancy keys
https://notcve.org/view.php?id=CVE-2024-32648
25 Apr 2024 — Vyper is a pythonic Smart Contract Language for the Ethereum virtual machine. Prior to version 0.3.0, default functions don't respect nonreentrancy keys and the lock isn't emitted. No vulnerable production contracts were found. Additionally, using a lock on a `default` function is a very sparsely used pattern. As such, the impact is low. • https://github.com/vyperlang/vyper/commit/93287e5ac184b53b395c907d40701f721daf8177 • CWE-667: Improper Locking •

CVE-2024-32647 – vyper performs double eval of raw_args in create_from_blueprint
https://notcve.org/view.php?id=CVE-2024-32647
25 Apr 2024 — Vyper is a pythonic Smart Contract Language for the Ethereum virtual machine. In versions 0.3.10 and prior, using the `create_from_blueprint` builtin can result in a double eval vulnerability when `raw_args=True` and the `args` argument has side-effects. It can be seen that the `_build_create_IR` function of the `create_from_blueprint` builtin doesn't cache the mentioned `args` argument to the stack. As such, it can be evaluated multiple times (instead of retrieving the value from the stack). No vulnerable ... • https://github.com/vyperlang/vyper/blob/cedf7087e68e67c7bfbd47ae95dcb16b81ad2e02/vyper/builtins/functions.py#L1847 • CWE-95: Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection') •

CVE-2024-32646 – vyper performs double eval of the slice args when buffer from adhoc locations
https://notcve.org/view.php?id=CVE-2024-32646
25 Apr 2024 — Vyper is a pythonic Smart Contract Language for the Ethereum virtual machine. In versions 0.3.10 and prior, using the `slice` builtin can result in a double eval vulnerability when the buffer argument is either `msg.data`, `self.code` or `
.code` and either the `start` or `length` arguments have side-effects. It can be easily triggered only with the versions `<0.3.4` as `0.3.4` introduced the unique symbol fence. No vulnerable production contracts were found. Additionally, double evaluation of side-... • https://github.com/vyperlang/vyper/security/advisories/GHSA-r56x-j438-vw5m • CWE-20: Improper Input Validation •