PT-2024-24605 · Vyper · Vyper

Trocher

·

Publicado

2024-04-25

·

Atualizado

2024-04-25

·

CVE-2024-32481

CVSS v3.1

5.3

Média

VetorAV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Nome do software vulnerável e versões afetadas
Versões do Vyper 0.3.8 a 0.4.0b1
Descrição
O problema ocorre ao iterar sobre um range da forma range(start, start + N), onde start é um inteiro com sinal e pode ser negativo. Isso faz com que a execução sempre retorne devido a uma asserção incorreta inserida pela geração de código da instrução range. O problema ocorre porque start é interpretado como um inteiro sem sinal para comparação e, se for negativo, seu 255º bit é definido como 1, tornando-o um inteiro sem sinal muito grande e fazendo com que a asserção falhe. Qualquer contrato com um range(start, start + N) em que start seja um inteiro com sinal e possa ser negativo é afetado.
Recomendações
Para as versões 0.3.8 a 0.4.0b1, atualize para a versão 0.4.0b1 ou posterior, que corrige o problema ao proibir a forma problemática de range(). Como solução temporária, considere evitar o uso de range(start, start + N) com valores negativos para start nos contratos afetados até que o problema seja resolvido.

Exploit

Correção

Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾

Enumeração de Fraquezas

Identificadores relacionados

CVE-2024-32481
GHSA-PPX5-Q359-PVWJ
PYSEC-2024-246

Produtos afetados

Vyper