Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/g4sp4rcs/cve-2026-97798-exploit
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoPós-ExploraçãoRed TeamingDesenvolvimento de Payloads
GitHubg4sp4rcs/cve-2026-97798-exploit

CVE-2026-97798-exploit

CVE-2026-97798 Windows Error Reporting - Injeção de Comando para SYSTEM

Ver Repositório
425há 7 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-97798 — Injeção de argumentos no Windows Error Reporting para SYSTEM

[!WARNING] Este repositório destina-se a pesquisa de vulnerabilidades autorizada e validação em laboratório controlado. A prova de conceito falha de forma segura quando não consegue identificar exatamente uma implementação compatível de faultrep.dll!SpawnDataCollector.

CVE-2026-97798 é uma vulnerabilidade local de elevação de privilégios no caminho de Time Travel Debugging do Windows Error Reporting (WER). Um chamador sem privilégios pode preservar sintaxe de linha de comando controlada pelo atacante através da fronteira de privilégios do WER. O coletor elevado posteriormente concatena essa entrada numa linha de comando de TTTracer.exe sem preservar os limites dos argumentos. Os switches injetados -out e -launch são, portanto, interpretados pelo gravador TTD como opções do gravador, permitindo que um executável escolhido pelo atacante seja lançado com o token elevado do coletor.

O PoC incluído num único ficheiro transforma essa primitiva numa shell interativa NT AUTHORITY\SYSTEM. Foi validado tanto a partir de uma conta de utilizador padrão como de uma conta de administrador de integridade média, filtrada pelo UAC.

Shell SYSTEM interativa

Vídeo

Conteúdo do repositório

CaminhoDescrição
src/CVE-2026-97798.cppCódigo-fonte completo do exploit em imagem única
bin/CVE-2026-97798.exeCompilação de laboratório x64 reproduzível
build.ps1Script de compilação determinístico LLVM-MinGW
assets/system-shell.pngProva de whoami capturada na VM isolada

Ainda não estão incluídos PDFs de relatório; o artigo completo ainda está a ser editado.

Causa raiz

O fluxo vulnerável atravessa vários componentes:

low/medium-integrity process
  -> faultrep.dll!CElevatedDataCollection::ControlTimeTravelDebugging
  -> faultrep.dll!SpawnDataCollector
  -> Windows Error Reporting service (elevated collector)
  -> CDataCollection::ControlTimeTravelDebugging
  -> TtdControl::LaunchRecordingProcess
  -> TTTracer.exe / TTDRecord.dll command-line parser
  -> attacker-controlled -launch target

A solicitação contém um valor Process que começa com um executável legítimo mas acrescenta opções TTD adicionais. A implementação vulnerável aplica uma blocklist fraca baseada em nome exato e, posteriormente, formata a string do processo diretamente na linha de comando privilegiada do gravador. Como o valor do processo não é serializado como um único argumento, seus espaços tornam-se delimitadores de argumentos quando o TTTracer analisa o resultado.

Conceitualmente, a porção injetada é:

Process=CVE-2026-97798-payload.exe
  -out ..\..\Users\Public\Documents\CVE97798\trace
  -launch ..\..\Users\Public\Documents\CVE97798\CVE-2026-97798-payload.exe
  --payload;

Os caminhos relativos são intencionais. O WER também incorpora esses dados num nome de caminho .ttdconfig; um prefixo de unidade absoluto introduz dois-pontos e falha com ERROR_INVALID_NAME. O caminho no estilo de travessia evita esse conflito de analisador enquanto normaliza para o diretório público controlado.

Trata-se de um problema de injeção de argumentos (CWE-88), não de uma injeção convencional de comando de shell. Não é necessário cmd.exe /c no sink vulnerável: o próprio TTTracer interpreta os switches injetados.

Design do PoC de ficheiro único

