CVE-2020-37289GHSA-mr6r-mvw4-736g
Vyper before 0.3.1 Improper Input Validation of uint8 Interface Return Values
vyperlang vyperPyPILibraries & packages
CVSS
6.3MediumExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.26%Chance of exploitation activity in the next 30 days, higher than 16% of CVEs. Scored 23 Oct 2026FIRST EPSS
What fixes it
- 0.3.1vyperCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
Vyper before 0.3.1 lacks a uint8 type, allowing interface return values declared as uint8, such as ERC20.decimals(), to be stored in uint256 variables without bounds checking. Malicious contracts can return values greater than 255 to manipulate or bypass contract logic that relies on these values.
Text from CVE List
Affected versions 19
- vyperaffected: all versions before 0.3.1CVE List
- vyperunaffected: 0.3.1CVE List
- vyper, PyPIfrom first release, through 0.1.0b16OSV
- vyper, PyPI0.1.0b1OSV
- vyper, PyPI0.1.0b10OSV
- vyper, PyPI0.1.0b11OSV
- vyper, PyPI0.1.0b12OSV
- vyper, PyPI0.1.0b13OSV
- vyper, PyPI0.1.0b14OSV
- vyper, PyPI0.1.0b15OSV
- vyper, PyPI0.1.0b16OSV
- vyper, PyPI0.1.0b2OSV
- vyper, PyPI0.1.0b3OSV
- vyper, PyPI0.1.0b4OSV
- vyper, PyPI0.1.0b5OSV
- vyper, PyPI0.1.0b6OSV
- vyper, PyPI0.1.0b7OSV
- vyper, PyPI0.1.0b8OSV
- vyper, PyPI0.1.0b9OSV