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
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