Graphviz es un software gratuito de visualización de grafos, de código abierto y que se distribuye bajo licencia Common Public License v.1.0. El programa permite realizar una descripción de grafos en formato de texto (lenguaje DOT) y obtener diagramas en múltiples formatos distintos. Desde la página web de Graphviz se pueden descargar los paquetes para Windows, Mac, FreeBSD, Solaris y para distintas distribuciones de Linux.
La vulnerabilidad está causada por una falta de comprobación de límites del array "Gstack" en la función "push_subg" de "lib/graph/parser.c". Esto podría ser aprovechado para desbordar el array causando una corrupción de memoria que podría ser aprovechada para ejecutar código arbitrario.
A continuación se puede ver la porción de código vulnerable, perteneciente a la versión 2.20.2 de Graphviz:
static void push_subg(Agraph_t *g) {
G = Gstack[GSP++] = g;
}
Y la función corregida, perteneciente a la última versión (v.2.20.3):
static void push_subg(Agraph_t *g) {
if (GSP >= GSTACK_SIZE) {
agerr (AGERR, "Gstack overflow in graph parser\n"); exit(1);
}
G = Gstack[GSP++] = g;
}
Si bien es cierto que la vulnerabilidad era evitable, y que la modificación requerida parece trivial, cabe reseñar la eficacia del grupo de desarrolladores del proyecto, ya que pasó tan solo un día desde que fueron informados de la vulnerabilidad hasta que pusieron a disposición de sus usuarios una versión actualizada y no vulnerable.
Se recomienda actualizar a la versión 2.20.3 de Graphviz, disponible para las distintas plataformas desde:
http://www.graphviz.org/Download..php
Pablo Molina
pmolina@hispasec.com
pmolina@hispasec.com
Más información:
Roee Hay: Graphviz Buffer Overflow Code Execution
http://roeehay.blogspot.com/2008/10/graphviz-buffer-overflow-code-execution.html
0 comentarios:
Publicar un comentario en la entrada