ASA-2019-00412 – Linux kernel: Divulgação de endereço do kernel através de valores do IP ID


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00412

Identificador(es)

ASA-2019-00412, CVE-2019-10639

Título

Divulgação de endereço do kernel através de valores do IP ID

Fabricante(s)

Linux foundation

Produto(s)

Linux kernel

Versão(ões) afetada(s)

Linux kernel versões desde 4.1

Linux kernel versões com o seguinte commit aplicado:

netns: introduce the net_hash_mix “salt” for hashes
https://github.com/torvalds/linux/commit/0b4419162aa6c4204843f3a13b48d9ab821d3167

Versão(ões) corrigida(s)

Linux kernel versão 5.0.8
Linux kernel versão 4.19.35
Linux kernel versão 4.14.112
Linux kernel versão 4.9.169
Linux kernel versão 4.4.179
Linux kernel versão 3.18.139
Linux kernel versão 3.16.67

Linux kernel versões com o seguinte commit aplicado:

netns: provide pure entropy for net_hash_mix()
https://github.com/torvalds/linux/commit/355b98553789b646ed97ad801a619ff898471b92

Prova de conceito

Desconhecido

Descrição

O kernel do Linux 4.x (a partir de 4.1) e 5.x antes de 5.0.8 permite a divulgação de informação (divulgação parcial do endereço do kernel), levando a um bypass de KASLR.

Detalhes técnicos

É possível extrair o offset da imagem do kernel KASLR usando os valores de IP ID que o kernel produz para protocolos sem conexão (por exemplo, UDP e ICMP). Quando esse tráfego é enviado para vários endereços IP de destino, é possível obter colisões de hash (de índices para o array de contadores) e, assim, obter a chave de hashing (por meio de enumeração). Essa chave contém bits suficientes de um endereço do kernel (de uma variável estática), portanto, quando a chave é extraída (via enumeração), o offset da imagem do kernel é exposto. Esse ataque pode ser realizado remotamente, pelo atacante, forçando o dispositivo de destino a enviar tráfego UDP ou ICMP (ou alguns outros) para endereços IP controlados pelo atacante. Forçar um servidor a enviar tráfego UDP é trivial se o servidor for um servidor DNS. O tráfego ICMP é trivial se o servidor responder às solicitações de echo ICMP (ping). Para destinos de cliente, se o destino visitar a página da Web do atacante, o WebRTC ou o gQUIC poderá ser usado para forçar o tráfego UDP para endereços IP controlados pelo atacante. NOTA: este ataque contra o KASLR tornou-se viável no 4.1 porque a geração do ID do IP foi alterada para ter uma dependência em um endereço associado a um namespace de rede.

Créditos

Amit Klein e Benny Pinkas

Referência(s)

From IP ID to Device ID and KASLR Bypass (Extended Version)
https://arxiv.org/pdf/1906.10478.pdf

netns: provide pure entropy for net_hash_mix()
https://github.com/torvalds/linux/commit/355b98553789b646ed97ad801a619ff898471b92

inet: update the IP ID generation algorithm to higher standards.
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=55f0fc7a02de8f12757f4937143d8d5091b2e40b

netns: introduce the net_hash_mix “salt” for hashes
https://github.com/torvalds/linux/commit/0b4419162aa6c4204843f3a13b48d9ab821d3167

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

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

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

Última modificação: 10 julho 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.