Ingenioso ataque explota kernel de Linux completamente actualizado
Código [Seleccionar]
Una falla de 'puntero NULO' plaga incluso las versiones super max
Un ataque recientemente publicado que explota nuevas versiones del kernel de Linux está recibiendo mucha atención porque funciona incluso con las mejoras de seguridad en funcionamiento y la falla es virtualmente imposible de detectar en revisiones de código fuente.
El código de explotación fue liberado el viernes por Brad Spengler de grsecurity, un desarrollador de aplicaciones que mejoran las seguridad del SO de fuente abierto. Si bien está dirigido a versiones de Linux que aun deben ser adoptadas por la mayoría de los vendedores, el fallo ha capturado la atención de los investigadores de seguridad, quienes dice que expone una debilidad pasada por alto.
Los desarrolladores de Linux "intentaron protegerse de eso y lo que muestra esta explotación es que incluso con todas las protecciones puestas al super máximo, aún es posible para un atacante arreglárselas para hallar caminos para rodear al sistema," dijo Bas Alberts, investidador experto de Immunity. "El punto interesante aqui es la cosa concreta que lo hace explotable, la clase completa de vulnerabilidades, la cual es algo muy serio."
La vulnerabilidad está localizada en varias partes de Linux, incluyendo una que implementa las funciones conocidas como net/tun. Aunque el código verifica correctamente para asegurarse que la variable tun no apunte a NULL, el compilador elimina las lineas responsables para esa inspección durante las rutinas de optimización. El resultado: Cuando la variable apunta a cero, el kernel intenta acceder a partes prohibidas de la memoria, llevando a comprometer al equipo que está corriendo el SO.
La falla de "des-referenciamiento de puntero NULL(nulo)" ha sido confirmada en versiones 2.6.30 y 2.6.30.1 del kernel Linux, el cual dice Spengler ha sido incorporado en la edición de un sólo proveedor: la version 5 de Red Hat Enterprise Linux que es usado en ambientes de prueba. La explotación funciona sólo cuando las extensiones de seguridad conocidas como SELinux, o Seguridad Mejorada Linux, están habilitadas. En cambio, también funciona cuando cuando el programa de audio conocido como PuseAudio está instalado.
Un escenario de explotación muy probablemente involucraría el ataque usando para escalar los privilegios de usuario, combinado con la explotación de otro componente - digamos, una aplicación PHP. Por sí mismo, la explotación de Spengler no funciona remotamente.
Con todos esos obstáculos por sortear, la explotación necesita un buen esfuerzo para ser exitosa. Sin embargo, a Spengler le tomó menos de cuatro horas escribir una explotación completamente armada que funciona en versiones de 32 y 64 bits de Linux, incluyendo la versión ofrecida por Red Hat. Le dijo a The Register que publicó la explotación después de dejar en claro que Linus Torval y otros desarrolladores responsables del kernel de Linux no consideraron a la falla como un riesgo de seguridad.
"En el momento que escribí la explotación, había por allí un parche, pero no parecía que fuera a formar parte de las versiones estables," dijo. "Fue más que nada un oops trivial en lugar de algo que le diera a uno la ejecución arbitraria de código en el kernel."
Los comentarios que acompañan la explotación de Spengler continuan hasta el detalle de declaraciones de Torvalds y otros desarrolladores que dijeron que hicieron en grupos de discución por correo sobre la falla.
"No me parece para nada un problema del kernel," es citado como mencionado por Torval en un mensaje. "Él está corriendo un programa de setuid que permite al usuario especificar sus propios módulos. ¿Y después se sorprenden uds, que consiga hacerse root local?"
En ese frente, al menos un investigador de seguridad estuvo de acuerdo con el equipo de Linux.
"Setuid es un agujero de seguridad crónico bien conocido," escribió en un correo Rob Graham, CEO de Errata Security. "Torval está en lo correcto, no es un problema de kernel, sino una 'falla' de diseño que es heredada de Unix. No hay una solución sencilla al problema, por lo cual, va a está con nosotros por varios años."
El punto máas grande, dice Spengler, es que los desarrolladores de Linux están poniendo a los usuarios en riesgo al dejar de revelar claramente cuando son descubiertas vulnerabilidades de seguridad.
"¿Porqué es que cuandoquiera que hay una vulnerabilidad explotable de Linux, se la describe como una denegación de servicio?" dijo. "Eso hace que los proveedores piensen que la seguridad está mejor de lo que verdaderamente es."
Dondequiera que la falla suceda, el daño potencial es muy real.
"No va a prender el mundo en llamas, pero es una falla muy sutil y una explotación sólida," dijo Ed Skoudis, fundador y consultor principal de seguridad de InGuardians. "La verdadera historia aquí es que sutil que es, y que el compilador por sí mismo la introdujo durante la optimización del código."
Hasta aquí, Torvald y compañía aun tienen que responder por la divulgación. Nos aseguraremos de actualizar esta historia si lo hacen.
Autor: Dan Gooding
Fuente: The Register UK