O uso normal requer apenas CVE-2026-97798.exe. A mesma imagem PE reentra em si mesma em vários modos internos:

  1. Analisa a tabela de exceções PE64 carregada e resolve faultrep.dll!SpawnDataCollector dinamicamente a partir da função única que contém o opcode do coletor WER e as invariantes do protocolo. Nenhum RVA específico da build é incorporado.
  2. Inicia o seu cliente de consola integrado e cria o seu estado de prova.
  3. Obtém o coletor WER elevado e submete o pedido TTD manipulado.
  4. O TTTracer lança a mesma imagem em modo payload.
  5. O payload expõe um cmd.exe real através de named pipes, permitindo que uma consola visível da sessão do utilizador interaja com um shell criado na sessão 0.

O artefacto distribuído continua a ser um único EXE. Em tempo de execução, prepara dois aliases dessa mesma imagem: um para a consola integrada e outro para o payload elevado. O alias do payload também é usado como alvo -onlaunch do TTTracer, para que o gravador observe o processo que realmente lança e termine quando essa curta fase de payload terminar. O PoC reinicia o estado TTD obsoleto antes de cada acionamento e novamente após um payload bem-sucedido, evitando que uma execução interrompida faça a execução seguinte falhar com HRESULT 0x80070032.

Para um utilizador padrão, o caminho do coletor elevado chega diretamente a SYSTEM. Para um administrador filtrado pelo UAC, o WER lança primeiro o payload com o token de administrador elevado associado — o nome da conta permanece inalterado, mas TokenIsElevated=true. O PoC reentra então na mesma imagem como SYSTEM. Tenta primeiro a criação direta de processo com token SYSTEM e usa uma entrada de Task Scheduler de curta duração como fallback; a tarefa de fallback é eliminada imediatamente após o lançamento.

Ambiente validado

ComponenteValor validado
SOWindows 11 24H2 x64, build 26100.9550
faultrep.dll vulnerável10.0.26100.9549
Comparação corrigidafaultrep.dll 10.0.26100.9711
TTTracer / TTDRecord1.11.580.0
Verificação do resolvedor dinâmico9549: RVA 0x4CEB0; 9711: RVA 0x4E40C
SHA-256 do PoCC7B8FAFB132D69E9BD5A398AE183107155129C7080A87D56EFE55572450B4147

O resolvedor percorre a tabela de exceções x64 e requer uma função com a configuração de frame grande do coletor, opcode de pedido 0xD0000002, tamanho da mensagem 0x578, timeout de espera 10000, e os seus três mapeamentos esperados de erros de espera/serviço. Foi verificado contra ambas as builds faultrep.dll fornecidas e testado negativamente contra imagens PE não relacionadas. Nenhum número de build ou RVA é armazenado. Se uma build futura alterar essa implementação o suficiente para tornar a correspondência ambígua ou incompleta, o PoC para antes de fazer uma chamada indireta.

Utilização

Use um snapshot descartável da build vulnerável. A partir de um PowerShell ou Command Prompt não elevado:

.\bin\CVE-2026-97798.exe

Em caso de sucesso, o console integrado exibe:

[CVE-2026-97798] Exploit shell token:
nt authority\system

A prova legível por máquina está escrita abaixo:

C:\Users\Public\Documents\CVE97798\system-proof.txt

O resolver também pode ser testado contra uma DLL x64 offline sem acionar a vulnerabilidade:

.\bin\CVE-2026-97798.exe --resolve C:\path\to\faultrep.dll

Para verificar previamente a DLL do sistema instalada, também sem acionar o caminho vulnerável:

.\bin\CVE-2026-97798.exe --preflight

Uma validação bem-sucedida de administrador filtrado produziu:

cve=CVE-2026-97798
user=NT AUTHORITY\SYSTEM
is_system=true
is_elevated=true
payload_session=0
shell_session=0
spawn_error=0

Compilação

Instale um toolchain x64 LLVM-MinGW e coloque x86_64-w64-mingw32-clang++.exe no PATH, ou passe o seu caminho absoluto explicitamente:

.\build.ps1

# or
.\build.ps1 -Compiler C:\toolchains\llvm-mingw\bin\x86_64-w64-mingw32-clang++.exe

A compilação é estática e suprime o timestamp do linker PE, portanto entradas idênticas de código-fonte e toolchain produzem o mesmo hash do executável.

Limpeza

Baixar ferramenta