Vulnerability · CVE-2020-37289
Vyper interfaces returning integer types less than 256 bits can be manipulated if uint256 is used
Published Mar 25, 2020 · catalog updated Oct 24, 2026 · Vyper interfaces returning integer
Check if you run it
No confirmed exploitation is on record for CVE-2020-37289. EPSS is 0.26%. Act only if a listed version of Vyper interfaces returning integer is installed.
Gaps on this record
- The stored product name is a package slug. The name on this page is taken from the title (Vyper interfaces returning integer).
- No vendor fix or required action is stored. Compare the linked advisory before you change production.
- Severity
- Low—
- Known exploitation
- Not in CISA/VulnCheck KEV
- EPSS
- 0.26%
- Remediation
- Advisory link
- Affected products
- PyPI vyper
# VVE-2020-0001 Earlier today, we received a responsible disclosure of a potential issue from @montyly (security researcher at @trailofbits) for Vyper users who make assumptions about what values certain interface types can return. ### Impact We determined the issue to be mild and unlikely to be exploited, with an easy workaround while the correct resolution is in process. The issue stems from a number of things, which we will detail here. (1) The ABI Specification is under-defined such that function return type is not always reflected in how you use it This means that a function which returns under the hood actually returns a 32 byte integer, making it identical to a function that returns . This allows users to read an interface that returns a value to be stored into a variable without any explicit casting or input validation. (2) Vyper doesn't have types When Vyper was originally created, it only had one numeric type, but we added just enough types to be able to work with the majority of ERC interfaces that exist. Unfortunately, we never added , because it's only majority usage was for as the return type, which isn't reflected in the method ID. Because of (1), it didn't matter that we didn't have these types implemented because you could capture the return value as and use it just fine. (3) returns (which is an optional function) returns a type. While it was never intentioned to be used directly within a smart contract (hence being optional), someone could easily make the decision to rely on it to perform important functionality within their Vyper smart contract. This might lead to a scenario where an unexpectedly large value (> 255) returned by calling this function (which a malicious contract writer might write) would allow an attacker to manipulate or bypass certain logic depending on this value. In summary, because of (1), it isn't necessary to have to cast the return value of a function that returns to , and because of (2) it isn't possible to have the type s
Are you affected?
Enter the version you run. The result uses only the ranges stored on this record.
The check returns affected, not affected, or incomplete. It does not guess a version that is missing from the record.
- PyPI vyper0 → 0.1.0b16
How to fix CVE-2020-37289
Recommended remediation
A patch or advisory reference is linked. Open the original publisher for availability by product version.
Official advisories
What to do
Three questions, each answered from this record only. Confirm the vendor advisory before you patch.
Should you patch?
No confirmed exploitation is on record for CVE-2020-37289. EPSS is 0.26%. Act only if a listed version of Vyper interfaces returning integer is installed.
Which versions are affected?
Compare what you have installed with 0 → 0.1.0b16. Compare the installed version with the linked vendor advisory before you change production.
What should an analyst verify?
No weakness class is stored. EPSS 0.26%. There is no CISA KEV listing. No Exploit-DB or Metasploit reference is linked. Use the source links for the original advisory.
Code
The project this record applies to. Exploit listings stay in References.
Timeline
Detection, updates, and resolution for this record.
Mar 25, 2020 · GitHub Advisory Database
Detected
# VVE-2020-0001 Earlier today, we received a responsible disclosure of a potential issue from @montyly (security researcher at @trailofbits) for Vyper users who make assumptions about what values certain interface types can return. ### Impact We determined the issue to be mild and unlikely to be exploited, with an easy workaround while the correct resolution is in process. The issue stems from a n
Oct 24, 2026 · GitHub Advisory Database
Fix available
vyper fixed in 0.1.0b16
Oct 24, 2026 · GitHub Advisory Database
Updated
# VVE-2020-0001 Earlier today, we received a responsible disclosure of a potential issue from @montyly (security researcher at @trailofbits) for Vyper users who make assumptions about what values certain interface types can return. ### Impact We determined the issue to be mild and unlikely to be exploited, with an easy workaround while the correct resolution is in process. The issue stems from a n
Sources
- CVE.orgVulnerability recordCVE-2020-37289
Official CVE identifier
cve.org - FIRST EPSSExploitation probabilityCVE-2020-37289
30-day exploitation probability 0.26%
first.org - GitHub Advisory DatabasePackage advisoryGHSA-mr6r-mvw4-736g
GitHub Advisory Database record mirrored by OSV.
github.com - OpenSSF OSV / OSV ScannerPackage advisoryGHSA-mr6r-mvw4-736g
Vyper interfaces returning integer types less than 256 bits can be manipulated if uint256 is used
osv.dev
References
Freshness
Last verified in this catalog Oct 24, 2026. Significant claims (KEV, EPSS, CVSS, affected ranges) come from the source rows above — open the original publisher for the authoritative advisory.