Vulnerabilidades no kernel Linux exploradas remotamente via Bluetooth

Foi identificada uma vulnerabilidade no kernel do Linux (CVE-2022-42896), que pode ser usada para organizar a execução remota de código no nível do kernel enviando um pacote L2CAP especialmente criado via Bluetooth. Além disso, outro problema semelhante (CVE-2022-42895) foi identificado no manipulador L2CAP que pode vazar o conteúdo da memória do kernel em pacotes de informações de configuração. A primeira vulnerabilidade se manifestou desde agosto de 2014 (kernel 3.16) e a segunda desde outubro de 2011 (kernel 3.0). As vulnerabilidades foram corrigidas nas versões 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 do kernel Linux. Você pode acompanhar a correção nas distribuições nas seguintes páginas: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Protótipos de exploração executados no Ubuntu 22.04 foram publicados para demonstrar a possibilidade de um ataque remoto. Para realizar o ataque, o invasor deve estar dentro do alcance do Bluetooth - nenhum emparelhamento prévio é necessário, mas o Bluetooth deve estar ativo no computador. Para um ataque, basta saber o endereço MAC do dispositivo da vítima, que pode ser determinado por sniffing ou, em alguns dispositivos, calculado com base no endereço MAC Wi-Fi.

A primeira vulnerabilidade (CVE-2022-42896) é causada pelo acesso a uma área de memória já liberada (use-after-free) na implementação das funções l2cap_connect e l2cap_le_connect_req - após criar um canal por meio da chamada de retorno new_connection, um bloqueio não foi definido para ele, mas um timer foi definido (__set_chan_timer ), após um timeout, chamando a função l2cap_chan_timeout e limpando o canal sem verificar o término do trabalho com o canal nas funções l2cap_le_connect*.

O tempo limite padrão é de 40 segundos e foi assumido que uma condição de corrida não poderia ocorrer com tal atraso, mas descobriu-se que, devido a outro bug no manipulador SMP, foi possível chamar instantaneamente o cronômetro e atingir a condição de corrida. Um problema em l2cap_le_connect_req pode levar a um vazamento de memória do kernel, e em l2cap_connect pode sobrescrever o conteúdo da memória e executar seu código. A primeira variante do ataque pode ser realizada usando Bluetooth LE 4.0 (desde 2009), a segunda usando Bluetooth BR/EDR 5.2 (desde 2020).

A segunda vulnerabilidade (CVE-2022-42895) é causada por um vazamento de memória residual na função l2cap_parse_conf_req, que pode ser usada para obter remotamente informações sobre ponteiros para estruturas do kernel enviando solicitações de configuração especialmente criadas. Na função l2cap_parse_conf_req, foi utilizada a estrutura l2cap_conf_efs, para a qual a memória alocada não foi pré-inicializada, e por meio de manipulações com o flag FLAG_EFS_ENABLE, foi possível conseguir a inclusão de dados antigos da pilha no pacote. O problema ocorre apenas em sistemas onde o kernel é construído com a opção CONFIG_BT_HS (desabilitada por padrão, mas habilitada em algumas distribuições, como o Ubuntu). Um ataque bem-sucedido também requer a configuração do parâmetro HCI_HS_ENABLED por meio da interface de gerenciamento como verdadeiro (não usado por padrão).

Fonte: opennet.ru

Adicionar um comentário