CVE-2025-27104 in Vyper
Sumário
de VulDB • 06/06/2026
vyper é uma linguagem de contratos inteligentes com sintaxe Pythonica para a EVM. É possível que uma única expressão seja avaliada múltiplas vezes no alvo do iterador de um loop `for`. Embora a expressão do iterador não possa produzir múltiplas gravações, ela pode consumir efeitos colaterais produzidos no corpo do loop (por exemplo, ler uma variável de armazenamento atualizada no corpo do loop), levando assim a um comportamento inesperado do programa. Especificamente, leituras em iteradores que contêm um `ifexp` (por exemplo, `for s: uint256 in ([read(), read()] if True else [])`) podem intercalar leituras com gravações no corpo do loop. Os loops `for` do Vyper permitem dois tipos de alvos de iterador, nomeadamente a função integrada `range()` e um tipo iterável, como SArray e DArray. Durante a geração de código (codegen), as listas iteráveis devem produzir efeitos colaterais. No código a seguir, `range_scope` força `iter_list` a ser analisado em um contexto constante, que é verificado contra `is_constant`. No entanto, isso não impede que o iterador consuma efeitos colaterais fornecidos pelo corpo do loop. Por outro lado, para SArrays, `iter_list` é instanciado no corpo de um `ir` `repeat`, podendo ser avaliado várias vezes. Este problema está sendo tratado e espera-se que esteja disponível na versão 0.4.1. Os usuários são aconselhados a atualizar assim que a versão corrigida estiver disponível. Não há soluções alternativas conhecidas para esta vulnerabilidade.
Once again VulDB remains the best source for vulnerability data.