ASA-2019-00366 – Linux kernel: Consumo excessivo de recursos durante o processamento de blocos SACK permite a negação serviço remota


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00366

Identificador(es)

ASA-2019-00366, CVE-2019-11478, NFLX-2019-001

Título

Consumo excessivo de recursos durante o processamento de blocos SACK permite a negação serviço remota

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 o seguinte commit aplicado:

tcp: tcp_fragment() should apply sane memory limits
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=f070ef2ac66716357066b683fb0baf55f8191a2e

Prova de conceito

Desconhecido

Descrição

Foi encontrada uma falha de consumo excessivo de recursos na maneira como o subsistema de rede do kernel do Linux processava os segmentos de Selective Acknowledgment do TCP (SACK). Ao processar segmentos SACK, a estrutura de dados do buffer de soquete (SKB) do kernel do Linux fica fragmentada, o que leva a uma maior utilização de recursos para atravessar e processar esses fragmentos à medida que mais segmentos SACK são recebidos na mesma conexão TCP. Um atacante remoto pode usar essa falha para causar uma negação de serviço (DoS) enviando uma sequência maliciosamente criada de segmentos SACK em uma conexão TCP.

Detalhes técnicos

Jonathan Looney reportou que um peer malicioso pode forçar um remetente a fragmentar sua fila de retransmissão em minúsculos skbs, aumentando o uso de memória e/ou causando overflow nos contadores de 32 bits.

O TCP permite que um aplicativo enfileire até sk_sndbuf bytes, portanto, precisamos dar alguma permissão para a divisão não maliciosa da fila de retransmissão.

Um novo contador SNMP é adicionado para monitorar quantas vezes o TCP não permitiu dividir um skb se a permissão foi excedida.

Observe que esse contador pode aumentar no caso em que os aplicações usem a opção de soquete SO_SNDBUF para diminuir sk_sndbuf.

CVE-2019-11478: tcp_fragment, impede a fragmentação de um pacote quando o soquete já está usando mais da metade do espaço permitido

Solução alternativa

1 – 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).

2 – Desativar o processamento do SACK (/proc/sys/net/ipv4/tcp_sack definido como 0).

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 1719128 (CVE-2019-11478) – CVE-2019-11478 Kernel: tcp: excessive resource consumption while processing SACK blocks allows remote denial of service
https://bugzilla.redhat.com/show_bug.cgi?id=1719128

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: tcp_fragment() should apply sane memory limits
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=f070ef2ac66716357066b683fb0baf55f8191a2e

ASA-2019-00407 – VMware: Uso excessivo de recursos durante processamento de Selective Acknowledgement (SACK)
https://allelesecurity.com.br/asa-2019-00407/

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

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

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

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

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

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

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

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.