CVE-2024-38063 — Vulnerabilidade na Pilha IPv6 do Windows (Análise e PoC)
-red)
Análise técnica e Prova de Conceito (PoC) para CVE-2024-38063, uma vulnerabilidade crítica de Execução Remota de Código (RCE) na pilha IPv6 do Windows (tcpip.sys). Descoberta pelo KunLun Lab, esta questão é zero-click, ou seja, pode ser acionada por pacotes especialmente construídos sem interação do usuário.
Contexto acadêmico: Projeto final para o curso "Fundamentos de Segurança de Redes".
Demonstração
Índice
Visão Geral
Este repositório contém:
- uma análise estruturada da vulnerabilidade,
- uma demonstração de PoC usando Scapy,
- e a documentação completa do curso e instruções de laboratório.
Resumo Técnico
A questão central é um underflow de inteiro em tcpip.sys durante a análise de Cabeçalhos de Extensão IPv6 dentro de tráfego fragmentado.
- Falha de lógica: a validação do comprimento do cabeçalho falha durante o cálculo.
- Corrupção de memória: o underflow leva a um buffer overflow e a gravações inseguras na memória.
- Impacto: potencial BSOD e RCE sob condições específicas.
Conteúdo do Repositório
- CVE-2024-38063 Analysis.pdf — Slides cobrindo contexto, causa raiz e mitigações.
- CVE-2024-38063.py — Script de PoC baseado em Scapy (demonstra o comportamento de crash).
- WriteUP.pdf — Write-up completo, requisitos de laboratório e notas de execução.
Configuração do Laboratório
Para reproduzir o ambiente em um laboratório controlado e educacional:
- Vítima: Windows 10/11 anterior ao patch de ago/2024 / 24H2, com IPv6 habilitado.
- Atacante: VM Linux com Python 3 e Scapy.
- Rede: conectividade IPv6 entre ambas as máquinas no mesmo segmento de rede.
Lógica da PoC (Alto Nível)
A PoC constrói uma sequência de pacotes para acionar o underflow:
- Destination Options com um tipo de opção não reconhecido para forçar os caminhos de tratamento de erros.
- Fragmento 1 para iniciar a fragmentação e fornecer payload.
- Fragmento 2 para encerrar a sequência.
O script repete esses lotes variando o Hop Limit para aumentar a probabilidade de atingir o caminho de análise vulnerável.
Uso
- Identifique o endereço IPv6 de destino.
- Atualize
ip_addr e iface em CVE-2024-38063.py.
- Execute o script a partir da máquina atacante:
pip install scapy
pip install getmac
python3 CVE-2024-38063.py
Se o alvo for vulnerável, um BSOD normalmente ocorre em 30–60 segundos, à medida que o kernel processa cabeçalhos malformados.
Mitigação
- Aplicar atualizações de segurança: patch da Microsoft (13 de agosto de 2024).
- Desativar IPv6 onde a aplicação do patch não for possível.
- Filtragem por firewall: bloquear pacotes IPv6 fragmentados no perímetro.
O que aprendi
- Arquitetura do cabeçalho IPv6: Aprofundei meu entendimento do encadeamento de next-header (Hop-by-Hop, Destination Options e Fragmentation), e de como a complexidade de cabeçalhos aninhados amplia a superfície de ataque de rede.
- Ingestão de pacotes em nível de kernel (
tcpip.sys): Observei o processamento de pacotes em Ring 0 em primeira mão. Como a remontagem de fragmentação e o parsing ocorrem profundamente dentro do driver de rede antes de chegar aos sockets em modo usuário, falhas nessa camada contornam os controles de software em nível de host e possibilitam exploração zero-click.
- Mecânica da vulnerabilidade de causa raiz: Analisei como um integer underflow no cálculo do comprimento do cabeçalho corrompe deslocamentos de ponteiro, transformando uma falha aritmética em gravações fora dos limites na memória do kernel e em panes do sistema (BSOD).
- Criação de pacotes personalizados com Scapy: Adquiri experiência prática na construção de pacotes não conformes com a RFC, na injeção de TLVs (Type-Length-Value) malformados de Destination Option e no sequenciamento de fragmentos para forçar o tratamento de erros de casos extremos no kernel alvo.
Aviso legal
Este projeto destina-se apenas a fins educacionais e de pesquisa. Testes ou acessos não autorizados a sistemas que você não possui ou para os quais não tem permissão explícita de avaliação são ilegais. Os autores não assumem qualquer responsabilidade pelo uso indevido.