jueves, 30 de diciembre de 2004

Vulnerabilidades de desbordamiento de enteros en LibTIFF

Se han descubierto dos vulnerabilidades en la librería de procesado de
imágenes LibTIFF que pueden causar el compromiso del sistema tras
tratar la información de una imagen tiff maliciosamente creada.

La librería LibTIFF usada para leer y escribir imágenes en formato tiff
se utiliza habitualmente en sistemas UNIX. Múltiples programas tanto de
escritorio como en servidores web hacen uso de ella para permitir el
tratamiento de este tipo de imágenes, de ahí el riesgo que generan
estas vulnerabilidades.

La primera se encuentra en la función TIFFFetchStripThing() encargada
del análisis de las imágenes tiff, cuando esta acepta un entero
concreto excesivamente grande se consigue copiar un búfer enviado por
el usuario a la memoria heap, teniendo como fin causar un
desbordamiento en el heap y el posterior control.

La segunda se debe a la falta de validación de los parámetros incluidos
en la cabecera la imagen que adecuadamente tratados provocan que no se
reserve el espacio de memoria necesario y posteriormente se sobrescriba
esta memoria con el código especialmente creado por el atacante.

Ambas vulnerabilidades tienen como resultado final la ejecución de
código con los permisos que tuviera el usuario con el que corre la
aplicación, por tanto desde Hispasec recomendamos actualizar a la
versión mas actual (3.7.1) y parchearla con el siguiente código:

>>>
--- tif_dirread.c.bak 2004-12-19 21:04:00.000000000 +0300
+++ tif_dirread.c 2004-12-19 21:04:03.000000000 +0300
@@ -71,7 +71,7 @@
/*
* XXX: Check for integer overflow.
*/
- if (elem_size && bytes / elem_size == nmemb)
+ if (nmemb && elem_size && bytes / elem_size == nmemb)
cp = (char*)_TIFFmalloc(bytes);

if (cp == NULL)
<<<

las fuentes tif_dirread.c y tif_fax3.c.

A su vez habrá que recompilar todos los programas que hicieran
uso de esta librería, mientras tanto no se deberían aceptar
imágenes en este formato de fuentes no confiables.


Francisco Santos
fsantos@hispasec.com


Más información:

Última versión de LibTIFF
ftp://ftp.remotesensing.org/pub/libtiff/tiff-3.7.1.tar.gz

libtiff STRIPOFFSETS Integer Overflow Vulnerability
http://www.idefense.com/application/poi/display?id=173

libtiff Directory Entry Count Integer Overflow Vulnerability
http://www.idefense.com/application/poi/display?id=174