El zero-day de JPEG 2000 que abre la puerta a hackear cualquier PC

Share this…

Una vulnerabilidad descubierta en el formato JPEG 2000 puede llevar a la ejecución de código de forma remota en un PC. Este fallo se aprovecha de un error de lectura y escritura de bloques de memoria.

Existe un tipo de archivo de imagen que no está muy extendido en la actualidad, pero que ya tiene dieciséis años de historia. Nos referimos al formato JPEG 2000, que puede trabajar con niveles de compresión mayores que los de JPEG sin que por ello aparezcan los errores derivados del formato anterior al trabajar con altas tasas de trabajo sobre la imagen. Estos errores incluían la aparición de bloques uniformes e imágenes borrosas, algo común en el tipo de archivo tradicional. Hoy en día este formato de archivo no está muy extendido ni tiene soporte de visualización en los principales navegadores, si bien algunos programas como Photoshop permiten exportar imágenes con su extensión.

Relacionado con este formato hemos conocido gracias a The Hacker News la existencia de una vulnerabilidad crítica en el formato JPEG 2000 —un zero-day para ser exactos—, concretamente una implementada en la librería OpenJPEG. Esto permitiría que un atacante aleatorio ejecutase código arbitrario en los sistemas afectados.

OpenJPEG es un codec de código abierto para el formato JPEG 2000. Está escrito en C y se usa para codificar y decodificar imágenes de este tipo, que después se usan insertadas dentro de documentos PDF a través de software como PdFium, Poppler y MuPDF, según se recoge.

Tratamiento de imágenes en Adobe LightroomTratamiento de imágenes en Adobe Lightroom

Así actúa el zero-day de los JPEG 2000

El zero-day fue descubierto por investigadores de Cisco Talos, a la que después se le asignó el nombre TALOS-2016-0193/CVE-2016-8332. Según se ha publicado, el fallo de seguridad podría permitir una escritura remota que podría llevar a la corrupción de la librería y que podría llegar a permitir la ejecución de código arbitrario.

La vulnerabilidad podría explotarse engañando a la víctima para que abra un JPEG 2000 o un PDF corrupto, archivos maliciosos que podrían llegar hasta el ordenador objetivo como un adjunto en un correo electrónico. Incluso se podría subir el fichero a un servicio de alojamiento de archivos, como Dropbox o Google Drive, y después enviarla a la víctima a través de un enlace. Una vez descargada, serviría para crear una forma en la que los hackers podrían ejecutar código remotamente en el sistema infectado.

Concretamente, el zero-day está en la función de registro opj_j2k_read_mcc_record que se encuentra dentro de la ubicación src/lib/openjp2/j2k.c. Este archivo es elresponsable de analizar los registros MCC. El fallo fue causado por un error de análisis de los registros MCC en un archivo JPEG 2000, lo que resultó en un proceso erróneo de lectura y escritura en un área de memoria. Por las pruebas que se han realizado la versión 2.1.1 de OpenJPEG es vulnerable al zero-day, aunque en el momento de escribir el artículo la versión 2.1.2 ya ha parcheado el fallo. Puedes consultar más información sobre este zero-day y ver su código en este enlace.