Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Vulnerabilidad de 30 años en Libpng expone a millones de sistemas a ataques de ejecución de código


Se ha descubierto una vulnerabilidad crítica en libpng, la biblioteca oficial de referencia para imágenes PNG utilizada por prácticamente todos los sistemas operativos y navegadores web existentes. La falla, identificada como CVE-2026-25646, es un desbordamiento de búfer en el heap en la función png_set_quantize() que permite a los atacantes bloquear aplicaciones o, potencialmente, ejecutar código arbitrario. 




Se ha descubierto una vulnerabilidad crítica en libpng, la biblioteca oficial de referencia para PNG utilizada por prácticamente todos los sistemas operativos y navegadores web existentes.

La falla, identificada como CVE-2026-25646, es un desbordamiento de búfer en heap en la función png_set_quantize() que permite a los atacantes bloquear aplicaciones o potencialmente ejecutar código arbitrario.

La vulnerabilidad es especialmente notable por su antigüedad; ha existido desde la creación de la función (cuando se llamaba png_set_dither()), afectando a todas las versiones anteriores de la biblioteca. Los mantenedores han lanzado libpng 1.6.55 hoy para parchear el problema, y se recomienda actualizar de inmediato.

Vulnerabilidad de 30 años en Libpng: un "Legado" Peligroso

La falla reside en png_set_quantize(), una función de API de bajo nivel utilizada para reducir el número de colores en una imagen (cuantización) y adaptarla a las capacidades de una pantalla. Un error lógico específico permite a un atacante forzar a la función a entrar en un bucle infinito que eventualmente lee más allá del final de un búfer interno asignado en el heap.

Las condiciones para activarla son estrictas pero válidas según la especificación PNG:

  • La imagen debe contener un chunk PLTE (paleta) pero no un chunk hIST (histograma).
  • La aplicación debe solicitar cuantización de colores.
  • El número de colores en la paleta debe ser más del doble del máximo soportado por la pantalla del usuario.

La vulnerabilidad surge de una discrepancia sutil en cómo se manejan los índices de color durante el algoritmo de cuantización de "color más cercano".

Para optimizar la reducción de la paleta, png_set_quantize() agrupa colores similares usando una métrica de "distancia de color" (la suma de diferencias absolutas en los canales RGB). Construye una tabla hash, esencialmente un array de listas enlazadas, que mapea estas distancias a pares de colores en la paleta.

El fallo crítico ocurre en cómo se popula esta tabla frente a cómo se accede a ella:

  1. Población: Al construir la tabla hash, el código almacena los índices actuales de los colores en la paleta intermedia.
  2. Poda: Durante el bucle de reducción de la paleta, el código itera sobre esta tabla para encontrar colores que eliminar. Sin embargo, la lógica del bucle asume que la tabla contiene índices originales de la paleta. Intenta convertir estos índices almacenados a sus posiciones actuales usando la tabla de búsqueda index_to_palette para verificar si los colores aún están presentes.

Como el código interpreta erróneamente los índices "actuales" como "originales", las comprobaciones de validez fallan. El algoritmo se vuelve incapaz de identificar colores eliminables, haciendo que el bucle continúe indefinidamente.

La variable max_d (la distancia máxima de búsqueda) se incrementa en un intento de encontrar más candidatos, superando eventualmente el tamaño fijo de la tabla hash (769 punteros). Esto fuerza al programa a leer memoria mucho más allá del búfer asignado.

En el escenario más probable, esta vulnerabilidad provoca un bloqueo determinista (Denegación de Servicio) cuando la aplicación intenta leer memoria no mapeada. Sin embargo, el aviso oficial advierte que el impacto podría ser grave:

La solución implica modificar la lógica de población de la tabla hash para almacenar índices de color originales, garantizando coherencia con el resto de la lógica de la función. Este parche está incluido en libpng 1.6.55.

Se recomienda encarecidamente a desarrolladores y usuarios que actualicen a la versión 1.6.55 de inmediato, ya que la ubicuidad de libpng la convierte en un objetivo de alto valor para el desarrollo de exploits.


Fuentes:
https://cybersecuritynews.com/libpng-vulnerability-exposes-millions-apps/

0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.