Call stack corruption in Vyper with complex type arguments
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- Present
- Impact type
- —
- Confidentiality · integrity · availability
- None · High · None
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA.
Summary
Vyper before 0.2.6 contains a call stack corruption flaw in which the compiler assumes each subtype size is 32 (CWE-131). Contracts that pass multi-dimensional arrays or structs to internal or external functions receive corrupted values and incorrect function outputs. A remote attacker without privileges can affect the integrity of contract results.
Written with Claude Haiku 5.5 from the sources below · 2026-11-02
Description from the CNA
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.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
Remediation
Vyper 0.2.6 fixes this flaw. Upgrade Vyper from any version before 0.2.6 to 0.2.6.
Written with Claude Haiku 5.5 from the sources below · 2026-11-02
- Fix · CNA vyper (vyperlang) Fixed in 0.2.6
Vendor assessments
Timeline
- 2026-10-21 Threatist record created from CVE-2020-37287
- 2026-10-22 Priority changed: MEDIUM → LOW
- 2026-10-28 CISA SSVC decision points changed
- 2026-11-02 Affected versions changed · Red Hat
- 2026-11-02 CVSS score added · Red Hat
References
More vyperlang vulnerabilities
- TI-2024-16182 Vyper bounds check on built-in `slice()` function can be overflowed CVSS 3.1CRITICAL 9.8
- TI-2024-14992 concat built-in can corrupt memory in vyper CVSS 3.1CRITICAL 9.8
- TI-2024-16184 Vyper array negative index vulnerability CVSS 3.1CRITICAL 9.8
- TI-2022-08657 Integer bounds error in Vyper CVSS 3.1CRITICAL 9.8
- TI-2022-11796 Multiple evaluation of contract address in call in vyper CVSS 3.1HIGH 8.2
- TI-2026-78730 Optimizer miscompilation of msg.value | K in Vyper ternary branches CVSS 4.0HIGH 8.2
Sources
- CVE-2020-37287 · CVE Program
- CVE-2020-37287 · NVD
- FIRST EPSS
- CVE-2020-37287 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences