Vulnerabilidades en el kernel de Linux explotadas remotamente vía Bluetooth

Se ha identificado una vulnerabilidad (CVE-2022-42896) en el kernel de Linux, que potencialmente puede usarse para organizar la ejecución remota de código a nivel del kernel enviando un paquete L2CAP especialmente diseñado a través de Bluetooth. Además, se ha identificado otro problema similar (CVE-2022-42895) en el controlador L2CAP, que puede provocar una pérdida de contenido de la memoria del kernel en paquetes con información de configuración. La primera vulnerabilidad aparece desde agosto de 2014 (kernel 3.16) y la segunda desde octubre de 2011 (kernel 3.0). Las vulnerabilidades se solucionaron en las versiones del kernel de Linux 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 y 5.15.78. Puede realizar un seguimiento de las correcciones en las distribuciones en las siguientes páginas: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Para demostrar la posibilidad de realizar un ataque remoto, se han publicado prototipos de exploits que funcionan en Ubuntu 22.04. Para llevar a cabo un ataque, el atacante debe estar dentro del alcance de Bluetooth; no se requiere emparejamiento previo, pero Bluetooth debe estar activo en la computadora. Para un ataque, basta con conocer la dirección MAC del dispositivo de la víctima, que puede determinarse mediante rastreo o, en algunos dispositivos, calcularse en función de la dirección MAC de Wi-Fi.

La primera vulnerabilidad (CVE-2022-42896) se debe al acceso a un área de memoria ya liberada (uso después de la liberación) en la implementación de las funciones l2cap_connect y l2cap_le_connect_req; después de crear un canal a través de la devolución de llamada new_connection, no se estableció un bloqueo. para ello, pero se configuró un temporizador (__set_chan_timer ), al expirar el tiempo de espera, se llamó a la función l2cap_chan_timeout y se borró el canal sin verificar la finalización del trabajo con el canal en las funciones l2cap_le_connect*.

El tiempo de espera predeterminado es de 40 segundos y se asumió que una condición de carrera no podría ocurrir con tal retraso, pero resultó que debido a otro error en el controlador SMP, fue posible lograr una llamada instantánea al temporizador y lograr un condición de carrera. Un problema en l2cap_le_connect_req puede provocar una pérdida de memoria del kernel, y en l2cap_connect puede provocar la sobrescritura del contenido de la memoria y la ejecución de su código. El primer tipo de ataque se puede realizar mediante Bluetooth LE 4.0 (desde 2009), el segundo mediante Bluetooth BR/EDR 5.2 (desde 2020).

La segunda vulnerabilidad (CVE-2022-42895) es causada por una pérdida de memoria residual en la función l2cap_parse_conf_req, que puede usarse para obtener de forma remota información sobre punteros a estructuras del kernel mediante el envío de solicitudes de configuración especialmente diseñadas. La función l2cap_parse_conf_req utilizó la estructura l2cap_conf_efs, para la cual la memoria asignada no estaba preinicializada y manipulando el indicador FLAG_EFS_ENABLE era posible incluir datos antiguos de la pila en el paquete. El problema sólo aparece en sistemas donde el kernel está construido con la opción CONFIG_BT_HS (deshabilitada de forma predeterminada, pero habilitada en algunas distribuciones, como Ubuntu). Un ataque exitoso también requiere configurar el parámetro HCI_HS_ENABLED a través de la interfaz de administración en verdadero (no se usa de manera predeterminada).

Fuente: opennet.ru

Añadir un comentario