O pesquisador chinês Wei, junto ao laboratório Kunlun relataram vulnerabilidade crítica (pontuação 9,8) encontrada no módulo TCP/IP do Windows. Registrada na CVE-2024-38063, essa vulnerabilidade recebe uma altíssima pontuação de severidade devido ao seu impacto e a baixa complexidade de ataque.
QUAIS OS RISCOS?
Essa vulnerabilidade no Windows apresenta riscos significativos, especialmente em sistemas que processam tráfego de rede intensivo e diverso. A falha permite que um atacante cause um estouro de buffer baseado em heap, o que pode resultar em corrupção de memória, falhas do sistema (crash) ou até mesmo a execução de código malicioso. Em cenários críticos, isso pode comprometer a integridade e a disponibilidade do sistema, permitindo que um invasor obtenha controle total sobre o dispositivo afetado. As necessidades para exploração da vulnerabilidade são relativamente simples, sendo elas:
- Acesso à Rede: O atacante precisa ser capaz de enviar pacotes IPv6 malformados para o sistema alvo. Isso geralmente requer que o atacante esteja na mesma rede local ou consiga roteamento de pacotes IPv6 para o alvo.
- Envio de Pacotes Específicos: O ataque depende de pacotes IPv6 coalescidos(ou agrupados), onde o primeiro pacote contém um cabeçalho de extensão malformado que causa um erro de processamento. Esse erro aciona a função que reverte o estado do pacote, mas que deixa outros pacotes na lista coalescida sem marcação de erro.
- Timing Preciso: Após enviar os pacotes malformados, o atacante deve esperar o tempo correto (geralmente 1 minuto) para que o sistema processe o timeout e acione o estouro de buffer.
A exploração requer conhecimento detalhado do funcionamento interno do sistema de rede do Windows, mas o risco é real para sistemas vulneráveis, especialmente em ambientes onde a segurança da rede é crítica.
COMO FUNCIONA?
Essa vulnerabilidade no Windows ocorre durante o processamento de pacotes IPv6 que foram coalescidos (ou seja, agrupados) em um único lote pelo sistema. Aqui está como o processo acontece:
- Coalescimento de Pacotes: Em algumas situações, o Windows junta vários pacotes IP em um só grupo e os processa juntos. Cada pacote tem uma estrutura chamada NET_BUFFER, que armazena os dados e informações sobre o quão longe o pacote foi analisado (current-offset). Quando o sistema está processando pacotes coalescidos, o offset normalmente estará em 0x28, indicando que o cabeçalho IPv6 foi processado, mas as demais partes do pacote ainda não.
- Erro de Processamento: Durante o processamento de um tipo específico de cabeçalho de extensão chamado “destination options”, pode ocorrer um erro de análise. Quando isso acontece, a função tcpip!IppSendErrorList é chamada para lidar com o erro, e dentro dessa função, outra chamada tcpip!IppSendError é feita para cada pacote na lista coalescida.
- Reversão dos Pacotes: A função IppSendError pode ter um efeito colateral em que “reverte” o estado do pacote, movendo os dados de volta para o início e redefinindo o offset para zero. No entanto, apenas o primeiro pacote é marcado como tendo um erro, o que significa que os pacotes subsequentes na lista ainda serão processados, mas com dados incorretos.
- Exploração da Vulnerabilidade: A função Ipv6pReceiveFragment é usada para processar fragmentos de pacotes. Ela calcula o comprimento dos dados não relacionados ao cabeçalho, subtraindo 0x30 do valor do offset atual. Como o offset foi erroneamente redefinido para zero, o cálculo resulta em um valor incorreto (um número muito grande, 0xffd8 em hexadecimais).
- Estouro de Buffer: Esse valor incorreto é usado para alocar memória para o pacote remontado. Em uma das funções (Ipv6pReassemblyTimeout), o valor excede o limite permitido para o tamanho do buffer, causando um estouro de buffer, o que pode ser explorado para corromper a memória e potencialmente executar código malicioso.
O ataque funciona tentando manipular o processamento incorreto desses pacotes, explorando o erro de reversão do estado do pacote e forçando o sistema a calcular incorretamente o tamanho dos buffers, levando a um estouro que pode ser explorado por um atacante.
COMO EXPLORAR?
Para a exploração dessa vulnerabilidade, utilizamos de um script encontrado no seguinte GitHub: https://github.com/ynwarcs/CVE-2024-38063/tree/main. Onde também podemos encontrar a Prova de Conceito dessa vulnerabilidade (PoC), incluindo um vídeo detalhado da exploração.
Passo 1: Preparação do Ambiente
1. Escolha da Interface de Rede:
- Identifique qual adaptador de rede será usado para enviar os pacotes. Exemplo: “eth0” no Linux ou “Hyper-V Virtual Ethernet Adapter” no Windows.
- Se quiser usar a interface padrão, deixe o campo “iface” vazio.
2. Definição do Alvo:
- Insira o endereço IP do alvo no campo “ip_addr”. O endereço deve ser um IPv6 do sistema de destino.
3. Configuração do Número de Tentativas:
- Ajuste o número de pacotes a serem enviados nos campos
“num_tries” e “num_batches”. Quanto maior o número, maior a chance de acionar a vulnerabilidade.
4. Endereço MAC (Opcional):
- Deixe o campo “mac_addr” vazio, a menos que o script reclame sobre a impossibilidade de encontrar o endereço MAC. Se necessário, insira manualmente.
Passo 2: Execução do Script
1. Obtenha o Script:
- Baixe o script do GitHub. O script em questão é responsável por enviar pacotes IPv6 malformados para explorar a vulnerabilidade.
2. Prepare o Alvo:
- No sistema de destino, habilite o modo de depuração para aumentar as chances de coalescência de pacotes:

