CVE-2023-32058 – vyper
Package
Manager: pip
Name: vyper
Vulnerable Version: >=0 <0.3.8
Severity
Level: High
CVSS v3.1: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
EPSS: 0.00186 pctl0.40654
Details
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 3de1415ee77a9244eb04bdb695e249d3ec9ed868 ### Workarounds
Metadata
Created: 2023-05-12T20:21:35Z
Modified: 2024-11-19T16:32:38Z
Source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/05/GHSA-6r8q-pfpv-7cgj/GHSA-6r8q-pfpv-7cgj.json
CWE IDs: ["CWE-190"]
Alternative ID: GHSA-6r8q-pfpv-7cgj
Finding: F111
Auto approve: 1