Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

github логотип

GHSA-vxmm-cwh2-q762

Опубликовано: 22 мая 2023
Источник: github
Github: Прошло ревью
CVSS4: 6.3
CVSS3: 3.7

Описание

Vyper's nonpayable default functions are sometimes payable

Impact

in contracts with at least one regular nonpayable function, due to the callvalue check being inside of the selector section, it is possible to send funds to the default function by using less than 4 bytes of calldata, even if the default function is marked nonpayable. this applies to contracts compiled with vyper<=0.3.7.

# @version 0.3.7 # implicitly nonpayable @external def foo() -> uint256: return 1 # implicitly nonpayable @external def __default__(): # could receive ether here pass

Patches

this was fixed by the removal of the global calldatasize check in https://github.com/vyperlang/vyper/commit/02339dfda0f3caabad142060d511d10bfe93c520.

Workarounds

don't use nonpayable default functions

Пакеты

Наименование

vyper

pip
Затронутые версииВерсия исправления

< 0.3.8

0.3.8

EPSS

Процентиль: 40%
0.00182
Низкий

6.3 Medium

CVSS4

3.7 Low

CVSS3

Дефекты

CWE-670

Связанные уязвимости

CVSS3: 3.7
nvd
больше 2 лет назад

Vyper is a pythonic Smart Contract Language for the ethereum virtual machine. In contracts with more than one regular nonpayable function, it is possible to send funds to the default function, even if the default function is marked `nonpayable`. This applies to contracts compiled with vyper versions prior to 0.3.8. This issue was fixed by the removal of the global `calldatasize` check in commit `02339dfda`. Users are advised to upgrade to version 0.3.8. Users unable to upgrade should avoid use of nonpayable default functions.

EPSS

Процентиль: 40%
0.00182
Низкий

6.3 Medium

CVSS4

3.7 Low

CVSS3

Дефекты

CWE-670