CVE-2023-32059 Vyper vulnerable to incorrect ordering of arguments for kwargs passed to internal calls

High 7.5 Published Updated

Attackers can exploit incorrect argument ordering in internal calls to bypass type checking and execute unintended code in Vyper smart contracts.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2023-32059?

CVE-2023-32059 is a high-severity code injection vulnerability in vyperlang vyper, published on 11 May 2023. An attacker can exploit it over the internet without logging in, with no action from the victim.

Official description

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.

Weakness: CWE-683

Which versions are affected by CVE-2023-32059?

3 open source packages ship an affected version, including vyper. It affects 1 product.

PackageAffectedFixed in
vyper PyPIAll versions0.3.8
vyper PyPIAll versions0.3.8
vyper PyPIAll versions0.3.8

Products include Vyperlang Vyper.

How do I fix CVE-2023-32059?

Upgrade vyper to 0.3.8 or later.

Upgrade, and never evaluate templates, expressions or code built from user input. More about Code injection.

Is CVE-2023-32059 being exploited?

There is no known exploitation of CVE-2023-32059 in the wild and no public exploit code.

Sources

Also known as GHSA-ph9x-4vc9-m39g, PYSEC-2023-79.

Is CVE-2023-32059 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free