Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en libpng de pnggroup (CVE-2026-33416)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-416 Utilización después de liberación
Fecha de publicación:
26/03/2026
Última modificación:
02/04/2026

Descripción

LIBPNG es una biblioteca de referencia para su uso en aplicaciones que leen, crean y manipulan archivos de imagen ráster PNG (Portable Network Graphics). En las versiones 1.2.1 a 1.6.55, 'png_set_tRNS' y 'png_set_PLTE' cada una aliasan un búfer asignado en el heap entre 'png_struct' y 'png_info', compartiendo una única asignación entre dos estructuras con vidas útiles independientes. El aliasing de 'trans_alpha' ha estado presente desde al menos libpng 1.0, y el aliasing de 'palette' desde al menos 1.2.1. Ambos afectan a todas las líneas de versiones anteriores: 'png_set_tRNS' establece 'png_ptr->trans_alpha = info_ptr->trans_alpha' (búfer de 256 bytes) y 'png_set_PLTE' establece 'info_ptr->palette = png_ptr->palette' (búfer de 768 bytes). En ambos casos, llamar a 'png_free_data' (con 'PNG_FREE_TRNS' o 'PNG_FREE_PLTE') libera el búfer a través de 'info_ptr' mientras que el puntero 'png_ptr' correspondiente permanece colgante. Las funciones de transformación de fila subsiguientes desreferencian y, en algunas rutas de código, escriben en la memoria liberada. Una segunda llamada a 'png_set_tRNS' o 'png_set_PLTE' tiene el mismo efecto, porque ambas funciones llaman internamente a 'png_free_data' antes de reasignar el búfer de 'info_ptr'. La versión 1.6.56 corrige el problema.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:libpng:libpng:*:*:*:*:*:*:*:* 1.2.1 (incluyendo) 1.6.56 (excluyendo)