ADVANCED THREAT RESEARCH – CVE-2020-16898: “Bad Neighbor”

Views: 409
0 0
Read Time:3 Minute, 3 Second

Pontuação do CVSS: 9,0

Vetor CVSS: CVSS3.0/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H/E:P/RL:O/RC:C

Visão geral

Em 13 de outubro, a Microsoft anunciou uma vulnerabilidade excepcionalmente crítica na pilha IPv6 do Windows, que permite que um invasor envie pacotes maliciosamente criados para potencialmente executar código arbitrário em um sistema remoto. A prova de conceito compartilhada com os membros do MAPP é extremamente simples e perfeitamente confiável. Isso resulta em um BSOD imediato (Blue Screen of Death), mas moreso, indica a probabilidade de exploração para aqueles que podem conseguir contornar as mitigações do Windows 10 e do Windows Server 2019. Os efeitos de uma exploração que concederia a execução remota de códigos seriam generalizados e altamente impactantes, pois este é o tipo de bug que poderia ser tornado wormable. Para facilitar a referência, chamamos a vulnerabilidade de “Bad Neighbor” porque ela está localizada dentro de um “Protocolo” de descoberta de vizinhos ICMPv66, usando o tipo de anúncio do Roteador.

Este documento foi preparado pela McAfee Advanced Threat Research. O objetivo é fornecer insights valiosos para os administradores de rede e pessoal de segurança, buscando entender melhor essa vulnerabilidade e se defender contra a exploração. A assinatura aqui produzida deve ser minuciosamente considerada e examinada em ambientes de preparação antes de ser usada na produção e pode se beneficiar de ajuste específico para a implantação do alvo.

As informações aqui fornecidas estão sujeitas a alterações sem aviso prévio, e são fornecidas “AS IS”, com todas as falhas, sem garantia ou garantia quanto à exatidão ou aplicabilidade das informações a qualquer situação ou circunstância específica e para uso por sua conta e risco. Além disso, não podemos garantir qualquer benchmark de desempenho ou eficácia para quaisquer assinaturas.

Assinatura

A assinatura Suricata para essa vulnerabilidade está localizada nas regras cve-2020-16898.e contém a seguinte lógica:

alertar icmp qualquer -> qualquer (msg:”Potencial CVE-2020-16898 Explorar”; lua:cve-2020-16898.lua; sid:202016898; rev:1;)

O roteiro lua correspondente pode ser encontrado em cve-2020-16898.lua. Contém a lógica necessária para analisar adequadamente a camada ICMPv6 e identificar a exploração potencial do Bad Neighbor, da seguinte forma:

Uma vez localizado o início da camada ICMPv6, testamos o primeiro byte da camada para garantir que seja um pacote de Anúncio do Roteador ICMPv6 (Tipo = 134) – se não for, saímos.

Como os primitivos suricata não foram atualizados para analisar as opções do ICMPv6, basta saltar para o 17º byte da camada ICMPv6, já que é aí que as Opções devem começar, se presentes (os primeiros 16 bytes são campos de comprimento estático, por RFC 4443). A partir daí, nós giramos sobre todas as Opções até ficarmos sem bytes no pacote. Para cada Opção, só estamos interessados nos dois primeiros bytes: os campos Tipo de Opção e Comprimento, respectivamente. Embora ignoremos todas as opções que não são RDNSS, para Tipo de Opção = 25 (RDNSS), verificamos se o comprimento (segundo byte na Opção) é um número uniforme. Se for, nós o sinalizamos. Se não, continuamos. Uma vez que o Comprimento é contado em incrementos de 8 bytes, multiplicamos o Comprimento por 8 e pulamos à frente que muitos bytes para chegar ao início da próxima Opção (subtraindo 1 para explicar o byte comprimento que já consumimos).

Com esta regra, também verificamos se o Comprimento é de pelo menos 3, uma vez que a RFC 8106 exige, mas em última análise esta verificação pode ser supérflua, uma vez que estamos apenas preocupados com se o Comprimento é mesmo ou não.

FONTE: ADVANCED THREAT RESEARCH

POSTS RELACIONADOS