Detectaron vulnerabilidades en Linux que pueden ser explotadas a través de Bluetooth

diciembre 15, 2022 0 Comments

vulnerabilidad

Si se explotan, estas fallas pueden permitir a los atacantes obtener acceso no autorizado a información confidencial o, en general, causar problemas

Hace poco se dio a conocer la noticia de que se identificaron dos vulnerabilidades en el kernel de Linux (ya catalogada bajo CVE-2022-42896), que potencialmente se puede usar para organizar la ejecución remota de código a nivel del kernel mediante el envío de un paquete L2CAP especialmente diseñado a través de Bluetooth.

Se menciona que la primera vulnerabilidad (CVE-2022-42896) se produce al acceder a un área de memoria ya liberada (use-after-free) en la implementación de las funciones l2cap_connect y l2cap_le_connect_req.

El fallo se aprovecha después de crear un canal a través de la llamada de devolución de llamada new_connection, el cual no se bloquea la configuración para ello, pero se configura un temporizador (__set_chan_timer), después de un tiempo de espera, llamando a la función l2cap_chan_timeout y limpiando el canal sin verificar la terminació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 podía ocurrir con tanto retraso, pero resultó que debido a otro error en el controlador SMP, fue posible llamar instantáneamente al temporizador y alcanzar la condición de carrera.

Un problema en l2cap_le_connect_req puede provocar una fuga de memoria del kernel, y en l2cap_connect puede sobrescribir el contenido de la memoria y ejecutar su código. La primera variante del ataque se puede llevar a cabo usando Bluetooth LE 4.0 (desde 2009), la segunda usando Bluetooth BR/EDR 5.2 (desde 2020).

Existen vulnerabilidades de uso posterior a la liberación en las funciones l2cap_connect y l2cap_le_connect_req del kernel de Linux net/bluetooth/l2cap_core.c que pueden permitir la ejecución de código y la pérdida de memoria del kernel (respectivamente) de forma remota a través de Bluetooth. Un atacante remoto podría ejecutar código que filtra la memoria del kernel a través de Bluetooth si se encuentra cerca de la víctima. Recomendamos actualizar la confirmación pasada https://bit.ly/3FtF3Y9 https://bit.ly/3FWeTP5

La segunda vulnerabilidad que fue detectada (ya catalogada bajo CVE-2022-42895) está provocada por una fuga de memoria residual en la función l2cap_parse_conf_req, que se puede utilizar para obtener información de forma remota sobre punteros a estructuras del kernel mediante el envío de solicitudes de configuración especialmente diseñadas.

Sobre esta vulnerabilidad se menciona que en la función l2cap_parse_conf_req, se usó la estructura l2cap_conf_efs, para la cual la memoria asignada no fue inicializada previamente, y mediante manipulaciones con el indicador FLAG_EFS_ENABLE, fue posible lograr la inclusión de datos antiguos de la pila en el paquete.

el indicador de canal FLAG_EFS_ENABLE en lugar de la variable remote_efs para decidir si la estructura l2cap_conf_efs efs debe usarse o no y es posible configurar el indicador FLAG_EFS_ENABLE sin enviar realmente datos de configuración EFS y, en este caso, la estructura efs l2cap_conf_efs no inicializada se enviará de vuelta al cliente remoto, por lo que se filtrará información sobre el contenido de la memoria del kernel, incluidos los punteros del kernel.

El problema solo ocurre en sistemas donde el núcleo 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 establecer el parámetro HCI_HS_ENABLED a través de la interfaz de administración en verdadero (no se usa de manera predeterminada).

Sobre estos dos fallos descubiertos ya se dieron a conocer los prototipos de explotación que se ejecutan en Ubuntu 22.04 para demostrar la posibilidad de un ataque remoto.

Para llevar a cabo el 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 un sniffing o, en algunos dispositivos, calcularse en función de la dirección MAC de Wi-Fi.

Finalmente cabe mencionar que se identificó otro problema similar (CVE-2022-42895) en el controlador L2CAP que puede filtrar el contenido de la memoria del kernel en los paquetes de información de configuración. La primera vulnerabilidad se ha manifestado desde agosto de 2014 (kernel 3.16), y la segunda desde octubre de 2011 (kernel 3.0).

Para los interesados en realizar un seguimiento de la corrección en las distribuciones, lo pueden hacer en las siguientes páginas: DebianUbuntuGentooRHELSUSEFedoraArch .


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.