Una nueva explotación del kernel de Linux llamada Dirty Cred fue revelada en la conferencia de seguridad Black Hat.
La falla identificada como CVE-2022-0847 fue descubierta por Zhenpeng Lin, un estudiante de doctorado y su equipo, quienes intentaron explotar el kernel de Linux como la infame vulnerabilidad Dirty Pipe pero con diferentes enfoques.
DirtyCred es un concepto de explotación del kernel que intercambia las credenciales del kernel sin privilegios con las privilegiadas para aumentar los privilegios. En lugar de sobrescribir los campos de datos críticos en el montón del kernel, DirtyCred abusa del mecanismo de reutilización de la memoria del montón para obtener privilegios. Sobrescribe cualquier archivo con permiso de lectura que afecte a la versión 5.8 o superior del kernel.
El equipo de Lin descubrió una ruta para intercambiar las credenciales del Kernel de Linux en sistemas vulnerables a una vulnerabilidad previamente informada (CVE-2021-4154) y una nueva (CVE-2022-2588), y esperan agregar más CVE compatibles en el futuro. Una POC (prueba de concepto) pública está disponible en GitHub y ofrece una defensa eficaz contra el ataque.
Los investigadores describieron su escenario de ataque como un método genérico que puede aplicarse a contenedores y Android. El equipo describe el enfoque como simple y poderoso, ya que no necesita lidiar con KASLR y CFI.
TRABAJO DE DIRTY CRED
Lin publicó una demostración en Twitter que demuestra cómo se puede usar el enfoque para elevar a un usuario con pocos privilegios en dos sistemas diferentes, como Centos 8 y Ubuntu, usando el mismo código de explotación.
DEFENSA CONTRA DIRTYCRED
Cabe señalar que el POC aún está en progreso, incluso si ya está funcionando en condiciones específicas, como una vulnerabilidad específica. CVE-2021-4154 ha sido parcheado en el kernel de Linux, pero los investigadores indican que “el exploit funciona en la mayoría de los kernels de Centos 8 superiores a Linux-4.18.0-305.el8 y la mayoría de los kernels de ubuntu 20 superiores a 5.4.0-87.98 y 5.11.0-37.41.”
Debido a que los objetos se aíslan según su tipo y no según sus privilegios, los investigadores recomiendan aislar las credenciales privilegiadas de las no privilegiadas utilizando la memoria virtual para evitar ataques entre cachés.