
Prova de conceito demonstrando um use-after-free em cldflt.sys (CVE-2025-62221) que permite escalonamento local de privilégios para SYSTEM via preparação do pool do kernel e roubo de token.
DEMONSTRAÇÃO Prova de Conceito: Inconsistência Temporal de Memória em cldflt.sys (CVE-2025-62221) CVE-2025-62221:
Este repositório fornece uma análise técnica abrangente e uma demonstração de Prova de Conceito (PoC) sobre um vetor de escalada de privilégio vertical. A vulnerabilidade é identificada como uma primitiva Use-After-Free (UAF) localizada no Windows Cloud Files Mini Filter Driver (cldflt.sys). Esta documentação detalha os mecanismos pelos quais uma entidade não privilegiada em modo de usuário pode transitar para um contexto de segurança Ring 0 (NT AUTHORITY\SYSTEM).
A vulnerabilidade CVE-2025-62221 decorre de uma falha crítica no gerenciamento temporal dos ciclos de vida de objetos de memória no subsistema executivo em modo kernel do Windows. Especificamente, o driver cldflt.sys não implementa contagem de referência atômica durante o processamento de solicitações de E/S assíncronas para reparse points baseados em nuvem. Ao orquestrar uma condição de corrida não determinística por meio de rotinas de despacho Input/Output Control (IOCTL) malformadas, um ator local pode induzir um cenário de ponteiro pendente. Esse estado permite a preparação do pool do kernel, facilitando primitivas de escrita arbitrária e a subsequente substituição de tokens de segurança.
A metodologia de exploração é estruturada em várias fases discretas:
O procedimento começa com uma auditoria do ambiente kernel alvo para verificar a presença do módulo cldflt.sys. Ele também calcula os deslocamentos (offsets) necessários para a estrutura EPROCESS e campos de token de segurança associados, relativos à compilação específica do Windows em operação.
O exploit cria uma série de estruturas de diretório esparsas e baseadas em nuvem. Essas estruturas servem como a principal superfície de interação para o driver de filtro, permitindo que o manipulador influencie os padrões de alocação dentro do Pool de Kernel Não Paginável (Non-Paged Kernel Pool).
Através do despacho de solicitações de E/S concorrentes e malformadas, o exploit induz um estado assíncrono no qual um objeto de memória é desalocado enquanto uma referência ativa persiste na pilha de execução do driver.
Uma técnica de Heap Spraying é utilizada para ocupar o slot de memória recentemente desocupado. O exploit povoa o pool com estruturas de dados controladas, efetivamente transformando a condição "Use-After-Free" em uma "Type Confusion" ou "Controlled Pointer Overwrite".
Após o sequestro bem-sucedido da execução em modo kernel, o payload executa uma operação de Token Stealing (roubo de token). Ele identifica o processo SYSTEM (PID 4) e replica seu token de acesso primário no descritor de segurança do processo do exploit.
[!CAUTION] Aviso Experimental: Esta pesquisa destina-se a validação acadêmica e auditoria formal de segurança em modo kernel. A implementação inadequada pode resultar em uma Verificação de Erro do Kernel (BSOD) ou corrupção do sistema de arquivos. Todos os testes devem ser conduzidos em um ambiente de hipervisor estritamente isolado.
Inicialize a topologia de rede:
sudo python3 topo.py
Abra terminais para os nós da nuvem e do usuário:
xterm cloud user
No terminal da nuvem, navegue até o diretório do projeto e inicie o servidor:
cd ~/Downloads/sps_test
python3 server.py
No terminal do usuário, execute o script de exploit automatizado (opcional):
python3 run_all.py
Alternativamente, execute cada fase manualmente para observação granular.
Execute os seguintes procedimentos sequencialmente no terminal do usuário para observar as transições de estado da memória:
Step 1 — Allocated FileObject | REF=ref-12345
python3 1.py
Step 2 — Object freed
python3 2.py
Step 3 — DANGLING REF
python3 3.py
Step 4 — Heap reuse
python3 4.py
Step 5 — Handler overwritten
python3 5.py
Step 6 — MALICIOUS HANDLER EXECUTED
python3 6.py
Nota: Após um pivô bem-sucedido na fase 6, o sistema executará a sequência de comandos maliciosos definida em malware.json. Você observará mensagens de execução no terminal da nuvem e receberá o comando malicioso no terminal do usuário.
A documentação e o código contidos neste repositório são fornecidos exclusivamente para o avanço da pesquisa em segurança cibernética. O autor não assume nenhuma responsabilidade por danos decorrentes do uso destas informações. O objetivo desta pesquisa é facilitar uma compreensão abrangente das vulnerabilidades do Mini Filter Driver e avaliar a eficácia das estratégias de mitigação existentes.
Referência: Microsoft Security Response Center (MSRC) - CVE-2025-62221
Feito para a Tarefa SPS UPB 2026
| Parâmetro | Especificação |
|---|
| Classe de Vulnerabilidade | Corrupção Temporal de Memória / Use-After-Free (CWE-416) |
| Subsistema Alvo | Windows Cloud Files Mini Filter (cldflt.sys) |
| Primitiva de Exploração | Preparação do Pool do Kernel (Kernel Pool Grooming) e Exfiltração de Token |
| Limite de Privilégio | Usuário para Kernel / Usuário Padrão para SYSTEM |
| Vetor CVSS v3.1 | AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H (Pontuação Base: 7.8) |
| Contexto Temporal | Identificado no Q4 2025; Patch de Correção Lançado em Janeiro de 2026 |
| Arquivo | Uso |
|---|
| topo.py | Script de orquestração do Mininet definindo o limite de rede |
| server.py | Serviço simulado do driver cldflt.sys incorporando a lógica UAF |
| run_all.py | Script de exploração automatizado para testes eficientes |
| user.py | Script de exploração automatizado alternativo |
| 1.py através de 6.py | Estágios de exploração discretos fornecidos para análise técnica granular |
| malware.json | Payload malicioso utilizado para demonstrar a primitiva de execução de código : Payload malicioso utilizado para demonstrar a primitiva de execução de código |