First published: Thu May 11 2023(Updated: )
### Impact Due to missing overflow check for loop variables, by assigning the iterator of a loop to a variable, it is possible to overflow the type of the latter. In the following example, calling `test` returns `354`, meaning that the variable `a` did store `354` a value out of bound for the type `uint8`. ```Vyper @external def test() -> uint16: x:uint8 = 255 a:uint8 = 0 for i in range(x, x+100): a = i return convert(a,uint16) ``` The issue seems to happen only in loops of type `for i in range(a, a + N)` as in loops of type `for i in range(start, stop)` and `for i in range(stop)`, the compiler is able to raise a `TypeMismatch` when trying to overflow the variable. thanks to @trocher for reporting ### Patches patched in 3de1415ee77a9244eb04bdb695e249d3ec9ed868 ### Workarounds
Credit: security-advisories@github.com security-advisories@github.com security-advisories@github.com
Affected Software | Affected Version | How to fix |
---|---|---|
Vyperlang Vyper | <0.3.8 | |
pip/vyper | <0.3.8 | 0.3.8 |
Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.
CVE-2023-32058 is a vulnerability in the Vyper smart contract language for the Ethereum virtual machine that allows for an overflow of loop variables, potentially resulting in a type overflow.
CVE-2023-32058 affects Vyper prior to version 0.3.8, where a missing overflow check for loop variables may lead to the overflow of the type of the variable.
The severity of CVE-2023-32058 is high, with a severity value of 7.5.
To fix CVE-2023-32058, you should update Vyper to version 0.3.8 or later, which includes the necessary overflow check for loop variables.
The Common Weakness Enumeration (CWE) of CVE-2023-32058 is CWE-190, which relates to an integer overflow or wraparound.