miércoles, 4 de noviembre de 2009

Elevación de privilegios en el kernel Linux 2.6.x

Se ha descubierto un error en el kernel Linux 2.6.x que podría permitir a un atacante local provocar una denegación de servicio y potencialmente elevar privilegios. Las principales distribuciones están trabajando para solucionar el error cuanto antes.

El fallo ha sido calificado con el código CVE-2009-3547. Se trata de un error de condición de carrera que podría derivar en el control de un puntero nulo en las funciones "pipe_read_open", "pipe_write_open", y "pipe_rdwr_open" del archivo fs/pipe.c. Podría ser aprovechado por un atacante local para causar una denegación de servicio y potencialmente elevar privilegios a través de ciertas operaciones con "pipe", como por ejemplo abrir un "pipe" anónimo a través de /proc/pid/fd/. El fallo ha sido solucionado en 2.6.32-rc6, pero la última versión estable 2.6.31.5 del día 22 de octubre, contiene el error.

El problema fue encontrado en la función "pipe_rdwr_open", pero preventivamente se ha intentado solucionar en el resto de funciones que trabajan abriendo "pipes". Los primeros en solucionar el error han sido los responsables de Red Hat, que publicaron un parche el pasado día 3 de noviembre. Poco después se comprobaba que el error afectaba en realidad a todos los núcleos. Earl Chew hablaba ya del fallo en el repositorio GIT del kernel el 19 de octubre.

OpenSuSE y Novell SuSE ya han reconocido que el problema les afecta y que están trabajando en una solución. Otras distribuciones no se han pronunciado al respecto.

Aunque todavía no se ha hecho público, parece que programar un exploit para elevar privilegios puede resultar relativamente sencillo. Provocar una denegación de servicio resulta trivial.


Laboratorio Hispasec
laboratorio@hispasec.com


Más información:

fs: pipe.c null pointer dereference
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=ad3960243e55320d74195fb85c975e0a8cc4466c

No hay comentarios:

Publicar un comentario en la entrada