PT-2024-21645 · Openzeppelin · Openzeppelin Contracts
Rholterhus
·
Publicado
2024-02-29
·
Atualizado
2025-12-04
·
CVE-2024-27094
CVSS v3.1
7.4
Alta
| Vetor | AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:H |
Nome do software vulnerável e versões afetadas
Versões do OpenZeppelin Contracts anteriores à 4.9.6
Versões do OpenZeppelin Contracts anteriores à 5.0.2
Descrição
A função
Base64.encode no OpenZeppelin Contracts codifica uma entrada bytes iterando sobre ela em blocos de 3 bytes. Quando essa entrada não é um múltiplo de 3, a última iteração pode ler partes da memória que estão além do buffer de entrada. Embora a função encode preencha a saída nesses casos, até 4 bits de dados são mantidos entre a codificação e o preenchimento, corrompendo a saída se esses bits estiverem corrompidos. Esse problema pode ocorrer com mais frequência em certos cenários, como quando uma estrutura bytes memory é alocada logo após a entrada e os primeiros bytes dela são diferentes de zero, ou quando o ponteiro de memória é definido para um local de memória não vazio antes de alocar a entrada. Os desenvolvedores devem avaliar se os bits extras podem ser manipulados de forma maliciosa por um invasor.Recomendações
Para versões anteriores à 4.9.6, atualize para a 4.9.6.
Para versões anteriores à 5.0.2, atualize para a 5.0.2.
Como solução temporária, considere restringir o uso da função
Base64.encode até que um patch seja aplicado.Exploit
Correção
Out of bounds Read
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Openzeppelin Contracts