Dirty Pipe, una de las vulnerabilidades más grave en años en Linux

Hace poco se dio a conocer la noticia en la red el descubrimiento de una nueva vulnerabilidad en Linux que está catalogada como de «Alta gravedad» que afecta a todos los kernels desde la versión 5.8, así como a los derivados, incluido Android.

Conocido como Dirty Pipe, permite sobrescribir datos en archivos de solo lectura y puede conducir a una escalada de privilegios mediante la inyección de código en los procesos «root».

Aunque ya se ha parcheado en el kernel principal de Linux, el error podría convertirse en un arma en forma de un exploit de escalada de privilegios en todos los dispositivos que ejecutan la versión 5.8 o posterior del kernel de Linux.

También significa que un montón de teléfonos inteligentes Android recién lanzados, como el Samsung Galaxy S22 y el Google Pixel 6, también son vulnerables, hasta que cada dispositivo reciba el parche de kernel apropiado del OEM respectivo.

Sobre Dirty Pipe

La vulnerabilidad fue revelada por el investigador de seguridad Max Kellerman y catalogada como (CVE-2022-0847), tardó unos meses en encontrar un exploit de prueba de concepto.

La vulnerabilidad permite que un usuario sin privilegios inyecte y sobrescriba datos en archivos de solo lectura, incluidos los procesos SUID que se ejecutan como root. El apodo coloquial parece ser un juego con el infame error Dirty Cow y un mecanismo de Linux llamado canalización para el paso de mensajes entre procesos, ya que este último se usa durante la rutina de explotación.

Todo comenzó hace un año con un ticket de soporte relacionado con archivos corruptos. Un cliente se quejó de que no se podían descomprimir los registros de acceso descargados. Y, de hecho, había un archivo de registro corrupto en uno de los servidores de registro; se podía descomprimir, pero gzip informaba un error de CRC. No podía explicar por qué estaba corrupto, pero asumí que el proceso de división nocturna se había bloqueado y producido un archivo corrupto. Corregí manualmente el CRC del archivo, cerré el ticket y pronto me olvidé del problema.

Después de meses de análisis, el investigador finalmente descubrió que los archivos corruptos del cliente eran el resultado de un error en el kernel de Linux. Encontró una manera de explotar Dirty Pipe para permitir que cualquier persona con una cuenta, incluidas las cuentas «nobody» menos privilegiadas, agregue una clave SSH a la cuenta del usuario root.

Para activar la vulnerabilidad, Kellerman compartió su prueba de concepto, el atacante debe tener permisos de lectura. Además, el desplazamiento no debe estar en un límite de página, la escritura no puede cruzar un límite de página y el archivo no se puede cambiar de tamaño.

Para aprovechar esta vulnerabilidad, debe: crear una tubería, llenar la tubería con datos arbitrarios (para establecer el indicador PIPE_BUF_FLAG_CAN_MERGE en todas las entradas del anillo), vaciar la tubería (dejando la bandera establecida en todas las instancias de estructura pipe_buffer en la estructura del anillo pipe_inode_info), combine los datos del archivo de destino (abierto con O_RDONLY) en la tubería justo antes del desplazamiento de destino y escriba datos arbitrarios en la tubería.

Dirty Pipe también afecta a cualquier versión de Android basada en una de las versiones vulnerables del kernel de Linux. Dado que Android está tan fragmentado, los modelos de dispositivos afectados no se pueden rastrear de manera uniforme.

Según Kellermann, Google fusionó su corrección de errores con el kernel de Android el mes pasado, justo después de que se solucionó con el lanzamiento de las versiones 5.16.11, 5.15.25 y 5.10.102 del kernel de Linux.

Habiendo dicho eso, probablemente tendremos que esperar un poco antes de que los OEM comiencen a implementar actualizaciones de Android que contengan la solución. El Pixel 6 de Google, por ejemplo, sigue siendo vulnerable, pero los usuarios avanzados pueden mitigar la falla instalando un kernel personalizado parcheado del mercado de accesorios como una opción alternativa.

Los desarrolladores del kernel de Linux publicaron correcciones (5.16.11, 5.15.25, 5.10.102) el 23 de febrero, mientras que Google colocó el parche en el kernel de Android el 24 de febrero. Kellermann y otros expertos compararon la vulnerabilidad con CVE-2016-5195 “Dirty Cow” y dijeron que es aún más fácil de explotar.

Finalmente si estás interesado en conocer más al respecto, puedes consultar los detalles en el siguiente enlace.


Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.