CVE-2024-24563 in Vyper
Sumário
de VulDB • 17/06/2026
O Vyper é uma linguagem de contratos inteligentes com sintaxe Pythonica para a Máquina Virtual Ethereum (EVM). Os arrays podem ser indexados por um inteiro com sinal, embora sejam definidos apenas para inteiros sem sinal. O verificador de tipos não gera erro ao detectar o uso de um `int` como índice de um array. O verificador de tipos permite o uso de inteiros com sinal como índices para arrays. A vulnerabilidade está presente em diferentes formas em todas as versões, incluindo a `0.3.10`. Para inteiros, é utilizada a representação em complemento para dois (2's complement). Como o array foi declarado como muito grande, a verificação de limites será superada; os valores negativos serão simplesmente representados como números muito grandes. Até o momento da publicação, não existe uma versão corrigida.
Existem três classes potenciais de vulnerabilidade: comportamento imprevisível, acesso a elementos inacessíveis e negação de serviço.
Classe 1: Se for possível indexar um array com um inteiro negativo sem que ocorra reversão (revert), isso provavelmente não foi antecipado pelo desenvolvedor, e tais acessos podem causar comportamento imprevisível para o contrato.
Classe 2: Se um contrato possui uma invariante na forma `assert index = x` que deve ser acessível. No entanto, ao usar índices negativos, isso pode ser contornado.
Classe 3: Se o índice depender do estado do contrato, isso representa um risco de negação de serviço. Se o estado do contrato puder ser manipulado de tal forma que o índice seja forçado a ser negativo, o acesso ao array sempre resultará em reversão (porque, muito provavelmente, o array não será declarado extremamente grande). No entanto, todos esses cenários são altamente improváveis. O comportamento mais provável é uma reversão na verificação de limites.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.