Situação: duas vulnerabilidades na pilha TCP do kernel Linux estão fechadas

No início deste mês, especialistas em segurança descobriram duas novas vulnerabilidades no kernel do Linux: SegmentSmack e FragmentSmack. Ambos estão relacionados ao trabalho da pilha TCP e permitem que os atacantes realizem ataques de DoS e DDoS no sistema da vítima. "Patches" para a maioria das distribuições já foram lançados.

Sob o corte - mais sobre a essência.


/ foto Eli Duke CC

Por que essas vulnerabilidades são perigosas?


A "raiz do mal" SegmentSmack - funções tcp_collapse_ofo_queue () e tcp_prune_ofo_queue (). Um invasor os chama usando segmentos TCP especialmente modificados enviados ao servidor, computador pessoal ou dispositivo móvel da vítima.

Isso leva ao uso excessivo de recursos de memória e processador. Assim, um hacker pode "travar" um host ou dispositivo com tráfego de apenas 2 mil pacotes por segundo.

O site RedHat fornece um exemplo do resultado de um ataque desse tipo. O comando top mostra a carga total de quatro núcleos da CPU e atrasos no processamento de pacotes de rede:

$ top %Cpu25 : 0.0 us, 0.0 sy, 0.0 ni, 1.4 id, 0.0 wa, 0.0 hi, 98.5 si, 0.0 st %Cpu26 : 0.0 us, 0.0 sy, 0.0 ni, 1.4 id, 0.0 wa, 0.0 hi, 98.6 si, 0.0 st %Cpu28 : 0.0 us, 0.3 sy, 0.0 ni, 0.7 id, 0.0 wa, 0.0 hi, 99.0 si, 0.0 st %Cpu30 : 0.0 us, 0.0 sy, 0.0 ni, 1.4 id, 0.0 wa, 0.0 hi, 98.6 si, 0.0 st PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 141 root 20 0 0 0 0 R 97.3 0.0 1:16.33 ksoftirqd/26 151 root 20 0 0 0 0 R 97.3 0.0 1:16.68 ksoftirqd/28 136 root 20 0 0 0 0 R 97.0 0.0 0:39.09 ksoftirqd/25 161 root 20 0 0 0 0 R 97.0 0.0 1:16.48 ksoftirqd/30 

Observe que a manutenção de um "estado de DoS" requer uma sessão TCP aberta; portanto, um ataque não pode ser realizado usando falsificação de IP.

O ataque FragmentSmack explora os recursos de fragmentação dos datagramas IP . Quando um datagrama IP é transmitido para a camada de link, ele é fragmentado se não couber no quadro . Assim, é transmitido em pedaços, e o host o coleta juntos. No entanto, ele sabe apenas o comprimento final do datagrama quando recebe o último fragmento.

Os invasores usam esse recurso e ajustam os valores de deslocamento de fragmento para que o processador do servidor monte constantemente pacotes IPv4 e IPv6.

O FragmentSmack permite que você trabalhe com endereços IP falsos para enganar os sistemas de segurança (você pode usar a falsificação de IP). No entanto, exige mais velocidade no envio de pacotes do que o SegmentSmack - 30 mil pacotes por segundo.

O RedHat também fornece o resultado de um ataque semelhante (o kernel é 99% carregado):

 top - 08:59:45 up 1:34, 2 users, load average: 0.39, 0.15, 0.08 %Cpu9 : 0.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi,100.0 si, 0.0 st PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 54 root 20 0 0 0 0 R 99.7 0.0 0:47.53 ksoftirqd/9 

Tais vulnerabilidades não são descobertas pela primeira vez. Nos anos 90, um bug semelhante foi encontrado nas versões do kernel do Windows NT 4.0, Windows 95 e Linux até a versão 2.0.32. A exploração é conhecida como ataque de lágrima - um invasor também envia pacotes fragmentados para um dispositivo de destino (rede), causando DoS. A vulnerabilidade foi corrigida, mas apareceu mais tarde.

Em 2009, o bug foi novamente encontrado no Windows 7 e no Windows Vista.

Quem machucou


O FragmentSmack ameaça todas as versões do kernel do Linux começando com 3.9 e o SegmentSmack ameaça com 4.9. Você pode encontrar uma lista de fornecedores cujos sistemas possuem essas vulnerabilidades no site do CERT .

Na semana passada, a Cisco informou que seu sistema operacional AsyncOS foi atacado pelo SegmentSmack e FragmentSmack. Portanto, a empresa lançou uma série de patches.

Conforme observado na Cisco, os "sintomas" das vulnerabilidades podem ser rastreados usando o comando netstat (um exemplo está no site da Cisco na seção Indicadores de compromisso ). Se a saída do comando mostrar um grande número de conexões TCP no estado CLOSE_WAIT, é provável que o dispositivo seja afetado por essas vulnerabilidades.

O que tratar


Detalhes sobre os patches do SegmentSmack para várias distribuições já foram publicados no CVE (por exemplo, aqui está um patch para o Ubuntu 14.04 LTS ). Lá você encontrará instruções e arquivos de correção para todas as distribuições Linux. Quanto ao FragmentSmack, os patches contra essa vulnerabilidade já foram lançados pelos desenvolvedores do Ubuntu, Red Hat, Debian e Android OS.


/ foto Christopher Michel CC

Como uma solução temporária para o problema FragmentSmack (se o patch não puder ser instalado por algum motivo), você poderá alterar os valores de net.ipv4.ipfrag_high_thresh e net.ipv4.ipfrag_low_thresh para 256 e 192 KB, respectivamente (em vez de 4 MB e 3 MB).

O primeiro parâmetro define a quantidade máxima de memória alocada para a fila de pacotes fragmentados. Se o comprimento da fila exceder, o manipulador de fragmentos ignorará todos os pacotes até que o comprimento da fila seja menor que o valor ipfrag_low_thresh.

Os proprietários de Android, de acordo com Kevin Beaumont, especialista em segurança cibernética (e autor de um blog independente sobre o assunto), podem alterar esses valores usando esses comandos (eles devem funcionar sem reiniciar o dispositivo).



O que fazemos no IT-GRAD - as principais áreas:

Infraestrutura virtual (IaaS)Hospedagem PCI DSSCloud FZ-152



Outro conteúdo do nosso blog IaaS:



Source: https://habr.com/ru/post/pt421207/


All Articles