Vyper: Call stack corruption when passing complex type containing non-base type members as argument
Vyper: Call stack corruption when passing complex type containing non-base type members as argument. When we pass a multi-dimensional array (like [[1, 2], [3, 4]]) as an argument to internal/external functions we get incorrect output. This is due to a stack management issue, because it was assumed that the size of each subtype of an array/struct is 32, which is not always correct.
Vuln-watch · relayed from the GitHub Advisory Database; see Source & attribution below
Summary
When we pass a multi-dimensional array (like [[1, 2], [3, 4]]) as an argument to internal/external functions we get incorrect output. This is due to a stack management issue, because it was assumed that the size of each subtype of an array/struct is 32, which is not always correct.
Affected
- vyper (pip) < 0.2.6 — fixed in 0.2.6
Severity
Medium (CVSS 6.9), as rated by the upstream advisory.
Recommended actions
- Upgrade vyper to 0.2.6 or later
Source & attribution
This 0xCERT advisory summarises GHSA-4v7v-gqf9-ww2g from the GitHub Advisory Database: https://github.com/advisories/GHSA-4v7v-gqf9-ww2g. Details may change; refer to the original source for the authoritative record.
References
- https://github.com/advisories/GHSA-4v7v-gqf9-ww2g
- https://github.com/vyperlang/vyper/security/advisories/GHSA-4v7v-gqf9-ww2g
- https://github.com/vyperlang/vyper/issues/2183
- https://github.com/vyperlang/vyper/pull/2184
- https://github.com/vyperlang/vyper/commit/0be02b7331e8febe79d5a4218829c72e30417a29
- https://github.com/vyperlang/vyper/releases/tag/v0.2.6
OpenPGP-signed. The signed text of this advisory verifies against the 0xCERT key CCC7 D9EC 9415 723D.
Published 2026-10-06 · last updated 2026-10-08
curl -s https://www.0xcert.com/pgp.asc | gpg --import && curl -s https://www.0xcert.com/advisory/0xCERT-2026-0186/signed.txt | gpg --verify