CVE-2023-32058
published 2023-05-11CVE-2023-32058: Vyper is a Pythonic smart contract language for the Ethereum virtual machine. Prior to version 0.3.8, due to missing overflow check for loop variables, by…
PriorityP339high7.5CVSS 3.1
AVNACLPRNUINSUCNINAH
EPSS
0.91%
56.0th percentile
Vyper is a Pythonic smart contract language for the Ethereum virtual machine. Prior to version 0.3.8, 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. 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. The problem has been patched in version 0.3.8.
Affected
3 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| vyperlang | vyper | < 0.3.8 | 0.3.8 |
| vyperlang | vyper | >= 0 < 3de1415ee77a9244eb04bdb695e249d3ec9ed868 | 3de1415ee77a9244eb04bdb695e249d3ec9ed868 |
| vyperlang | vyper | >= 0 < 0.3.8 | 0.3.8 |
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
OSV
Vyper vulnerable to integer overflow in loop
osv·2023-05-12
CVE-2023-32058 [HIGH] Vyper vulnerable to integer overflow in loop
Vyper vulnerable to integer overflow in loop
### 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 3de1415ee77a9244e
GHSA
Vyper vulnerable to integer overflow in loop
ghsa·2023-05-12
CVE-2023-32058 [HIGH] CWE-190 Vyper vulnerable to integer overflow in loop
Vyper vulnerable to integer overflow in loop
### 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 3de1415ee77a9244e
OSV
CVE-2023-32058: Vyper is a Pythonic smart contract language for the Ethereum virtual machine
osv·2023-05-11
CVE-2023-32058 CVE-2023-32058: Vyper is a Pythonic smart contract language for the Ethereum virtual machine
Vyper is a Pythonic smart contract language for the Ethereum virtual machine. Prior to version 0.3.8, 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. 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. The problem has been patched in version 0.3.8.
No detection rules found.
No public exploits indexed.
No writeups or analysis indexed.
https://github.com/vyperlang/vyper/commit/3de1415ee77a9244eb04bdb695e249d3ec9ed868https://github.com/vyperlang/vyper/security/advisories/GHSA-6r8q-pfpv-7cgjhttps://github.com/vyperlang/vyper/commit/3de1415ee77a9244eb04bdb695e249d3ec9ed868https://github.com/vyperlang/vyper/security/advisories/GHSA-6r8q-pfpv-7cgj
2023-05-11
Published