Pango es una librería de fuente abierta para dibujar texto con énfasis en la internacionalización. Es un proyecto muy asociado al toolkit GTK+, GNOME y usado en múltiples aplicaciones.
El error, descubierto por Dan Rosenberg, reside en la función 'pango_ft2_font_render_box_glyph' localizada en el archivo 'pango/pangoft2-render.c'.
El error se produce cuando libpango usa la librería FreeType2 como respaldo para ciertas operaciones con archivos de fuentes (tipografías).
En la función 'pango_ft2_font_render_box_glyph' se reserva memoria efectuando el cálculo para el tamaño necesario de manera errónea:
126 box->bitmap.buffer = g_malloc0 (box->bitmap.rows * box->bitmap.pitch);
Pero varias líneas más arriba podemos observar:
123 box->bitmap.rows = height;
124 box->bitmap.pitch = height;
Cuando realmente box->bitmap.pitch debería estar inicializado a al valor de 'width'. Esto altera las dimensiones correctas del bloque de memoria reservado y permite que se sobreescriba.
La vulnerabilidad ha recibido el CVE-2011-0020 y se ha publicado una nueva versión de Pango. Es de esperar que las diferentes distribuciones Linux publiquen actualizaciones en breve.
David García
dgarcia@hispasec.com
dgarcia@hispasec.com
Más información:
Heap corruption in font parsing with FreeType2 backend
https://bugzilla.gnome.org/show_bug.cgi?id=639882
Web del Proyecto Pango
http://www.pango.org/
No hay comentarios:
Publicar un comentario