First published: Thu May 11 2023(Updated: )
### 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 c3e68c302aa6e1429946473769dd1232145822ac ### Workarounds _Is there a way for users to fix or remediate the vulnerability without upgrading?_ ### References _Are there any links users can visit to find out more?_
Credit: security-advisories@github.com security-advisories@github.com security-advisories@github.com
Affected Software | Affected Version | How to fix |
---|---|---|
Vyperlang Vyper | <0.3.8 | |
pip/vyper | <0.3.8 | 0.3.8 |
Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.
CVE-2023-32059 is a vulnerability in the Vyper smart contract language for the Ethereum virtual machine where internal calls with default arguments are compiled incorrectly.
The severity of CVE-2023-32059 is high with a CVSS score of 7.5.
CVE-2023-32059 affects Vyper versions prior to 0.3.8.
To fix CVE-2023-32059, update Vyper to version 0.3.8 or later.
The CWE ID for CVE-2023-32059 is 683.