Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-52885 — Analisi tecnica di CVE-2026-52885: una race condition TOCTOU in Notepad++ v8.9.6.2 che consente l'esecuzione arbitraria di comandi tramite bypass dell'integrità HMAC. Include causa principale, scenario di attacco, PoC e analisi della patch. | Kitploit
Strumenti/GitHubGitHub/v3s9er/cve-2026-52885
Analisi delle VulnerabilitàAnalisi del CodiceExploitAnalisi di BinariPaper e RicercaApprendimento e Formazione
GitHubv3s9er/cve-2026-52885

CVE-2026-52885

Analisi tecnica di CVE-2026-52885: una race condition TOCTOU in Notepad++ v8.9.6.2 che consente l'esecuzione arbitraria di comandi tramite bypass dell'integrità HMAC. Include causa principale, scenario di attacco, PoC e analisi della patch.

Vedi Repository
327 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

TOCTOU: HMAC Checks Disk, Executes from Memory

Notepad++ v8.9.6.2 — Esecuzione di UserCommand controllata dall'attaccante tramite race condition HMAC

Advisory

GHSAGHSA-qm4c-qg8p-qfcr
CVECVE-2026-52885
SeverityAlta
Affectedv8.9.6.2
Patchedv8.9.6.4
Patch Commit4f7563c
Affected FilePowerEditor/src/NppCommands.cpp :4328–4359
PlatformWindows 11 Pro x64
Privilege RequiredUtente standard (accesso in scrittura a shortcuts.xml)
Researcherv3s9er
Disclosed2026-06-05

Riepilogo

Notepad++ v8.9.6.2 ha introdotto un controllo di integrità HMAC-SHA256 su shortcuts.xml per prevenire l'iniezione di voci UserCommand arbitrarie.

Il controllo presenta una falla TOCTOU: l'HMAC viene verificato sul file su disco al momento dell'attivazione, ma il comando che viene eseguito è letto dal vettore in memoria _userCommands caricato all'avvio. Queste due fonti non vengono mai risincronizzate.

Un attaccante con accesso in scrittura a shortcuts.xml può inserire un comando dannoso prima dell'avvio, lasciare che Notepad++ lo carichi in memoria, ripristinare il file legittimo su disco e quindi attivare il comando. Il controllo HMAC passa (il disco è pulito), ma il payload dannoso viene eseguito (la memoria è obsoleta).


Panoramica Tecnica

Il meccanismo di integrità valida l'attuale shortcuts.xml su disco, mentre l'esecuzione dei comandi usa una rappresentazione in memoria caricata in precedenza. Poiché le due fonti di dati sono indipendenti, un attaccante può modificare il file prima dell'avvio, consentirne l'analisi in memoria, quindi ripristinare il file originale prima dell'esecuzione del comando — facendo sì che il controllo HMAC passi mentre il payload dannoso viene eseguito.


Causa Radice

NppCommands.cpp righe 4328–4359:

root@kitploit:~
// 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
OperazioneSorgenteTempistica
CHECK (HMAC)File su discoAl momento dell'attivazione
USE (exec)Vettore in memoriaCaricato all'avvio
GAPControllato dall'attaccanteAvvio → Attivazione

Scenario di Attacco

Pre-condizione: accesso in scrittura a shortcuts.xml

  • Installazione portatile: stessa directory di notepad++.exe
  • Installazione standard: %AppData%\Notepad++\

Passaggi:

  1. Sovrascrivere shortcuts.xml su disco con una versione dannosa (cmd = calc.exe)
  2. Avviare Notepad++ — _userCommands viene popolato dal file dannoso
  3. Ripristinare il shortcuts.xml legittimo su disco — ora l'HMAC corrisponde a config.xml
  4. Inviare WM_COMMAND(21000) (ID_USER_CMD+0) o premere Ctrl+Alt+P
  5. Il controllo HMAC legge il file legittimo da disco → PASSA
  6. L'esecuzione legge _userCommands[0] dalla memoria → calc.exe viene eseguito

Risultato: esecuzione di comandi controllati dall'attaccante con i privilegi dell'utente corrente. Nessun admin, nessun UAC, nessun avviso per l'utente.


Cronologia dell'Esecuzione

TempoEventoStato
T+0.0sL'attaccante scrive shortcuts.xml DANNOSOdisco=DANNOSO
T+0.0sL'attaccante avvia Notepad++disco=DANNOSO
T+0.1sNotepad++ legge shortcuts.xml → _userCommands[0]="calc.exe"mem=DANNOSO
T+4.2sNotepad++ completamente caricatomem=DANNOSO
T+4.2sL'attaccante ripristina shortcuts.xml LEGITTIMOdisco=LEGITTIMO / mem=DANNOSO
T+4.7sL'attaccante invia WM_COMMAND(21000)
T+4.7sControllo HMAC: legge il file LEGITTIMO da disco → PASSACHECK OK
T+4.7sEsecuzione: legge _userCommands[0] dalla MEMORIA → calc.exeEXPLOIT
T+4.7scalc.exe avviato (PID 35932)CONFERMATO

Impatto

TipoEsecuzione Arbitraria di Comandi
Admin RichiestoNo
Prompt UACNo
RilevabilitàBassa — il disco mostra il file legittimo per tutto il tempo; il payload è solo in memoria
CVSS (stima)AV:L / AC:H / PR:L / UI:N / S:U / C:H / I:H / A:H

Proof of Concept

Vedere poc_8962_toctou.ps1.

Requisiti:

  • Notepad++ v8.9.6.2 portatile x64
  • doLocalConf.xml presente nella directory di Notepad++ (modalità portatile)
  • config.xml con un HMAC valido per il shortcuts.xml legittimo
root@kitploit:~
.\poc_8962_toctou.ps1 -NppPath "C:\path\to\notepad++.exe"

Verificato: calc.exe avviato (PID 35932), il disco mostra shortcuts.xml legittimo per tutto il tempo.


Analisi della Patch

La correzione (commit 4f7563c) sposta la validazione HMAC all'avvio, insieme all'analisi iniziale del file. Check e Use operano ora sullo stesso oggetto nello stesso momento, eliminando la finestra TOCTOU.

v8.9.6.2 (vulnerabile)v8.9.6.4 (corretto)
Controllo HMACAl momento dell'attivazione, rilegge il discoAll'avvio, stessi byte dell'analisi
Sorgente del comandoMemoria caricata all'avvioMemoria validata all'avvio
Finestra TOCTOUAvvio → AttivazioneEliminata

Riferimenti

  • GHSA-qm4c-qg8p-qfcr
  • Patch commit 4f7563c
  • Notepad++ v8.9.6.4 release
Scarica lo strumento