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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-52885 — Análise técnica do CVE-2026-52885: uma condição de corrida TOCTOU no Notepad++ v8.9.6.2 que permite execução arbitrária de comandos por meio de bypass de integridade HMAC. Inclui causa raiz, cenário de ataque, PoC e análise de patch. | Kitploit
Ferramentas/GitHubGitHub/v3s9er/cve-2026-52885
Análise de VulnerabilidadesAnálise de CódigoExploraçãoAnálise de BináriosPapers e PesquisaAprendizado e Educação
GitHubv3s9er/cve-2026-52885

CVE-2026-52885

Análise técnica do CVE-2026-52885: uma condição de corrida TOCTOU no Notepad++ v8.9.6.2 que permite execução arbitrária de comandos por meio de bypass de integridade HMAC. Inclui causa raiz, cenário de ataque, PoC e análise de patch.

Ver Repositório
9há 1 mêsAinda não revisado

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

TOCTOU: HMAC Verifica o Disco, Executa a Partir da Memória

Notepad++ v8.9.6.2 — Execução de UserCommand Controlada pelo Atacante via Condição de Corrida no HMAC

Aviso

GHSAGHSA-qm4c-qg8p-qfcr
CVECVE-2026-52885
GravidadeAlta
Afetadov8.9.6.2
Corrigidov8.9.6.4
Commit do Patch4f7563c
Arquivo AfetadoPowerEditor/src/NppCommands.cpp :4328–4359
PlataformaWindows 11 Pro x64
Privilégio NecessárioUsuário padrão (acesso de escrita ao shortcuts.xml)
Pesquisadorv3s9er
Divulgado2026-06-05

Resumo

O Notepad++ v8.9.6.2 introduziu uma verificação de integridade HMAC-SHA256 no shortcuts.xml para impedir a injeção de entradas arbitrárias de UserCommand.

A verificação apresenta uma falha de TOCTOU: o HMAC é verificado contra o arquivo em disco no momento do acionamento, mas o comando que é executado é lido do vetor _userCommands em memória carregado na inicialização. Essas duas fontes nunca são ressincronizadas.

Um atacante que possa gravar no shortcuts.xml pode plantar um comando malicioso antes da inicialização, deixar o Notepad++ carregá-lo na memória, restaurar o arquivo legítimo no disco e então acionar o comando. A verificação HMAC é aprovada (o disco está limpo), mas a carga maliciosa é executada (a memória está desatualizada).

Visão Técnica

O mecanismo de integridade valida o shortcuts.xml atual em disco, enquanto a execução de comandos usa uma representação em memória carregada anteriormente. Como as duas fontes de dados são independentes, um atacante pode alterar o arquivo antes da inicialização, permitir que ele seja parseado na memória e restaurar o arquivo original antes da execução do comando — fazendo com que a verificação HMAC seja aprovada enquanto a carga maliciosa é executada.

Causa Raiz

NppCommands.cpp linhas 4328–4359:

// TIME OF CHECK — reads on-disk file
std::string currentHMAC = computeHMAC(
    getMachineGUID(),
    getFileContent(nppParams.getShortcutsPath().c_str())
);
if (currentHMAC != nppGUI._shortcutsXmlHmacInConfig) { return; }
// validated against DISK

// TIME OF USE — reads in-memory vector (loaded at startup, never refreshed)
int i = id - ID_USER_CMD;
const vector<UserCommand>& cmds = nppParams.getUserCommandList();
UserCommand ucmd = cmds[i];
Command cmd(string2wstring(ucmd.getCmd(), CP_UTF8));
cmd.run(_pPublicInterface->getHSelf()); // executes payload from MEMORY
OperaçãoOrigemMomento
VERIFICAÇÃO (HMAC)Arquivo em discoNo momento do acionamento
USO (exec)Vetor em memóriaCarregado na inicialização
LACUNAControlado pelo atacanteInicialização → Acionamento

Cenário de Ataque

Pré-condição: acesso de escrita ao shortcuts.xml

  • Instalação portátil: mesmo diretório do notepad++.exe
  • Instalação padrão: %AppData%\Notepad++\

Passos:

  1. Sobrescreva o shortcuts.xml em disco com uma versão maliciosa (cmd = calc.exe)
  2. Inicie o Notepad++ — _userCommands é preenchido a partir do arquivo malicioso
  3. Restaure o shortcuts.xml legítimo para o disco — o HMAC agora corresponde ao config.xml
  4. Envie WM_COMMAND(21000) (ID_USER_CMD+0) ou pressione Ctrl+Alt+P
  5. A verificação HMAC lê o arquivo legítimo do disco → APROVADA
  6. A execução lê _userCommands[0] da memória → calc.exe é executado

Resultado: execução de comandos controlados pelo atacante sob os privilégios do usuário atual. Sem admin, sem UAC, sem aviso ao usuário.

Linha do Tempo da Execução

TempoEventoEstado
T+0.0sAtacante escreve shortcuts.xml MALICIOSOdisco=MALICIOSO
T+0.0sAtacante inicia o Notepad++disco=MALICIOSO
T+0.1sNotepad++ lê shortcuts.xml → _userCommands[0]="calc.exe"mem=MALICIOSO
T+4.2sNotepad++ totalmente carregadomem=MALICIOSO
T+4.2sAtacante restaura o shortcuts.xml LEGÍTIMOdisco=LEGÍTIMO / mem=MAL
T+4.7sAtacante envia WM_COMMAND(21000)
T+4.7sVerificação HMAC: lê arquivo LEGÍTIMO do disco → APROVADAVERIFICAÇÃO OK
T+4.7sExec: lê _userCommands[0] da MEMÓRIA → calc.exeEXPLORAÇÃO
T+4.7scalc.exe iniciado (PID 35932)CONFIRMADO

Impacto

TipoExecução Arbitrária de Comandos
Admin NecessárioNão
Solicitação UACNão
DetectabilidadeBaixa — o disco exibe o arquivo legítimo durante todo o processo; a carga útil está apenas em memória
CVSS (estimado)AV:L / AC:H / PR:L / UI:N / S:U / C:H / I:H / A:H

Prova de Conceito

Veja poc_8962_toctou.ps1.

Requisitos:

  • Notepad++ v8.9.6.2 portátil x64
  • doLocalConf.xml presente no diretório do Notepad++ (modo portátil)
  • config.xml com um HMAC válido para o shortcuts.xml legítimo
.\poc_8962_toctou.ps1 -NppPath "C:\path\to\notepad++.exe"

Verificado: calc.exe iniciado (PID 35932), o disco exibe o shortcuts.xml legítimo durante todo o processo.

Análise do Patch

A correção (commit 4f7563c) move a validação HMAC para a inicialização, junto com o parse inicial do arquivo. A verificação e o uso agora operam no mesmo objeto ao mesmo tempo, eliminando a janela de TOCTOU.

v8.9.6.2 (vulnerável)v8.9.6.4 (corrigido)
Verificação HMACNo acionamento, relê o discoNa inicialização, mesmos bytes do parse
Origem do comandoMemória carregada na inicializaçãoMemória validada na inicialização
Janela TOCTOUInicialização → AcionamentoEliminada

Referências

  • GHSA-qm4c-qg8p-qfcr
  • Commit do patch 4f7563c
  • Lançamento do Notepad++ v8.9.6.4
Baixar ferramenta