Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-52885 — Analyse technique de CVE-2026-52885 : une condition de course TOCTOU dans Notepad++ v8.9.6.2 permettant l'exécution arbitraire de commandes via un contournement de l'intégrité HMAC. Inclut la cause racine, le scénario d'attaque, le PoC et l'analyse du correctif. | Kitploit
Outils/GitHubGitHub/v3s9er/cve-2026-52885
Analyse des VulnérabilitésAnalyse de CodeExploitationAnalyse de BinairesArticles et RechercheApprentissage et Éducation
GitHubv3s9er/cve-2026-52885

CVE-2026-52885

Analyse technique de CVE-2026-52885 : une condition de course TOCTOU dans Notepad++ v8.9.6.2 permettant l'exécution arbitraire de commandes via un contournement de l'intégrité HMAC. Inclut la cause racine, le scénario d'attaque, le PoC et l'analyse du correctif.

Voir le dépôt
3il y a 27 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

TOCTOU : vérification HMAC sur disque, exécution depuis la mémoire

Notepad++ v8.9.6.2 — Exécution de UserCommand contrôlée par l'attaquant via une condition de course HMAC

Avis de sécurité

GHSAGHSA-qm4c-qg8p-qfcr
CVECVE-2026-52885
GravitéÉlevée
Affectév8.9.6.2
Corrigév8.9.6.4
Commit du correctif4f7563c
Fichier affectéPowerEditor/src/NppCommands.cpp :4328–4359
PlateformeWindows 11 Pro x64
Privilège requisUtilisateur standard (accès en écriture à shortcuts.xml)
Chercheurv3s9er
Divulgué2026-06-05

Résumé

Notepad++ v8.9.6.2 a introduit un contrôle d'intégrité HMAC-SHA256 sur shortcuts.xml pour empêcher l'injection d'entrées UserCommand arbitraires.

Le contrôle présente une faille TOCTOU : la HMAC est vérifiée contre le fichier sur disque au moment du déclenchement, mais la commande qui s'exécute est lue à partir du vecteur _userCommands en mémoire, chargé au démarrage. Ces deux sources ne sont jamais resynchronisées.

Un attaquant disposant d'un accès en écriture à shortcuts.xml peut y placer une commande malveillante avant le lancement, laisser Notepad++ la charger en mémoire, restaurer le fichier légitime sur le disque, puis déclencher la commande. La vérification HMAC réussit (le disque est propre), mais la charge utile malveillante s'exécute (la mémoire est obsolète).

Vue d'ensemble technique

Le mécanisme d'intégrité valide le shortcuts.xml actuellement sur disque, tandis que l'exécution des commandes utilise une représentation en mémoire chargée précédemment. Les deux sources de données étant indépendantes, un attaquant peut modifier le fichier avant le démarrage, le laisser être analysé en mémoire, puis restaurer le fichier d'origine avant l'exécution de la commande — ce qui permet à la vérification HMAC de réussir pendant que la charge utile malveillante s'exécute.

Cause racine

NppCommands.cpp lignes 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
OpérationSourceMoment
VÉRIFICATION (HMAC)Fichier sur disqueAu moment du déclenchement
UTILISATION (exécution)Vecteur mémoireChargé au démarrage
FENÊTREContrôlée par l'attaquantDémarrage → Déclenchement

Scénario d'attaque

Pré-condition : accès en écriture à shortcuts.xml

  • Installation portable : même répertoire que notepad++.exe
  • Installation standard : %AppData%\Notepad++\

Étapes :

  1. Écraser shortcuts.xml sur le disque avec une version malveillante (cmd = calc.exe)
  2. Lancer Notepad++ — _userCommands est rempli à partir du fichier malveillant
  3. Restaurer le shortcuts.xml légitime sur le disque — la HMAC correspond désormais à config.xml
  4. Envoyer WM_COMMAND(21000) (ID_USER_CMD+0) ou appuyer sur Ctrl+Alt+P
  5. La vérification HMAC lit le fichier légitime depuis le disque → RÉUSSIT
  6. L'exécution lit _userCommands[0] depuis la mémoire → calc.exe s'exécute

Résultat : exécution de commandes contrôlées par l'attaquant avec les privilèges de l'utilisateur courant. Pas d'admin, pas d'UAC, pas d'avertissement utilisateur.

Chronologie de l'exécution

TempsÉvénementÉtat
T+0.0sL'attaquant écrit un shortcuts.xml MALVEILLANTdisk=MALICIOUS
T+0.0sL'attaquant lance Notepad++disk=MALICIOUS
T+0.1sNotepad++ lit shortcuts.xml → _userCommands[0]="calc.exe"mem=MALICIOUS
T+4.2sNotepad++ entièrement chargémem=MALICIOUS
T+4.2sL'attaquant restaure le shortcuts.xml LÉGITIMEdisk=LEGIT / mem=MAL
T+4.7sL'attaquant envoie WM_COMMAND(21000)
T+4.7sVérification HMAC : lit le fichier LÉGITIME depuis le disque → RÉUSSITVÉRIFICATION OK
T+4.7sExécution : lit _userCommands[0] depuis la MÉMOIRE → calc.exeEXPLOITATION
T+4.7scalc.exe lancé (PID 35932)CONFIRMÉ

Impact

TypeExécution arbitraire de commandes
Admin requisNon
Invite UACNon
DétectabilitéFaible — le disque présente un fichier légitime en permanence ; la charge utile n'existe qu'en mémoire
CVSS (est.)AV:L / AC:H / PR:L / UI:N / S:U / C:H / I:H / A:H

Preuve de concept

Voir poc_8962_toctou.ps1.

Prérequis :

  • Notepad++ v8.9.6.2 portable x64
  • doLocalConf.xml présent dans le répertoire de Notepad++ (mode portable)
  • config.xml avec une HMAC valide pour le shortcuts.xml légitime
root@kitploit:~
.\poc_8962_toctou.ps1 -NppPath "C:\path\to\notepad++.exe"

Vérifié : calc.exe lancé (PID 35932), le disque présente un shortcuts.xml légitime en permanence.

Analyse du correctif

Le correctif (commit 4f7563c) déplace la validation HMAC au démarrage, en même temps que l'analyse initiale du fichier. La vérification et l'utilisation opèrent désormais sur le même objet au même moment, ce qui élimine la fenêtre TOCTOU.

v8.9.6.2 (vulnérable)v8.9.6.4 (corrigé)
Vérification HMACAu moment du déclenchement, relit le disqueAu démarrage, mêmes octets que lors de l'analyse
Source de la commandeMémoire chargée au démarrageMémoire validée au démarrage
Fenêtre TOCTOUDémarrage → DéclenchementÉliminée

Références

  • GHSA-qm4c-qg8p-qfcr
  • Commit du correctif 4f7563c
  • Version v8.9.6.4 de Notepad++
Télécharger l’outil