Vulnerabilidade remota na implementação do protocolo TIPC no núcleo do Linux

Foi identificada uma vulnerabilidade crítica (CVE-2021-43267) na implementação do protocolo de rede TIPC (Comunicação Transparente entre Processos) fornecida no núcleo do Linux, permitindo que um atacante execute seu código com privilégios de núcleo remotamente ao enviar um pacote de rede especialmente formatado. A gravidade do problema é atenuada pelo fato de que a ativação do suporte TIPC no sistema (carregamento e configuração do módulo do núcleo tipc.ko) deve ser feita explicitamente, o que não acontece por padrão em distribuições Linux não especializadas.

O protocolo TIPC é suportado desde o núcleo Linux 3.19, mas o código que leva à vulnerabilidade foi incluído no núcleo 5.10. A vulnerabilidade foi corrigida nos núcleos 5.15.0, 5.10.77 e 5.14.16. O problema permanece e ainda não foi corrigido no Debian 11, Ubuntu 21.04/21.10, SUSE (na sua ramificação SLE15-SP4 ainda não lançada), RHEL (ainda não especificado se a correção vulnerável foi backportada) e Fedora. Uma atualização do núcleo já foi lançada para Arch Linux. Distribuições com núcleos anteriores a 5.10, como Debian 10 e Ubuntu 20.04, não estão sujeitas a este problema.

O protocolo TIPC foi originalmente desenvolvido pela Ericsson e é destinado à organização da comunicação entre processos em um cluster, sendo ativado principalmente em nós de clusters. O TIPC pode operar tanto sobre Ethernet quanto sobre UDP (porta de rede 6118). No caso de operar sobre Ethernet, um ataque pode ser realizado a partir da rede local, enquanto ao usar UDP, pode ser feito a partir da rede global, se a porta não estiver protegida por um firewall. Um ataque também pode ser realizado por um usuário local não privilegiado do host. Para ativar o TIPC, é necessário carregar o módulo do kernel tipc.ko e configurar a vinculação à interface de rede usando netlink ou a ferramenta tipc.

A vulnerabilidade se manifesta na função tipc_crypto_key_rc e é causada pela falta de verificação adequada da correspondência entre o tamanho de dados especificado no cabeçalho e o tamanho real ao analisar pacotes do tipo MSG_CRYPTO, usados para obter chaves de criptografia de outros nós no cluster para a posterior descriptografia de mensagens enviadas a partir desses nós. O tamanho dos dados copiados para a memória é calculado como a diferença entre os valores dos campos de tamanho da mensagem e do cabeçalho, mas sem considerar o tamanho real do nome do algoritmo de criptografia e do conteúdo da chave transmitida na mensagem. Presume-se que o tamanho do nome do algoritmo seja fixo, enquanto para a chave é passado um atributo separado com o tamanho, e o atacante pode especificar um valor diferente neste atributo em comparação ao que é real, o que resultará na gravação do final da mensagem além do buffer alocado. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* em bytes */ char key[]; };

Vulnerabilidade remota na implementação do protocolo TIPC no núcleo do Linux


Fonte: opennet.ru
Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster