Descoberta vulnerabilidade na implementação TIPC do kernel Linux

Kernel Linux prepara suporte para uma máquina virtual M68k mais prática
tux

Acaba de ser descoberta vulnerabilidade na implementação TIPC do kernel Linux. O problema foi identificado por um pesquisador de segurança. A vulnerabilidade crítica (já listada em CVE-2021-43267) na implementação do protocolo de rede TIPC fornecido no kernel Linux, que permite a execução remota de código. pacote de rede. O perigo do problema é atenuado pelo fato de que o ataque requer a ativação explícita do suporte TIPC no sistema (carregando e configurando o módulo do kernel tipc.ko), o que não é feito por padrão em distribuições não Linux.

CodeQL é um mecanismo de análise que permite executar consultas em seu código. De uma perspectiva de segurança, isso pode permitir que você encontre vulnerabilidades simplesmente descrevendo sua aparência. O CodeQL entrará em operação e encontrará todas as instâncias dessa vulnerabilidade.

Descoberta vulnerabilidade na implementação TIPC do kernel Linux

O TIPC tem suporte desde o kernel Linux 3.19, mas o código que leva à vulnerabilidade foi incluído no kernel 5.10. O protocolo TIPC original da Ericsson, destina-se a organizar a comunicação entre processos em um cluster e é ativado principalmente nos nós do cluster.

O TIPC pode funcionar tanto em Ethernet quanto em UDP (porta de rede 6118). No caso de trabalhar através de Ethernet, o ataque pode ocorrer desde a rede local e, quando se utiliza UDP, desde a rede global, se a porta não estiver coberta por firewall. O ataque também ocorrer por um usuário local sem privilégios no host. Para habilitar o TIPC, você deve carregar o módulo do kernel tipc.ko e configurar o link para a interface de rede usando o netlink ou o utilitário tipc.

O protocolo é implementado em um módulo de kernel empacotado com todas as principais distribuições do Linux. Quando carregado por um usuário, ele pode ser usado como um conector e pode ser configurado em uma interface usando netlink (ou usando a ferramenta de espaço de usuário tipc, que fará essas chamadas de netlink) como um usuário não privilegiado.

O TIPC pode ser configurado para operar sobre um protocolo de suporte, como Ethernet ou UDP (no último caso, o kernel escuta na porta 6118 as mensagens de entrada de qualquer máquina). Uma vez que um usuário com poucos privilégios não pode criar quadros Ethernet brutos, definir o portador como UDP torna mais fácil escrever um exploit local.

Sobre a falha

A vulnerabilidade se manifesta na função tipc_crypto_key_rc e é causada pela falta de verificação adequada da correspondência entre o que é especificado no cabeçalho e o tamanho real dos dados ao analisar pacotes com o tipo MSG_CRYPTO usado para obter chaves de criptografia de outros nós em o cluster para posteriormente descriptografar as mensagens enviadas desses nós.

O tamanho dos dados que estão na memória é calculado como a diferença entre os valores dos campos com o tamanho da mensagem e o tamanho do cabeçalho, mas sem levar em consideração o tamanho real do nome do algoritmo de criptografia transmitido na mensagem e no conteúdo da chave.

O tamanho do nome do algoritmo é considerado fixo e, além disso, um atributo separado com o tamanho é passado para a chave, e o invasor pode especificar um valor neste atributo que difere do valor real, o que levará à gravação em a fila da mensagem fora do buffer alocado.

A vulnerabilidade recebeu correção nos kernels 5.15.0, 5.10.77 e 5.14.16. Isso embora o problema apareça e ainda não tenha correção no Debian 11, Ubuntu 21.04/21.10, SUSE (no ramo SLE15-SP4 que ainda não saiu), RHEL (ainda sem detalhes se houve a solução ideal) e Fedora.

Embora uma atualização de kernel já exista para Arch Linux e distribuições com kernels anteriores a 5.10, como Debian 10 e Ubuntu 20.04, eles não apresentam problemas.

Por fim, se você tiver interesse em saber mais sobre o assunto , poderá verificar os detalhes no link a seguir.