Bug en el Linux Kernel permite el acceso de root

Se ha descubierto un error de invalidación de caché de alta gravedad en el kernel de Linux, que podría permitir a un atacante obtener privilegios de root en el sistema de destino.

Este es el segundo defecto del kernel en Linux para debutar en la última semana; también se descubrió recientemente un problema de escalada de privilegios locales.

La falla (CVE-2018-17182), que existe en la gestión de memoria de Linux en las versiones del kernel 3.16 a 4.18.8, puede explotarse de muchas maneras diferentes, "incluso desde contextos de espacio aislado relativamente fuerte", según Jann Horn, un investigador de Google Project Zero.

El equipo de Linux resolvió el problema en el árbol kernel aguas arriba dentro de dos días después de que Horn informara responsablemente el 18 de septiembre, lo que Horn dijo que era "excepcionalmente rápido, en comparación con los tiempos de reparación de otros proveedores de software".

La mala noticia es que Debian estable y los lanzamientos de Ubuntu 16.04 y 18.04 aún no han corregido la vulnerabilidad, y los usuarios de Android siguen en riesgo.

"Android solo envía actualizaciones de seguridad una vez al mes", dijo Horn en una publicación de blog sobre el error esta semana. "Por lo tanto, cuando hay una solución crítica para la seguridad disponible en un kernel estable en sentido ascendente, aún pueden pasar semanas antes de que la solución esté realmente disponible para los usuarios, especialmente si el impacto de la seguridad no se anuncia públicamente"

Horn explicó que el error proviene de un problema de desbordamiento.

Cuando el kernel de Linux busca el área de memoria virtual (VMA) para manejar un error de página, hay una ruta lenta que implica rastrear a través de todos los VMA en el código para encontrar la resolución correcta del problema. Debido a que esto es ineficiente y viene con un impacto en el rendimiento, los codificadores crearon una alternativa de vía rápida que se puede usar si el VMA se usó recientemente.

Este enfoque de almacenamiento en caché, sin embargo, viene con sus propios problemas.

"Cuando se libera un VMA, los cachés de VMA de todos los subprocesos deben invalidarse; de ​​lo contrario, la siguiente búsqueda de VMA seguiría un puntero colgante. Sin embargo, dado que un proceso puede tener muchos hilos, simplemente iterar a través de los cachés VMA de todos los hilos sería un problema de rendimiento ", explicó Horn.

La solución para esto consiste en etiquetar los hilos con números de secuencia para distinguir los distintos caminos de vía rápida entre sí. Pero los números de secuencia tienen solo 32 bits de ancho, lo que significa que es posible que se desborden. Como una optimización en la versión 3.16, la lógica de manejo de desbordamiento se agregó a la mezcla, que introdujo un defecto que conduce a una vulnerabilidad de uso después de la liberación (UAF), también conocida como CVE-2018-17182.

UAF se refiere específicamente al intento de acceder a la memoria después de haber sido liberada; La codificación UAF incorrecta (por ejemplo, permitir que un programa continúe usando un puntero después de que se haya liberado) puede causar la falla de un programa. Mientras tanto, las vulnerabilidades de UAF son una clase de error de corrupción de memoria que surge de la confusión sobre qué parte del programa es responsable de liberar la memoria. En el caso de esta vulnerabilidad, esto abre la puerta a exploits que permiten el acceso a la raíz y la ejecución de código arbitrario.

Los usuarios pueden hacer que CVE-2018-17182 no sea un problema al actualizar a una versión estable anterior, ya sea 4.18.9, 4.14.71, 4.9.128, 4.4.157 o 3.16.58.

"El error se solucionó cambiando los números de secuencia [VMA] a 64 bits, lo que hace imposible el desbordamiento y eliminando la lógica de manejo de desbordamiento", dijo Horn.

Para sistemas sin parches, hay una gran cantidad de formas de usar la vulnerabilidad para atacar un objetivo, señaló Horn. Sin embargo, la configuración del kernel puede tener un gran impacto, y en este caso, la explotación exitosa se convierte en algo más trivial en entornos que usan kernels de Linux que no han sido configurados para aumentar la seguridad, según Horn.

Por ejemplo, un atacante que intente explotar un error del kernel puede beneficiarse de la capacidad de volver a intentar un ataque varias veces sin activar el reinicio del sistema.

"Un atacante con la capacidad de leer el registro de fallos producido por el primer intento podría incluso utilizar esa información para un segundo intento más sofisticado", dijo el investigador.

Horn construyó una prueba de concepto (PoC) para atacar específicamente a Ubuntu 18.04 (con kernel linux-image-4.15.0-34-generic en la versión 4.15.0-34.37) demostrando esto - le permite a alguien con un acceso lo suficientemente largo - alrededor de una hora - para obtener privilegios de root en el sistema de destino.

"Fundamentalmente, este error puede ser desencadenado por cualquier proceso que pueda ejecutarse durante un tiempo suficientemente largo para desbordar el contador de referencia (aproximadamente una hora si MAP_FIXED es utilizable) y tiene la capacidad de usar mmap () / munmap () (para administrar la memoria) mappings) y clone() "explicó.
Fecha actualización el 2021-09-30. Fecha publicación el 2018-09-30. Categoría: linux Autor: Oscar olg Mapa del sitio Fuente: threatpost
Linux Kernel