CVE-2026-114116: Vyper through 0.5.0b1 Literal Value Manipulation via Line Separators
Vyper 0.1.0b1 before 0.1.0b17 and 0.4.1 through 0.5.0b1 builds its source-line table with str.splitlines(), which treats characters like form feed and U+2028 as line breaks the Python parser ignores, so numeric literals are classified and validated from shifted source text. An attacker contributing source code can hide these characters in comments, strings or indentation to silently change address, integer or decimal constants.
Affected Software
Event History
Frequently Asked Questions
Which Vyper releases are affected?
The affected ranges are 0.1.0b1 before 0.1.0b17, and 0.4.1 through 0.5.0b1. The provided information does not identify fixed versions outside those ranges.
What does an attacker need to exploit this issue?
An attacker needs to contribute or otherwise influence Vyper source code that will be reviewed or compiled. Exploitation relies on inserting characters such as form feed or U+2028 into comments, strings, or indentation to cause numeric constants to be interpreted differently from the shifted source text.
What is the practical impact during code review?
Numeric address, integer, or decimal constants can be silently changed while the source appears misleading to reviewers. This can result in unintended integrity changes in the compiled contract logic.