- Reinicie a máquina/VM para aplicar as mudanças.
3. Execute o Script:
- No sistema que enviará os pacotes, execute o script Python com o comando:

Passo 3: Monitoramento e Ajustes
1. Monitorar Efeitos:
- Após a execução do script, monitore o comportamento do sistema alvo. Busque por falhas ou comportamentos anômalos que possam indicar a exploração bem-sucedida.
2. Ajustes e Troubleshooting:
- Caso a exploração não funcione, você pode precisar ajustar o número de pacotes (num_tries, num_batches) ou a configuração de rede do alvo para garantir que os pacotes sejam coalescidos.Exemplo visual:
Abaixo está uma imagem exemplificando o script sendo executado em uma Máquina Virtual (VM).

Após a execução do script, a VM deve retornar a tela de “crash’ exemplificada na imagem abaixo:

Fonte: https://github.com/ynwarcs/CVE-2024-38063/tree/main
COMO SE PROTEGER?
Os analistas de segurança da SecOffice recomendam que implementem as medidas de mitigação abaixo para melhorar a prontidão e a postura de segurança do seu ambiente.
- Implementar o patch lançado pela Microsoft para sistemas que não podem desabilitar o IPv6
– Este patch foi lançado em 13 de agosto de 2024. https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-38063 Este patch corrigirá esta vulnerabilidade - Desabilite o IPv6 se a atualização não for possível imediatamente possível, desabilitar o IPv6 reduzirá a superfície de ataque. No entanto, isso pode interromper serviços de rede que dependem do IPv6, então deve ser feito com cautela. Além disso, essa é apenas uma solução de curto prazo. Para proteção de longo prazo, as atualizações de segurança mais recentes devem ser aplicadas.
Medidas Adicionais de Proteção
- Pentests: Testes de penetração identificam vulnerabilidades antes que sejam exploradas, permitindo correções preventivas.
- Equipe SOC: Uma equipe qualificada de Security Operations Center (SOC) monitora e responde a incidentes de segurança em tempo real, minimizando o impacto de vazamentos de dados.
- Gerenciamento de Vulnerabilidades: A identificação contínua e a correção rápida de falhas de segurança são essenciais para evitar brechas que possam ser exploradas por atacantes.
- CloudSec: A segurança em ambientes de nuvem (CloudSec) oferece proteção adicional e resiliência. Serviços de CloudSec, incluem ferramentas avançadas de segurança, opções de backup e recuperação, e monitoramento contínuo, que são cruciais para a continuidade dos negócios.


