¿Qué vulnerabilidades del kernel de Linux permiten instalar un rootkit de nivel de kernel?

14

Mi pregunta está relacionada con las vulnerabilidades que permiten instalar un rootkit de nivel de kernel de Linux (por ejemplo, para modificar el flujo de ejecución dentro del kernel; para ataques orientados a la devolución; o para modificar algunas estructuras para ocultar ciertos procesos).

En el siguiente sitio, encontré una buena clasificación de las vulnerabilidades del kernel de Linux públicamente conocidas hasta ahora:

enlace

Me sorprendió un poco cuando noté que existían 0 vulnerabilidades (conocidas públicamente) para la ejecución del código en 2011.

¿Significa que el resto de vulnerabilidades en esa tabla (por ejemplo, DoS, corrupción de memoria, desbordamiento) no se pueden explotar para ejecutar un rootkit a nivel de kernel?

Tengo un sistema integrado Android basado en ARM. El kernel de Linux tiene esta funcionalidad deshabilitada: "módulos de kernel dinámico", "/ dev / kmem", "/ dev / mem /", "ksplice". Además, el sistema cuenta con un proceso de BOOT seguro (por ejemplo, el kernel de Linux no puede acceder a ningún archivo de arranque y esto se aplica mediante hardware). Por lo tanto, la única forma que conozco de instalar un rootkit de nivel de kernel (aparte de los ataques de hardware) es explotar un error en el kernel *.

* Si no está de acuerdo con esto, haga un comentario aquí o en esta publicación: enlace

    
pregunta Daniel Sangorrin 05.12.2011 - 04:17
fuente

3 respuestas

9

Las vulnerabilidades en el núcleo mismo, si bien son serias, son solo una parte de la historia para los usuarios diarios.

El problema para las instalaciones "normales", "listas para usar" son de hecho vulnerabilidades en procesos que se ejecutan como root. Ya que estos son de confianza, pueden pedirle al kernel que haga lo que quiera, incluida la inserción de módulos del kernel o el acceso a /dev/kmem .

Es importante comprender que, en lo que respecta a la CPU, los procesos raíz se ejecutan como procesos sin privilegios en lo que respecta a la CPU. En x86 llamamos a este anillo 3; en los procesadores ARM, los modos de CPU son Usuario, FIQ, IRQ, Supervisor, Abort y Undef, donde User es el nivel no privilegiado utilizado para los procesos (todos los demás modos son privilegiados). La ejecución de procesos en modo User no puede modificar otros procesos o el kernel directamente; Deben preguntar primero al núcleo. Sin embargo, como son de confianza, el kernel no "dice no". Por lo tanto, para una configuración normal, es suficiente comprometer un proceso que se ejecuta como root.

Ahora, en su configuración, las cosas son un poco diferentes: ha deshabilitado la carga del módulo y el acceso a /dev/kmem . Para hacer un daño grave, debe hacer que su rootkit se ejecute en modo supervisor (timbre 0 / cualquier modo que no sea User ) o poder manipular /dev/kmem . Ya que tampoco puede modificar las entradas de inicio, esto deja al nivel de hardware como el principal vector de amenaza (o ksplice. Usted menciona que en SO; definitivamente es un riesgo porque permite parchar un kernel en ejecución con código. kexec es otra problema potencial porque reemplaza el kernel en su lugar).

En teoría, lo que tienes es significativamente más seguro.

  

¿Significa que el resto de vulnerabilidades en esa tabla (por ejemplo, DoS, corrupción de memoria, desbordamiento) no se pueden explotar para ejecutar un rootkit a nivel de kernel?

Bueno, para lidiar con el último bit primero, no necesita poder explotar una vulnerabilidad en un sistema "normal" porque solo puede insertar un módulo de kernel. Sin embargo, en tu caso esta es prácticamente tu única vía; necesitaría encontrar un error en algún lugar del sistema que le permita cargar código o pueda ser explotado para controlar el kernel.

Ahora, en su observación de cero errores, como dice, hay cero errores conocidos en ese período de tiempo. Eso no significa que no haya errores. Además, debemos advertir esto con:

  • ¿Es este el núcleo de su distribución? ¿Tiene parches que no están presentes en el kernel de vainilla? Estos parches también agregan riesgo.
  • ¿Su kernel requiere un código adicional de terceros (controladores de tarjetas gráficas, controladores de virtualización)? Si es así, estos también agregan riesgo.

Ahora, sobre esos CVE: sí, cuando dicen que no "ejecución de código" eso es lo que significa. Las vulnerabilidades presentes pueden dañar la memoria y realizar DoS, pero en realidad no pueden ejecutar código malicioso. Eche un vistazo a una de las vulnerabilidades de ejecución de código :

  

... permite que los atacantes remotos causen una denegación de servicio (pánico) o posiblemente ejecuten código arbitrario ...

Así que sí, tal como está, no hay vulnerabilidades conocidas de ejecución de código en el núcleo en el momento de escribir Actualizar a la luz de esta respuesta Estoy cruzando ese bit: no está claro desde el sitio qué entrada representa el núcleo de vainilla y cuáles representan los núcleos suministrados por el proveedor, cual es la diferencia Permítanme advertir que con en cualquier definición del kernel que fue no hubo vulnerabilidades, que es lo que estaba tratando de lograr antes con la charla de parches suministrados por el proveedor / código de terceros.

    
respondido por el user2213 05.12.2011 - 10:49
fuente
3

Los datos de CVE, publicados por NVD (cvedetails.com publica datos publicados por la Base de datos de vulnerabilidad nacional, nvd.nist.gov.), tienen algunas inconsistencias, especialmente la información del producto y la versión no son confiables.

Por ejemplo, hay varias definiciones de productos para el kernel de Linux. Consulte enlace para obtener una lista de productos relacionados. (Y puede haber aún más vulnerabilidades definidas con algún otro proveedor o nombre del producto)

Por lo tanto, asegúrese de que también compruebe las vulnerabilidades definidas para otros productos relacionados. Al menos debe consultar enlace (existen algunas vulnerabilidades relacionadas con vulnerabilidades relacionado con este producto)

Es difícil estar seguro de que no le falta una vulnerabilidad. cvedetails.com tiene características de coincidencia de productos / proveedores que permiten a los usuarios hacer coincidir productos relacionados, pero para ser honestos, no son populares.

(P.S: Soy el propietario de cvedetails.com)

    
respondido por el Serkan Özkan 05.12.2011 - 16:02
fuente
-1

Descargue y ejecute Sugerencia de explotación de Linux :

$ perl ./Linux_Exploit_Suggester.pl -k 3.0.0

Kernel local: 3.0.0

Possible Exploits:
[+] semtex
   CVE-2013-2094
   Source: www.exploit-db.com/download/25444/‎
[+] memodipper
   CVE-2012-0056
   Source: http://www.exploit-db.com/exploits/18411/
    
respondido por el fel1x 11.12.2014 - 19:27
fuente

Lea otras preguntas en las etiquetas