CVE-2024-32649: vyper performs multiple eval of `sqrt()` argument built in

CVE-2024-32649 · Severity: low · CVSS 3.1 · Published 2024-04-25

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.

Technologies: vyper (PyPI). Vendors: PyPI.

Quick answers

Is CVE-2024-32649 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2024-32649 being exploited in the wild.
How severe is CVE-2024-32649?
Low severity, with a CVSS score of 3.1, published 25 April 2024.
Which products and versions are affected?
vyper (PyPI) ECOSYSTEM:introduced=0,fixed=0.4.0.
Is there a fix for CVE-2024-32649?
Yes. vyper (PyPI): upgrade to 0.4.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
Am I affected by CVE-2024-32649?
Check whether you run vyper (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • vyper (PyPI): upgrade to 0.4.0 or later
    pip install "vyper>=0.4.0"

Affected products

  • vyper (PyPI) ECOSYSTEM:introduced=0,fixed=0.4.0

Identifiers

  • CVE-2024-32649
  • GHSA-5jrj-52x8-m64h
  • PYSEC-2024-209

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.