Vyper: Memory corruption via internal function calls in arrays
Summary
Vyper versions from 0.1.0b4 before 0.3.0 can corrupt memory when internal function calls are placed inside arrays, due to an incorrect stack tip pointer. The flaw affects nested array elements, external call arguments, struct literals and raw_log topics. An attacker cannot directly exploit a running service; the impact is incorrect behaviour of smart contracts compiled with a vulnerable version.
Affected
- Vyper from 0.1.0b4 before 0.3.0 (CVE record, VulnCheck, Mend)
- Vendor advisory GHSA-22wc-c9wj-6q2v lists affected versions below 0.2.11; the discrepancy with the CVE record is unresolved
- Affected code pattern: internal calls in nested array elements, external call arguments, struct literals or raw_log topics
Fixed in
- Vyper 0.3.0 (fix via pull request #2345 and #2447 per vendor advisory)
- Vendor advisory names 0.2.12 as the patched version; the discrepancy is unresolved, so use 0.3.0 or later
Workaround
- Unknown. No workaround found in the sources; upgrading to a fixed release is the remedy.
Exploitation
- No known exploitation.
- CISA KEV flag: No. CISA SSVC: exploitation none, not automatable.
- EPSS values differ between sources (0.00284 per Tenable, 0.28 per Mend).
- No public proof of concept found.
Our recommendation
- Check dependency files and build pipelines for vyper below 0.3.0.
- Upgrade to Vyper 0.3.0 or later.
- Recompile and redeploy contracts built with an older version, after review and testing.
- Review contract code for the listed patterns if the project is live.
- Risk applies mainly to blockchain and smart contract development; ordinary servers and office IT are not exposed.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- GitHub Security Advisory GHSA-22wc-c9wj-6q2v github.com
- VulnCheck advisory: Vyper before 0.3.0 Memory Corruption www.vulncheck.com
- Tenable CVE-2021-48020 www.tenable.com
- Mend vulnerability database CVE-2021-48020 www.mend.io
- Snyk SNYK-PYTHON-VYPER-1252242 security.snyk.io
- OSV GHSA-22wc-c9wj-6q2v osv.dev
- VulDB 423883 vuldb.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 13:26.
Original description (NVD)
Vyper from 0.1.0b4 before 0.3.0 contains a memory corruption vulnerability caused by an incorrect stack tip pointer when internal function calls are performed inside arrays. Contracts placing internal calls in nested array elements, external call arguments, struct literals, or raw_log topics can have memory corrupted, producing incorrect contract behavior.
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
