CVE-2020-37289
Deferred Deferred - Pending Action

Vyper uint8 Absence Enables Interface Value Manipulation

Vulnerability report for CVE-2020-37289, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-10-21

Last updated on: 2026-10-28

Assigner: VulnCheck

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-10-21
Last Modified
2026-10-28
Generated
2026-11-10
AI Q&A
2026-10-21
EPSS Evaluated
2026-11-08
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
vyperlang vyper 0

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-20 The product receives input or data, but it does not validate or incorrectly validates that the input has the properties that are required to process the data safely and correctly.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability affects Vyper versions before 0.3.1 due to a lack of uint8 type support. Interface return values declared as uint8, such as ERC20.decimals(), can be stored in uint256 variables without bounds checking. Malicious contracts can return values greater than 255, potentially manipulating or bypassing contract logic that depends on these values.

Detection Guidance

To detect this vulnerability, check Vyper versions in use. Run: vyper --version. If the version is below 0.3.1, the system is vulnerable. Additionally, review smart contracts for improper handling of uint8 return values, such as ERC20.decimals(), which may be stored in uint256 without validation.

Impact Analysis

The impact includes potential manipulation of contract logic that relies on uint8 values like decimals. Exploitation could lead to incorrect calculations, unauthorized access, or bypassing security checks in smart contracts. However, exploitation is considered unlikely unless contracts depend on unchecked interface returns.

Compliance Impact

This vulnerability does not directly affect compliance with GDPR or HIPAA as it pertains to smart contract logic and type validation in Vyper. However, if exploited, it could lead to financial or operational disruptions in systems handling sensitive data, potentially impacting compliance indirectly by violating integrity or availability requirements.

Mitigation Strategies

Upgrade Vyper to version 0.3.1 or later. For existing contracts, add validation to ensure returned values fit expected ranges, such as using assert decimals < 256 for ERC20.decimals(). Avoid relying on implicit type casting from uint8 to uint256.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2020-37289. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart

Security Radar

News mentioning this vulnerability
Loading related security news...