CVE-2023-30629
published 2023-04-24CVE-2023-30629: Vyper is a Pythonic Smart Contract Language for the ethereum virtual machine. In versions 0.3.1 through 0.3.7, the Vyper compiler generates the wrong bytecode…
PriorityP339high7.5CVSS 3.1
AVNACLPRNUINSUCNIHAN
EPSS
0.88%
55.1th percentile
Vyper is a Pythonic Smart Contract Language for the ethereum virtual machine. In versions 0.3.1 through 0.3.7, the Vyper compiler generates the wrong bytecode. Any contract that uses the `raw_call` with `revert_on_failure=False` and `max_outsize=0` receives the wrong response from `raw_call`. Depending on the memory garbage, the result can be either `True` or `False`. A patch is available and, as of time of publication, anticipated to be part of Vyper 0.3.8. As a workaround, one may always put `max_outsize>0`.
Affected
4 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| vyperlang | vyper | — | — |
| vyperlang | vyper | >= 0 < 851f7a1b3aa2a36fd041e3d0ed38f9355a58c8ae | 851f7a1b3aa2a36fd041e3d0ed38f9355a58c8ae |
| vyperlang | vyper | >= 0.3.1 < 0.3.8 | 0.3.8 |
| vyperlang | vyper | >= 0.3.1 < 0.3.8 | 0.3.8 |
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
CVE-2023-30629: Vyper is a Pythonic Smart Contract Language for the ethereum virtual machine
osv·2023-04-24
CVE-2023-30629 CVE-2023-30629: Vyper is a Pythonic Smart Contract Language for the ethereum virtual machine
Vyper is a Pythonic Smart Contract Language for the ethereum virtual machine. In versions 0.3.1 through 0.3.7, the Vyper compiler generates the wrong bytecode. Any contract that uses the `raw_call` with `revert_on_failure=False` and `max_outsize=0` receives the wrong response from `raw_call`. Depending on the memory garbage, the result can be either `True` or `False`. A patch is available and, as of time of publication, anticipated to be part of Vyper 0.3.8. As a workaround, one may always put `max_outsize>0`.
OSV
Incorrect success value returned in vyper
osv·2023-04-24
CVE-2023-30629 [HIGH] Incorrect success value returned in vyper
Incorrect success value returned in vyper
### Background
During the audit of [Lido's Gate Seals](https://github.com/lidofinance/gate-seals) code [statemind](https://statemind.io) team identified a weird behavior of the code that uses `raw_call`: https://github.com/lidofinance/gate-seals/blob/051593e74df01a4131c485b4fda52e691cd4b7d8/contracts/GateSeal.vy#L164 .
Construction like this:
```vyper
success = raw_call(
sealable,
_abi_encode(SEAL_DURATION_SECONDS, method_id=method_id("pauseFor(uint256)")),
revert_on_failure=False
)
```
was not fully documented: https://docs.vyperlang.org/en/v0.3.7/built-in-functions.html#raw_call .
The documentation says that: if `max_outsize=0` it should return nothing and then it says that if `revert_on_failure=False` it should return a `success` flag in the
GHSA
Incorrect success value returned in vyper
ghsa·2023-04-24
CVE-2023-30629 [HIGH] CWE-670 Incorrect success value returned in vyper
Incorrect success value returned in vyper
### Background
During the audit of [Lido's Gate Seals](https://github.com/lidofinance/gate-seals) code [statemind](https://statemind.io) team identified a weird behavior of the code that uses `raw_call`: https://github.com/lidofinance/gate-seals/blob/051593e74df01a4131c485b4fda52e691cd4b7d8/contracts/GateSeal.vy#L164 .
Construction like this:
```vyper
success = raw_call(
sealable,
_abi_encode(SEAL_DURATION_SECONDS, method_id=method_id("pauseFor(uint256)")),
revert_on_failure=False
)
```
was not fully documented: https://docs.vyperlang.org/en/v0.3.7/built-in-functions.html#raw_call .
The documentation says that: if `max_outsize=0` it should return nothing and then it says that if `revert_on_failure=False` it should return a `success` flag in the
No detection rules found.
No public exploits indexed.
No writeups or analysis indexed.
https://docs.vyperlang.org/en/v0.3.7/built-in-functions.html#raw_callhttps://github.com/lidofinance/gate-seals/blob/051593e74df01a4131c485b4fda52e691cd4b7d8/contracts/GateSeal.vy#L164https://github.com/lidofinance/gate-seals/pull/5/fileshttps://github.com/vyperlang/vyper/commit/851f7a1b3aa2a36fd041e3d0ed38f9355a58c8aehttps://github.com/vyperlang/vyper/security/advisories/GHSA-w9g2-3w7p-72g9https://docs.vyperlang.org/en/v0.3.7/built-in-functions.html#raw_callhttps://github.com/lidofinance/gate-seals/blob/051593e74df01a4131c485b4fda52e691cd4b7d8/contracts/GateSeal.vy#L164https://github.com/lidofinance/gate-seals/pull/5/fileshttps://github.com/vyperlang/vyper/commit/851f7a1b3aa2a36fd041e3d0ed38f9355a58c8aehttps://github.com/vyperlang/vyper/security/advisories/GHSA-w9g2-3w7p-72g9
2023-04-24
Published