First published: Tue Sep 26 2023(Updated: )
### Impact `_abi_decode()` does not validate input when it is nested in an expression. the following example gets correctly validated (bounds checked): ```vyper x: int128 = _abi_decode(slice(msg.data, 4, 32), int128) ``` however, the following example is not bounds checked ```vyper @external def abi_decode(x: uint256) -> uint256: a: uint256 = convert(_abi_decode(slice(msg.data, 4, 32), (uint8)), uint256) + 1 return a # abi_decode(256) returns: 257 ``` the issue can be triggered by constructing an example where the output of `_abi_decode` is not internally passed to `make_setter` (an internal codegen routine) or other input validating routine. ### Patches https://github.com/vyperlang/vyper/pull/3626 ### 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.4<0.3.10 | |
pip/vyper | >=0.3.4<0.3.10 | 0.3.10 |
Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.
`_abi_decode()` does not validate input when it is nested in an expression, allowing potential security vulnerabilities.
Vyper versions between 0.3.4 and 0.3.10 are affected.
Update the Vyper package to version 0.3.10 or apply the appropriate remedy.
You can find more information about CVE-2023-42460 on the GitHub security advisory page: [link](https://github.com/vyperlang/vyper/security/advisories/GHSA-cx2q-hfxr-rj97).