Openzeppelin · Openzeppelin Contracts · CVE-2024-27094
**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.