CVE-2024-36971 — Prova de Conceito (Apenas Pesquisa e Análise)
⚠️ AVISO — LEIA ANTES DE USAR ESTE REPOSITÓRIO
Este repositório destina-se apenas a pesquisa defensiva, análise e divulgação responsável.
Ele contém um arquivo de prova de conceito não explorável chamado CVE-2024-36971 e um trecho de cabeçalho do kernel Android disponível publicamente (sock.h) para ilustrar a área afetada.
Nenhum código de exploração, comandos de reprodução ou instruções passo a passo são fornecidos. Não execute nenhum arquivo deste repositório em dispositivos de produção, sistemas de terceiros ou redes que você não controla. O autor se isenta de qualquer responsabilidade por uso indevido.
Sumário
- Visão geral
- Conteúdo do repositório
- Resumo técnico de alto nível
- Sobre o trecho
sock.h incluído
- Ambiente de pesquisa (alto nível, não acionável)
- Resultado observado (dispositivo de teste)
- Divulgação responsável e contato
- Aviso legal e ético
1. Visão geral
CVE-2024-36971 é uma vulnerabilidade de Use-After-Free (UAF) no subsistema de rede do kernel Android. A causa raiz é uma ordem insegura de operações ao manipular o cache de destino (dst) usado pelo roteamento de soquetes (sk->sk_dst_cache), o que pode deixar um ponteiro pendente acessível a caminhos de código concorrentes. Este repositório documenta um PoC de pesquisa defensiva que demonstra o impacto (instabilidade do kernel e corrupção de dados) sem fornecer primitivas de exploração.
Este README explica o que o PoC demonstra, por que o sock.h incluído é relevante e as restrições responsáveis em torno de testes e compartilhamento.
2. Conteúdo do repositório
CVE-2024-36971 — arquivo fonte do PoC (mantido no repositório para transparência). Não destinado a ser executado; incluído apenas para fins de arquivamento/análise.
sock.h — trecho de cabeçalho do kernel Android disponível publicamente mostrando as estruturas e auxiliares de soquete/destino relevantes para o problema.
README.md — este arquivo (documentação e orientações).
3. Resumo técnico de alto nível (não acionável)
- Causa raiz: ordenação inadequada do tratamento de referência e liberação de objetos
dst no caminho de código do cache de roteamento/destino, permitindo um Use-After-Free (UAF).
- Vetor de acionamento (alto nível): um caminho de rede que exercita o caminho de código
__dst_negative_advice() / cache de destino no kernel pode fazer com que a condição de UAF ocorra. Este repositório não fornece instruções para acioná-la.
- Impacto observado: corrupção de memória do kernel, instabilidade e, em circunstâncias testadas, corrupção de metadados de armazenamento levando a um estado de inicialização de “dados corrompidos” (soft-brick).
- Status de explorabilidade: o PoC demonstra o impacto e confirma a presença de um bug crítico no kernel. A corrupção observada nos testes foi não determinística e destrutiva, não um exploit estável e confiável para execução de código. Transformar o bug em um exploit confiável exigiria manipulação avançada de heap e controle de alocador — tal trabalho está fora do escopo deste repositório e não é fornecido.
4. Sobre o trecho sock.h incluído
O cabeçalho sock.h é um cabeçalho de kernel disponível publicamente (obtido das árvores do kernel Android) que contém:
- definições de
struct sock e estruturas de rede relacionadas;
- referências a
sk_dst_cache (o cache de destino do soquete) e auxiliares para obter/definir referências de destino;
- padrões de acesso RCU/refcount e uso de
dst_release().
Este trecho é incluído para mostrar as estruturas exatas e os locais de código que contextualizam o CVE-2024-36971. O cabeçalho apoia a explicação neste README ao mostrar os campos de dados e funções cuja ordenação ou sincronização é crítica para a correção.
5. Ambiente de pesquisa (alto nível, não acionável)
Nota: A seguir está uma lista de capacidades e ferramentas típicas usadas por pesquisadores de segurança em um laboratório controlado. É intencionalmente não acionável — sem comandos, sem scripts, sem valores de parâmetros.
Capacidades recomendadas para pesquisa de kernel segura e isolada:
- Uma rede de teste isolada ou laboratório com ar-gap para garantir nenhum impacto acidental em sistemas de terceiros.
- Hardware de teste dedicado que você possua e possa totalmente regravar/apagar (não use dispositivos de produção ou de terceiros).
- Virtualização (ex.: QEMU/KVM) para compilar e depurar imagens de kernel em um ambiente controlado.
- A árvore de fonte do kernel Android e um ambiente de build local para compilar kernels instrumentados/de depuração e gerar mapas de símbolos.
- Ferramentas e fluxos de trabalho de depuração/log:
adb/fastboot para acesso ao dispositivo, coleta de dmesg/last_kmsg e ferramentas para mapear endereços de kernel para linhas de código-fonte (arquivos de símbolos, addr2line, etc.).
- Depuração de kernel e sanitizers (conforme apropriado), como KASAN/KMSAN, ftrace e outros recursos de rastreamento para detectar violações de segurança de memória sem tentar exploração.
- Coleta e armazenamento seguro de artefatos para logs, backtraces e evidências fotográficas.
6. Resultado observado (dispositivo testado)
- Dispositivo testado: Nothing Phone (1) — dispositivo pertencente e controlado pelo pesquisador. O dispositivo estava executando uma revisão de kernel que não incluía a correção no momento do teste.
- Contexto do teste: o PoC foi executado a partir da mesma rede local do dispositivo alvo em um ambiente de teste isolado.
- Resultado: após múltiplos envios do tráfego do PoC, o dispositivo sofreu grave corrupção de memória do kernel. A corrupção se propagou para os metadados de armazenamento e o dispositivo inicializou com um erro indicando “dados corrompidos”. O dispositivo exigiu reparo/regravação para retornar a um estado utilizável (soft-brick).
- Ressalva importante: esse comportamento foi destrutivo e não determinístico; o PoC produziu corrupção e perda de dados em vez de uma primitiva confiável de execução de código. O pesquisador parou os testes após observar o comportamento destrutivo — o objetivo era verificar o impacto, não desenvolver um exploit funcional.
7. Divulgação responsável e contato
Este projeto segue princípios de divulgação responsável. Se você é um fornecedor, mantenedor ou contato de segurança e precisa de artefatos diagnósticos adicionais não acionáveis (backtraces completos, logs sanitizados ou dumps forenses) para validar ou remediar o problema, entre em contato com o proprietário do repositório por um canal seguro. Abordagens preferenciais incluem:
- abrir uma issue privada no GitHub e indicar um canal de comunicação seguro, ou
- contato direto por e-mail criptografado com PGP (forneça sua chave pública ou solicite a chave do pesquisador).
O pesquisador cooperará com fornecedores/mantenedores validados e compartilhará material diagnóstico adicional sob termos seguros e apropriados. Etapas de reprodução reproduzíveis não serão publicadas publicamente.
8. Aviso legal e ético
- Este repositório é fornecido como está apenas para fins de pesquisa, educacionais e defensivos.
- O autor não endossa uso malicioso e se isenta de responsabilidade por qualquer uso indevido.
- Não use os materiais contidos em sistemas que você não possui ou administra.
- Sempre siga as leis aplicáveis, políticas institucionais e processos de divulgação coordenada do fornecedor.