Skip to main content
← All vulnerabilities
CVE-2024-32649PYSEC-2024-209GHSA-5JRJ-52X8-M64H

vyper performs double eval of the argument of sqrt

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

Summary

Vyper is a pythonic Smart Contract Language for the Ethereum virtual machine. In versions 0.3.10 and prior, using the `sqrt` builtin can result in double eval vulnerability when the argument has side-effects. It can be seen that the `build_IR` function of the `sqrt` builtin doesn't cache the argument to the stack. As such, it can be evaluated multiple times (instead of retrieving the value from the stack). No vulnerable production contracts were found. Additionally, double evaluation of side-effects should be easily discoverable in client tests. As such, the impact is low. As of time of publication, no fixed versions are available.

Timeline

  1. CVE published
  2. CISA SSVC assessment

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

  3. Record last updated

Affected versions

  • vyperlang vyper

    through 0.3.10

  • vyperPyPI

    fixed in 0.4.0

References 1

GitHub · vyperlang/vyper