Improper Control of Generation of Code ('Code Injection') Affecting vyper package, versions [0.3.4, 0.4.0)
Threat Intelligence
Exploit Maturity
Proof of concept
EPSS
0.04% (11th
percentile)
Do your applications use this vulnerable package?
In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.
Test your applications- Snyk ID SNYK-PYTHON-VYPER-6674051
- published 26 Apr 2024
- disclosed 25 Apr 2024
- credit cyberthirst
Introduced: 25 Apr 2024
CVE-2024-32649 Open this link in a new tabHow to fix?
Upgrade vyper
to version 0.4.0 or higher.
Overview
vyper is a Pythonic Smart Contract Language for the EVM.
Affected versions of this package are vulnerable to Improper Control of Generation of Code ('Code Injection') due to the build_IR
function of the sqrt
builtin not caching the argument to the stack, leading to potential double evaluation of the argument if it has side-effects. This could allow an attacker to manipulate the outcome of the sqrt
function under certain conditions.
PoC
c: uint256
@internal
def some_decimal() -> decimal:
self.c += 1
return 1.0
@external
def foo() -> uint256:
k: decimal = sqrt(self.some_decimal())
return self.c
References
CVSS Scores
version 3.1