Vulnerabilidades en el núcleo de Linux, explotadas de forma remota a través de Bluetooth

Se ha identificado una vulnerabilidad en el núcleo de Linux (CVE-2022-42896) que puede ser utilizada potencialmente para realizar ejecución remota de código en el nivel del núcleo mediante el envío de un paquete L2CAP especialmente diseñado a través de Bluetooth. Además, se ha detectado otro problema similar (CVE-2022-42895) en el manejador de L2CAP, que puede llevar a la fuga de contenido de la memoria del núcleo en paquetes con información de configuración. La primera vulnerabilidad se manifiesta desde agosto de 2014 (núcleo 3.16) y la segunda desde octubre de 2011 (núcleo 3.0). Las vulnerabilidades han sido solucionadas en las versiones del núcleo 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. Se puede hacer un seguimiento de las correcciones en las distribuciones en las siguientes páginas: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Se han publicado prototipos de exploits que demuestran la posibilidad de ataques remotos, funcionando en Ubuntu 22.04. Para llevar a cabo el ataque, el atacante debe estar dentro del alcance de Bluetooth; no se requiere emparejamiento previo, pero es necesario que el Bluetooth esté activado en la computadora. Para el ataque, basta con conocer la dirección MAC del dispositivo víctima, que puede ser obtenida a través de sniffing o, en algunos dispositivos, puede ser calculada a partir de la dirección MAC de Wi-Fi.

La primera vulnerabilidad (CVE-2022-42896) es causada por el acceso a una área de memoria que ya ha sido liberada (use-after-free) en la implementación de las funciones l2cap_connect y l2cap_le_connect_req; después de crear el canal a través de la llamada de retorno new_connection, no se establecía un bloqueo, pero se configuraba un temporizador (__set_chan_timer), que, al expirar, llama a la función l2cap_chan_timeout y limpia el canal sin verificar la finalización del trabajo con el canal en las funciones l2cap_le_connect*.

Por defecto, el tiempo de espera es de 40 segundos y se asumía que en ese retraso no podría surgir una condición de carrera, pero se ha demostrado que, debido a otro error en el manejador SMP, es posible provocar la llamada instantánea del temporizador y alcanzar una condición de carrera. El problema en l2cap_le_connect_req puede llevar a la fuga de memoria del núcleo, mientras que en l2cap_connect puede resultar en la sobrescritura del contenido de la memoria y la ejecución de su propio código. La primera variante del ataque se puede realizar utilizando Bluetooth LE 4.0 (desde 2009), mientras que la segunda requiere el uso de Bluetooth BR/EDR 5.2 (desde 2020).

La segunda vulnerabilidad (CVE-2022-42895) se debe a la fuga de datos residuales de la memoria en la función l2cap_parse_conf_req, que puede ser utilizada para obtener remotamente información sobre los punteros a estructuras del kernel al enviar solicitudes de configuración especialmente diseñadas. En la función l2cap_parse_conf_req se utilizó la estructura l2cap_conf_efs, para la cual no se realizó la inicialización previa de la memoria asignada, y mediante manipulaciones con el flag FLAG_EFS_ENABLE se podía lograr la inclusión en el paquete de datos antiguos del stack. El problema solo se manifiesta en sistemas donde el kernel está compilado con la opción CONFIG_BT_HS (desactivada por defecto, pero activada en algunas distribuciones, como Ubuntu). Para que el ataque tenga éxito también se requiere establecer el parámetro HCI_HS_ENABLED a true a través de la interfaz de control (por defecto no se utiliza).

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster