CVE-2023-32059
published 2023-05-11CVE-2023-32059: Vyper is a Pythonic smart contract language for the Ethereum virtual machine. Prior to version 0.3.8, internal calls with default arguments are compiled…
PriorityP340high7.5CVSS 3.1
AVNACLPRNUINSUCNIHAN
EPSS
0.73%
49.9th percentile
Vyper is a Pythonic smart contract language for the Ethereum virtual machine. Prior to version 0.3.8, internal calls with default arguments are compiled incorrectly. Depending on the number of arguments provided in the call, the defaults are added not right-to-left, but left-to-right. If the types are incompatible, typechecking is bypassed. The ability to pass kwargs to internal functions is an undocumented feature that is not well known about. The issue is patched in version 0.3.8.
Affected
3 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| vyperlang | vyper | < 0.3.8 | 0.3.8 |
| vyperlang | vyper | >= 0 < 0.3.8 | 0.3.8 |
| vyperlang | vyper | >= 0 < c3e68c302aa6e1429946473769dd1232145822ac | c3e68c302aa6e1429946473769dd1232145822ac |
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
OSV
Vyper vulnerable to incorrect ordering of arguments for kwargs passed to internal calls
osv·2023-05-12
CVE-2023-32059 [HIGH] Vyper vulnerable to incorrect ordering of arguments for kwargs passed to internal calls
Vyper vulnerable to incorrect ordering of arguments for kwargs passed to internal calls
### Impact
Internal calls to internal functions with more than 1 default argument are compiled incorrectly. Depending on the number of arguments
provided in the call, the defaults are added not right-to-left, but left-to-right. If the types are incompatible,
typechecking is bypassed. In the `bar()` function in the following code, `self.foo(13)` is compiled to
`self.foo(13,12)` instead of `self.foo(13,1337)`.
```vyper
@internal
def foo(a:uint256 = 12, b:uint256 = 1337):
pass
@internal
def bar():
self.foo(13)
```
note that at the time of publication, the ability to pass kwargs to internal functions is an undocumented feature that does not seem to be widely used.
### Patches
patched in c3e68c302aa6e1
GHSA
Vyper vulnerable to incorrect ordering of arguments for kwargs passed to internal calls
ghsa·2023-05-12
CVE-2023-32059 [HIGH] CWE-683 Vyper vulnerable to incorrect ordering of arguments for kwargs passed to internal calls
Vyper vulnerable to incorrect ordering of arguments for kwargs passed to internal calls
### Impact
Internal calls to internal functions with more than 1 default argument are compiled incorrectly. Depending on the number of arguments
provided in the call, the defaults are added not right-to-left, but left-to-right. If the types are incompatible,
typechecking is bypassed. In the `bar()` function in the following code, `self.foo(13)` is compiled to
`self.foo(13,12)` instead of `self.foo(13,1337)`.
```vyper
@internal
def foo(a:uint256 = 12, b:uint256 = 1337):
pass
@internal
def bar():
self.foo(13)
```
note that at the time of publication, the ability to pass kwargs to internal functions is an undocumented feature that does not seem to be widely used.
### Patches
patched in c3e68c302aa6e1
OSV
CVE-2023-32059: Vyper is a Pythonic smart contract language for the Ethereum virtual machine
osv·2023-05-11
CVE-2023-32059 CVE-2023-32059: Vyper is a Pythonic smart contract language for the Ethereum virtual machine
Vyper is a Pythonic smart contract language for the Ethereum virtual machine. Prior to version 0.3.8, internal calls with default arguments are compiled incorrectly. Depending on the number of arguments provided in the call, the defaults are added not right-to-left, but left-to-right. If the types are incompatible, typechecking is bypassed. The ability to pass kwargs to internal functions is an undocumented feature that is not well known about. The issue is patched in version 0.3.8.
No detection rules found.
No public exploits indexed.
No writeups or analysis indexed.
https://github.com/vyperlang/vyper/commit/c3e68c302aa6e1429946473769dd1232145822achttps://github.com/vyperlang/vyper/security/advisories/GHSA-ph9x-4vc9-m39ghttps://github.com/vyperlang/vyper/commit/c3e68c302aa6e1429946473769dd1232145822achttps://github.com/vyperlang/vyper/security/advisories/GHSA-ph9x-4vc9-m39g
2023-05-11
Published