CVE-2024-32481mediumCWE-681

CVE-2024-32481: falha de média gravidade em vyperlang vyper

vyper's range(start, start + N) reverts for negative numbers

Publicada em · Atualizada em

Aviso por e-mail quando ela entrar no KEV, ganhar PoC pública ou subir de nota.

13Vexday Risk Score

Sem sinal de exploração. Nenhum artefato público de exploração conhecido até agora.

ssvc Trackcvss 5.3epss 0.8%
Em resumo

Contratos Vyper que usam loops range com valores iniciais negativos falham inesperadamente. É um bug na geração de código do Vyper que torna esses loops inutilizáveis quando o valor inicial é negativo.

Detalhe técnico

Trata-se de um erro de comparação numérica incorreta na geração de código do Vyper para range() com inteiros com sinal. Quando start é negativo em range(start, start + N), o compilador usa incorretamente comparação sem sinal (le) em vez de com sinal (sle), fazendo o valor negativo ser interpretado como um inteiro sem sinal muito grande, causando falha sempre na asserção.

Resumo gerado e traduzido por IA a partir da descrição oficial.
Vyper is a pythonic Smart Contract Language for the Ethereum virtual machine. Starting in version 0.3.8 and prior to version 0.4.0b1, when looping over a `range` of the form `range(start, start + N)`, if `start` is negative, the execution will always revert. This issue is caused by an incorrect assertion inserted by the code generation of the range `stmt.parse_For_range()`. The issue arises when `start` is signed, instead of using `sle`, `le` is used and `start` is interpreted as an unsigned integer for the comparison. If it is a negative number, its 255th bit is set to `1` and is hence interpreted as a very large unsigned integer making the assertion always fail. Any contract having a `range(start, start + N)` where `start` is a signed integer with the possibility for `start` to be negative is affected. If a call goes through the loop while supplying a negative `start` the execution will revert. Version 0.4.0b1 fixes the issue.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Produtos afetados
vyperlang · vyper