Skip to main content
← All vulnerabilities
CVE-2023-30629PYSEC-2023-131GHSA-W9G2-3W7P-72G9

Vyper's raw_call with outsize=0 and revert_on_failure=False returns incorrect success value

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 0.3.8
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: yes
  • Technical impact: partial

Summary

Vyper is a Pythonic Smart Contract Language for the ethereum virtual machine. In versions 0.3.1 through 0.3.7, the Vyper compiler generates the wrong bytecode. Any contract that uses the `raw_call` with `revert_on_failure=False` and `max_outsize=0` receives the wrong response from `raw_call`. Depending on the memory garbage, the result can be either `True` or `False`. A patch is available and, as of time of publication, anticipated to be part of Vyper 0.3.8. As a workaround, one may always put `max_outsize>0`.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: yes · Technical impact: partial

  3. Record last updated

Affected versions

  • vyperlang vyper

    From 0.3.1 · through 0.3.7

  • vyperPyPI

    From 0.3.1 · fixed in 0.3.8

References 5

GitHub · vyperlang/vyper

GitHub · lidofinance/gate-seals

docs.vyperlang.org