---
id: CVE-2020-37287
title: Vyper before 0.2.6 Call Stack Corruption via Complex Type Function Arguments
summary: >-
  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 …
severity: medium
cvss: 5.9
cvssVector: 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N'
cvssSource: cna
cwe:
  - CWE-131
vendor: vyperlang
product: vyper
affected:
  - vyper < 0.2.6
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-10-28T14:59:53.649860Z'
published: '2026-10-21'
updated: '2026-10-28'
sourceUpdated: '2026-10-28T15:00:19.800Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2020-37287'
references:
  - url: 'https://github.com/vyperlang/vyper/security/advisories/GHSA-4v7v-gqf9-ww2g'
    label: GitHub Security Advisory (GHSA-4v7v-gqf9-ww2g)
  - url: >-
      https://www.vulncheck.com/advisories/vyper-before-0.2.6-call-stack-corruption-via-complex-type-function-arguments
    label: >-
      VulnCheck Advisory: Vyper before 0.2.6 Call Stack Corruption via Complex
      Type Function Arguments
  - url: 'https://github.com/vyperlang/vyper/issues/2183'
  - url: 'https://github.com/vyperlang/vyper/pull/2184'
  - url: >-
      https://github.com/vyperlang/vyper/commit/0be02b7331e8febe79d5a4218829c72e30417a29
  - url: 'https://github.com/vyperlang/vyper'
  - url: 'https://github.com/vyperlang/vyper/releases/tag/v0.2.6'
tags:
  - cve.org
  - osv
  - pip
epss: 0.00251
epssPercentile: 0.1659
aliases:
  - GHSA-4v7v-gqf9-ww2g
ecosystem: pip
patched:
  - vyper 0.2.6
ingestedAt: '2026-10-21T01:37:08.049Z'
---

## Overview

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.

## Affected

- `vyper < 0.2.6`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Package advisory (CVE-2020-37287)

Affected packages:

- `vyper < 0.2.6`

Patched in:

- `vyper 0.2.6`

Source: https://osv.dev/vulnerability/GHSA-4v7v-gqf9-ww2g
