PT-2024-24605 · Vyper · Vyper
Trocher
·
Publicado
2024-04-25
·
Atualizado
2024-04-25
·
CVE-2024-32481
CVSS v3.1
5.3
Média
| Vetor | AV: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
Produtos afetados
Vyper