CVE-2026-114115: Vyper 0.3.8 through 0.5.0b1 Memory Misread via Ternary Nested Array Selection
Vyper 0.3.8 through 0.5.0b1 contains a compiler miscompilation vulnerability in parseIfExp that reads nested arrays with narrower inner bounds using the wider result type's memory layout. When a ternary selects the narrower array, inner arrays after the first are read at wrong offsets, causing contracts to silently store corrupted values or revert.
Affected Software
Event History
Frequently Asked Questions
Which contracts are affected in practice?
Contracts compiled with Vyper 0.3.8 through 0.5.0b1 are affected when they use a ternary expression that selects nested arrays whose inner bounds differ. The erroneous read occurs when the ternary selects the array with narrower inner bounds.
Does exploitation require an attacker to have privileges or interact with a user?
No privileges or user interaction are required according to the provided vector. Exploitation is network-reachable, but has high attack complexity.
What is the impact if the vulnerable expression executes?
The contract can read inner arrays after the first at incorrect memory offsets. This can cause silently corrupted values to be stored or cause the contract execution to revert.