CVE-2025-54070 in openzeppelin-contracts
Sumário
de VulDB • 25/05/2026
O OpenZeppelin Contracts é uma biblioteca para o desenvolvimento seguro de smart contracts. A partir da versão 5.2.0 e até a versão 5.4.0, a função `lastIndexOf(bytes,byte,uint256)` da biblioteca `Bytes.sol` pode acessar memória não inicializada quando as duas condições a seguir são atendidas: 1) o comprimento do buffer fornecido é vazio (ou seja, `buffer.length == 0`) e a posição não é `2**256 - 1` (ou seja, `pos != type(uint256).max`). O argumento `pos` poderia ser usado para acessar dados arbitrários fora dos limites do buffer. Isso poderia levar a operação a ficar sem gás (out of gas) ou retornar um índice inválido (fora do buffer vazio). O processamento deste resultado inválido para acessar o `buffer` causaria um revert (reversão) em condições normais. Quando acionada, a função lê a memória no deslocamento `buffer + 0x20 + pos`. Se a memória nessa localização (fora do `buffer`) corresponder ao padrão de busca, a função retornaria um índice fora dos limites em vez do esperado `type(uint256).max`. Isso cria um comportamento inesperado onde os chamadores recebem um índice com aparência válida que aponta para fora dos limites do buffer. Acessos subsequentes à memória que não verificam os limites e usam o índice retornado devem revisar cuidadosamente o impacto potencial dependendo de sua configuração. O código que depende desta função retornando `type(uint256).max` para buffers vazios ou que usa o índice retornado sem verificação de limites pode exibir comportamento indefinido. Os usuários devem atualizar para a versão 5.4.0 para receber o patch.
If you want to get best quality of vulnerability data, you may have to visit VulDB.