Description
Vyper before 0.2.6 contains a call stack corruption vulnerability that causes incorrect function outputs when complex types with non-base members are passed as arguments. Contracts passing multi-dimensional arrays or structs to internal or external functions receive corrupted values because the compiler assumed each subtype size is 32.
Published: 2026-10-21
Score: 8.2 High
EPSS: < 1% Very Low
KEV: No
Impact: Incorrect Function Execution
Action: Patch Now
AI Analysis

Impact

Vyper before version 0.2.6 miscalculates the size of complex type elements, treating each subgroup as if it occupies exactly 32 bytes. This assumption causes stack corruption when a contract passes multi‑dimensional arrays or structs with non‑base members to internal or external functions. The corrupted stack results in the called function receiving malformed data, leading to wrong outputs and potential inadvertent state changes. The weakness is an instance of an incorrect assumption about memory layout (CWE‑131).

Affected Systems

All individuals or organizations that compile contracts with Vyper earlier than 0.2.6 and deploy them to any Ethereum‑compatible blockchain are affected. This includes any contract that accepts complex type arguments—such as multi‑dimensional arrays or structs—in either internal or external function calls. The impact is confined to the affected contract, but any actor capable of interacting with the contract can trigger the mis‑behaviour.

Risk and Exploitability

The CVSS score of 8.2 classifies the flaw as high severity. The EPSS score is not available and the vulnerability is not listed in the CISA KEV catalog, indicating no publicly documented exploits. Nevertheless, the exploit path is straightforward: an attacker only needs to supply specially crafted complex type data through ordinary contract interaction, without requiring privileged access or out‑of‑band techniques. Given the severity and ease of exploitation, the vulnerability poses a significant risk to contract integrity.

Generated by OpenCVE AI on October 21, 2026 at 12:24 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Vyper to version 0.2.6 or later and recompile all affected contracts
  • Redeploy the updated contracts to the blockchain, ensuring that the new bytecode is used in place of the old version
  • Perform a code audit or static analysis to confirm that no remaining calls use complex type arguments that could trigger the corruption

Generated by OpenCVE AI on October 21, 2026 at 12:24 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 28 Oct 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 21 Oct 2026 00:45:00 +0000

Type Values Removed Values Added
Description Vyper before 0.2.6 contains a call stack corruption vulnerability that causes incorrect function outputs when complex types with non-base members are passed as arguments. Contracts passing multi-dimensional arrays or structs to internal or external functions receive corrupted values because the compiler assumed each subtype size is 32.
Title Vyper before 0.2.6 Call Stack Corruption via Complex Type Function Arguments
First Time appeared Vyperlang
Vyperlang vyper
Weaknesses CWE-131
CPEs cpe:2.3:a:vyperlang:vyper:*:*:*:*:*:*:*:*
Vendors & Products Vyperlang
Vyperlang vyper
References
Metrics cvssV3_1

{'score': 5.9, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N'}

cvssV4_0

{'score': 8.2, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-10-28T15:00:19.800Z

Reserved: 2026-10-20T21:52:54.416Z

Link: CVE-2020-37287

cve-icon Vulnrichment

Updated: 2026-10-28T15:00:15.343Z

cve-icon NVD

Status : Deferred

Published: 2026-10-21T01:17:18.540

Modified: 2026-10-28T15:17:01.293

Link: CVE-2020-37287

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-21T18:30:13Z

Weaknesses
  • CWE-131

    Incorrect Calculation of Buffer Size