PT-2024-21645 · Openzeppelin · Openzeppelin Contracts

Rholterhus

·

Publicado

2024-02-29

·

Atualizado

2025-12-04

·

CVE-2024-27094

CVSS v3.1

7.4

Alta

VetorAV: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

CVE-2024-27094
GHSA-9VX6-7XXF-X967

Produtos afetados

Openzeppelin Contracts