Três vulnerabilidades encontradas nas pilhas TCP do Linux, levando à negação de serviço remota

falha do linux

Recentemente divulgou a notícia sobre a identificação de várias vulnerabilidades críticas nas pilhas TCP do Linux e FreeBSD que permite que um invasor inicie remotamente uma falha de kernel ou causar consumo excessivo de recursos processando pacotes TCP especialmente criados (pacote da morte).

Os problemas são causados ​​por erros nas alças do tamanho máximo do bloco de dados no pacote TCP (MSS, tamanho máximo do segmento) e no mecanismo de reconhecimento seletivo de conexão (SACK, reconhecimento seletivo de TCP).

O que é um reconhecimento seletivo?

Reconhecimento seletivo de TCP (SACK) é um mecanismo onde o receptor de dados pode informar o remetente sobre todos os segmentos que foram aceitos com sucesso.

Este Permite ao remetente retransmitir os segmentos de fluxo ausentes de seu conjunto 'bem conhecido'. Quando o TCP SACK é desabilitado, um conjunto muito maior de retransmissões é necessário para retransmitir uma sequência inteira.

No kernel Linux, os problemas são corrigidos nas versões 4.4.182, 4.9.182, 4.14.127, 4.19.52 e 5.1.11. A solução para FreeBSD está disponível como patch.

As atualizações do pacote do kernel são lançadas para Debian, RHEL, SUSE / openSUSE, ALT, Ubuntu, Fedora e Arch Linux.

CVE-2019-11477 (SACK Pânico)

O problema se manifesta nos kernels do Linux a partir de 2.6.29 e permite que você bloqueie o kernel (pânico) ao enviar uma série de pacotes SACK devido a um estouro de inteiro no controlador.

Para um ataque, é suficiente definir o valor MSS para 48 bytes para uma conexão TCP e enviar uma seqüência de pacotes SACK organizados de uma determinada maneira.

A essência do problema é que a estrutura tcp_skb_cb (buffer de soquete) é projetado para armazenar 17 fragmentos ("Definir MAX_SKB_FRAGS (65536 / PAGE_SIZE + 1) => 17").

No processo de envio de um pacote, ele é colocado na fila de envio e tcp_skb_cb armazena detalhes sobre o pacote, como o número de sequência, os sinalizadores, bem como os campos "tcp_gso_segs" e "tcp_gso_size", que são usados ​​para enviar Informações de segmentação para o controlador (TSO, Segment Segment Download) para processar segmentos no lado da placa de rede.

Os fragmentos são salvos quando ocorre a perda de pacotes ou a necessidade de retransmissão seletiva de pacotes, se o SACK estiver habilitado e o TSO for suportado pelo driver.

Como uma solução alternativa para a proteção, você pode desabilitar o processamento SACK ou bloquear conexões com um MSS pequeno (só funciona quando você define sysctl net.ipv4.tcp_mtu_probing como 0 e pode quebrar algum normal) com MSS baixo).

CVE-2019-11478 (SACK Lentidão)

Esta falha causa uma interrupção do mecanismo SACK (ao usar o kernel Linux em 4.15) ou consumo excessivo de recursos.

O problema ocorre ao processar pacotes SACK especialmente criados que podem ser usados ​​para fragmentar a fila de retransmissão (retransmissão TCP). As soluções de proteção são semelhantes às vulnerabilidades anteriores

CVE-2019-5599 (SACK Lentidão)

Permite a fragmentação do mapa de pacotes enviado ao processar uma sequência SACK em uma única conexão TCP e faz com que uma operação de pesquisa de lista com uso intensivo de recursos seja executada.

O problema se manifesta no FreeBSD 12 com o mecanismo de detecção de perda de pacotes RACK. Como alternativa, você pode desativar o módulo RACK (não carregado por padrão, desativado especificando sysctl net.inet.tcp.functions_default = freebsd)

CVE-2019-11479

A falha permite que um invasor faça o kernel do Linux dividir as respostas em vários segmentos TCP, cada um deles inclui apenas 8 bytes de dados, o que pode levar a um aumento significativo no tráfego, aumento da carga da CPU e um canal de comunicação obstruído.

Além disso, consome recursos adicionais (potência do processador e placa de rede).

Esse ataque requer esforços contínuos por parte do invasor e os ataques terminarão logo após o invasor parar de enviar tráfego.

Enquanto este ataque estiver em andamento, o sistema será executado com capacidade reduzida, causando uma negação de serviço para alguns usuários.

Um usuário remoto pode acionar este problema, definindo o tamanho máximo do segmento (MSS) de uma conexão TCP em seu limite inferior (48 bytes) e enviando uma sequência de pacotes SACK especialmente criados.

Como solução alternativa, é recomendável bloquear conexões com baixo MSS.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.