CVE-2024-32647 json
vyper performs double eval of raw_args in create_from_blueprint
published 2024-04-25 2 y ago modified 2026-06-17 4 mo ago also EUVD-2024-0184 , GHSA-3whq-64q2-qfj6 , PYSEC-2024-208
- cvss
- 5.3
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.5%
- EPSS 0.5% chance of exploitation in 30 days, percentile 39%
- public exploits
- 0
- none known
Summary
Vyper is a pythonic Smart Contract Language for the Ethereum virtual machine. In versions 0.3.10 and prior, using the `create_from_blueprint` builtin can result in a double eval vulnerability when `raw_args=True` and the `args` argument has side-effects. It can be seen that the `_build_create_IR` function of the `create_from_blueprint` builtin doesn't cache the mentioned `args` 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 exist.
Patch / fix
- pypi vyper 0.4.0
- vyperlang vyper 0.4.0
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2 y ago
Exploit prediction
0.45% chance of exploitation in the next 30 days, higher than 39% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N |
| GitHub | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N |
| NVD | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N |
| OSV | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | vyper | <0.4.0 |
0.4.0 |
Affected products
- vyperlang vyper
Classification
- Weakness
-
- CWE-95 Improper Neutralization of Directives in Dynamically Evaluated Code
References
-
github.com
/vyperlang/vyper/security/advisories/GHSA-3whq-64q2-qfj6
web, vendor-advisory, advisory
-
github.com
/vyperlang/vyper/blob/cedf7087e68e67c7bfbd47ae95dcb16b81ad2e02/vyper/builtins/functions.py#L1847
web, product
-
nvd.nist.gov
/vuln/detail/CVE-2024-32647
advisory
-
github.com
/pypa/advisory-database/tree/main/vulns/vyper/PYSEC-2024-208.yaml
web
-
github.com
/vyperlang/vyper
package
-
github.com
/advisories/GHSA-3whq-64q2-qfj6
advisory
Sources
- CVE List CVE-2024-32647
- GitHub Advisory GHSA-3whq-64q2-qfj6
- NVD CVE-2024-32647
- OSV PYSEC-2024-208
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.