Vulnerabilidade remota na implementação do protocolo TIPC no kernel Linux

Uma vulnerabilidade crítica (CVE-2021-43267) foi identificada na implementação do protocolo de rede TIPC (Transparent Inter-process Communication) fornecido no kernel Linux, que permite executar remotamente seu código com privilégios de kernel, enviando um arquivo especialmente projetado pacote de rede. O perigo do problema é mitigado pelo fato de que o ataque requer a ativação explícita do suporte TIPC no sistema (carregamento e configuração do módulo do kernel tipc.ko), o que não é feito por padrão em distribuições Linux não especializadas.

O protocolo TIPC é suportado desde o kernel Linux 3.19, mas o código que leva à vulnerabilidade foi incluído no kernel 5.10. A vulnerabilidade foi corrigida nos kernels 5.15.0, 5.10.77 e 5.14.16. O problema aparece e ainda não foi corrigido no Debian 11, Ubuntu 21.04/21.10, SUSE (no branch SLE15-SP4 ainda não lançado), RHEL (ainda não está detalhado se a correção vulnerável foi backportada) e Fedora. A atualização do kernel já foi lançada para Arch Linux. Distribuições com kernel anterior a 5.10, como Debian 10 e Ubuntu 20.04, não são afetadas pelo problema.

O protocolo TIPC foi originalmente desenvolvido pela Ericsson, projetado para organizar a comunicação entre processos em um cluster e é ativado principalmente nos nós do cluster. O TIPC pode operar via Ethernet ou UDP (porta de rede 6118). Ao trabalhar em Ethernet, o ataque pode ser realizado a partir da rede local, e ao utilizar UDP, a partir da rede global se a porta não estiver coberta por firewall. O ataque também pode ser realizado por um usuário local sem privilégios do host. Para ativar o TIPC, você precisa baixar o módulo do kernel tipc.ko e configurar a ligação à interface de rede usando netlink ou o utilitário tipc.

A vulnerabilidade se manifesta na função tipc_crypto_key_rc e é causada pela falta de verificação adequada da correspondência entre os dados especificados no cabeçalho e o tamanho real dos dados ao analisar pacotes do tipo MSG_CRYPTO, usados ​​​​para obter chaves de criptografia de outros nós. no cluster para fins de descriptografia posterior de mensagens enviadas desses nós. O tamanho dos dados copiados para a 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 e o conteúdo do chave transmitida na mensagem. Supõe-se que o tamanho do nome do algoritmo seja fixo e um atributo separado com o tamanho seja passado adicionalmente para a chave, e um invasor pode especificar um valor neste atributo diferente do real, o que levará à escrita do cauda da mensagem além do buffer alocado. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; keylen int não assinado; /* em bytes */ char key[]; };

Vulnerabilidade remota na implementação do protocolo TIPC no kernel Linux


Fonte: opennet.ru

Adicionar um comentário