ASA-2019-00367 – Linux kernel: O consumo excessivo de recursos para conexões TCP com baixo MSS permite a negação remota de serviço


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00367

Identificador(es)

ASA-2019-00367, CVE-2019-11479, NFLX-2019-001

Título

O consumo excessivo de recursos para conexões TCP com baixo MSS permite a negação remota de serviço

Fabricante(s)

Linux foundation

Produto(s)

Linux kernel

Versão(ões) afetada(s)

Todas as versões do Linux kernel

Versão(ões) corrigida(s)

Linux kernel stable versão 4.4.182
Linux kernel stable versão 4.9.182
Linux kernel stable versão 4.14.127
Linux kernel stable versão 4.19.52
Linux kernel stable versão 5.1.11

Linux kernel com os seguintes commits aplicados:

tcp: add tcp_min_snd_mss sysctl
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=5f3e2bf008c2221478101ee72f5cb4654b9fc363

tcp: enforce tcp_min_snd_mss in tcp_mtu_probing()
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=967c05aee439e6e5d7d805e195b3a20ef5c433d6

Prova de conceito

Desconhecido

Descrição

Uma falha de consumo excessivo de recursos foi encontrada na forma como o subsistema de rede do kernel Linux processava os segmentos TCP. Se o Maximum Segment Size (MSS) de uma conexão TCP for definido para valores baixos, como 48 bytes, pode deixar apenas 8 bytes para os dados do usuário, o que aumenta significativamente a utilização de recursos do kernel do Linux (CPU, Memória e Largura de Banda). Um atacante remoto pode usar essa falha para causar uma negação de serviço (DoS) enviando repetidamente o tráfego de rede em uma conexão TCP com TCP MSS baixo.

Detalhes técnicos

Alguns peers TCP anunciam uma opção MSS muito pequena em suas mensagens SYN e/ou SYN/ACK.

Isso força a pilha a enviar pacotes com uma sobrecarga de rede/cpu muito alta.

O Linux impôs um valor mínimo de 48. Como esse valor inclui o tamanho das opções de TCP e que as opções podem consumir até 40 bytes, isso significa que cada segmento pode incluir apenas 8 bytes de payload.

Em alguns casos, pode ser útil aumentar o valor mínimo para um valor mais seguro.

Ainda deixamos o padrão para 48 (TCP_MIN_SND_MSS), por motivos de compatibilidade.

Observe que a opção de soquete TCP_MAXSEG impõe um valor mínimo de (TCP_MIN_MSS). David Miller aumentou este valor mínimo em commit c39508d6f118 (“tcp: Make TCP_MAXSEG minimum more correct.”) De 64 para 88.

Poderíamos no futuro mesclar TCP_MIN_SND_MSS e TCP_MIN_MSS.

Se o teste do mtu estiver habilitado, o tcp_mtu_probing() poderia muito bem acabar com um MSS muito pequeno.

Use o novo sysctl tcp_min_snd_mss para garantir que a pesquisa MSS seja executada em um intervalo aceitável.

CVE-2019-11479 – tcp mss codificado para 48

Solução alternativa

Bloqueie conexões com um MSS baixo usando filtros. Observe que esses filtros podem quebrar conexões legítimas que dependem de um MSS baixo. Além disso, observe que essa mitigação só é efetiva se o teste TCP estiver desabilitado (ou seja, o sysctl net.ipv4.tcp_mtu_probing é definido como 0, que parece ser o valor padrão para esse sysctl).

Créditos

Jonathan Looney (Netflix Information Security)

Referência(s)

Linux and FreeBSD Kernel: Multiple TCP-based remote denial of service vulnerabilities
https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-001.md

Linux and FreeBSD Kernel: Multiple TCP-based remote denial of
service issues
https://www.openwall.com/lists/oss-security/2019/06/17/5

Bug 1719129 (CVE-2019-11479) – CVE-2019-11479 kernel: tcp: excessive resource consumption for TCP connections with low MSS allows remote denial of service
https://bugzilla.redhat.com/show_bug.cgi?id=1719129

SACK Panic and Other TCP Denial of Service Issues
https://wiki.ubuntu.com/SecurityTeam/KnowledgeBase/SACKPanic

CVE-2019-11477, CVE-2019-11478, CVE-2019-11479
https://blog.mikrotik.com/security/cve-2019-11477-cve-2019-11478-cve-2019-11479.html

tcp: add tcp_min_snd_mss sysctl
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=5f3e2bf008c2221478101ee72f5cb4654b9fc363

tcp: enforce tcp_min_snd_mss in tcp_mtu_probing()
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=967c05aee439e6e5d7d805e195b3a20ef5c433d6

Advisory: TCP SACK PANIC kernel vulnerability
https://community.sophos.com/kb/en-us/134237

CVE-2019-11479
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-11479

CVE-2019-11479
https://nvd.nist.gov/vuln/detail/CVE-2019-11479

CVE-2019-11479
https://access.redhat.com/security/cve/CVE-2019-11479

CVE-2019-11479 | SUSE
https://www.suse.com/security/cve/CVE-2019-11479

CVE-2019-11479 in Ubuntu
https://people.canonical.com/~ubuntu-security/cve/CVE-2019-11479.html

CVE-2019-11479
https://security-tracker.debian.org/tracker/CVE-2019-11479

Se encontrou algum erro neste alerta ou deseja uma análise compreensiva, entre em contato.

Última modificação: 8 dezembro 2019

Não somos responsáveis por qualquer perda de dados, corrupção de dispositivos ou qualquer outro tipo de problema devido ao uso de qualquer informação mencionada em nossos alertas de segurança.