Vulnerabilidades no núcleo de Linux explotadas remotamente mediante Bluetooth

Identificouse unha vulnerabilidade (CVE-2022-42896) no núcleo de Linux, que potencialmente pode usarse para organizar a execución remota de código a nivel do núcleo mediante o envío dun paquete L2CAP especialmente deseñado a través de Bluetooth. Ademais, identificouse outro problema semellante (CVE-2022-42895) no manejador L2CAP, o que pode provocar a fuga do contido da memoria do núcleo en paquetes con información de configuración. A primeira vulnerabilidade aparece desde agosto de 2014 (núcleo 3.16) e a segunda desde outubro de 2011 (núcleo 3.0). As vulnerabilidades abordáronse nas versións do 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 e 5.15.78. Podes rastrexar as correccións nas distribucións nas seguintes páxinas: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Para demostrar a posibilidade de realizar un ataque remoto, publicáronse prototipos de exploits que funcionan en Ubuntu 22.04. Para levar a cabo un ataque, o atacante debe estar dentro do alcance de Bluetooth; non é necesario o emparejamento previo, pero o Bluetooth debe estar activo no ordenador. Para un ataque, abonda con coñecer o enderezo MAC do dispositivo da vítima, que se pode determinar mediante o sniffing ou, nalgúns dispositivos, calculado en función do enderezo MAC da Wi-Fi.

A primeira vulnerabilidade (CVE-2022-42896) prodúcese ao acceder a unha área de memoria xa liberada (use-after-free) na implementación das funcións l2cap_connect e l2cap_le_connect_req; despois de crear unha canle a través da devolución de chamada new_connection, non se estableceu un bloqueo. para iso, pero estableceuse un temporizador (__set_chan_timer ), ao expirar o tempo de espera, chamando á función l2cap_chan_timeout e borrando a canle sen comprobar a conclusión do traballo coa canle nas funcións l2cap_le_connect*.

O tempo de espera predeterminado é de 40 segundos e supoñíase que non se podía producir unha condición de carreira con tal atraso, pero resultou que debido a outro erro no manejador SMP, era posible conseguir unha chamada instantánea ao temporizador e lograr un condición de carreira. Un problema en l2cap_le_connect_req pode levar a unha fuga de memoria do núcleo, e en l2cap_connect pode levar a sobrescribir o contido da memoria e executar o seu código. O primeiro tipo de ataque pódese realizar mediante Bluetooth LE 4.0 (desde 2009), o segundo cando se utiliza Bluetooth BR/EDR 5.2 (desde 2020).

A segunda vulnerabilidade (CVE-2022-42895) é causada por unha fuga de memoria residual na función l2cap_parse_conf_req, que se pode usar para obter información remota sobre os punteiros ás estruturas do núcleo mediante o envío de solicitudes de configuración especialmente elaboradas. A función l2cap_parse_conf_req utilizou a estrutura l2cap_conf_efs, para a cal a memoria asignada non estaba pre-inicializada e manipulando a marca FLAG_EFS_ENABLE era posible incluír datos antigos da pila no paquete. O problema só aparece nos sistemas onde o núcleo está construído coa opción CONFIG_BT_HS (desactivada por defecto, pero activada nalgunhas distribucións, como Ubuntu). Un ataque exitoso tamén require establecer o parámetro HCI_HS_ENABLED a través da interface de xestión como verdadeiro (non se usa por defecto).

Fonte: opennet.ru

Engadir un comentario