Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/v3s9er/cve-2026-52885
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónAnálisis de BinariosPapers e InvestigaciónAprendizaje y Educación
GitHubv3s9er/cve-2026-52885

CVE-2026-52885

Análisis técnico de CVE-2026-52885: una condición de carrera TOCTOU en Notepad++ v8.9.6.2 que permite ejecución arbitraria de comandos mediante un bypass de integridad HMAC. Incluye la causa raíz, escenario de ataque, PoC y análisis de parche.

Ver Repositorio
hace 7 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

TOCTOU: Verificación HMAC en Disco, Ejecuta desde Memoria

Notepad++ v8.9.6.2 — Ejecución de Comandos de Usuario Controlados por Atacante mediante Condición de Carrera HMAC

Aviso

GHSAGHSA-qm4c-qg8p-qfcr
CVECVE-2026-52885
SeveridadAlta
Afectadov8.9.6.2
Corregidov8.9.6.4
Commit de parche4f7563c
Archivo afectadoPowerEditor/src/NppCommands.cpp :4328–4359
PlataformaWindows 11 Pro x64
Privilegio requeridoUsuario estándar (acceso de escritura a shortcuts.xml)
Investigadorv3s9er
Divulgado2026-06-05

Resumen

Notepad++ v8.9.6.2 introdujo una verificación de integridad HMAC-SHA256 en shortcuts.xml para prevenir la inyección de entradas UserCommand arbitrarias.

La verificación tiene una falla TOCTOU: el HMAC se verifica contra el archivo en disco en el momento del disparo, pero el comando que se ejecuta se lee del vector _userCommands en memoria cargado al inicio. Estas dos fuentes nunca se vuelven a sincronizar.

Un atacante que pueda escribir en shortcuts.xml puede plantar un comando malicioso antes del inicio, dejar que Notepad++ lo cargue en memoria, restaurar el archivo legítimo en disco y luego disparar el comando. La verificación HMAC pasa (disco limpio), pero la carga maliciosa se ejecuta (memoria obsoleta).


Descripción Técnica

El mecanismo de integridad valida el shortcuts.xml actual en disco, mientras que la ejecución del comando utiliza una representación en memoria cargada previamente. Debido a que las dos fuentes de datos son independientes, un atacante puede alterar el archivo antes del inicio, permitir que se analice en memoria, luego restaurar el archivo original antes de la ejecución del comando — provocando que la verificación HMAC pase mientras la carga maliciosa se ejecuta.


Causa Raíz

NppCommands.cpp líneas 4328–4359:

root@kitploit:~
// TIEMPO DE VERIFICACIÓN — lee el archivo en disco
std::string currentHMAC = computeHMAC(
    getMachineGUID(),
    getFileContent(nppParams.getShortcutsPath().c_str())
);
if (currentHMAC != nppGUI._shortcutsXmlHmacInConfig) { return; }
// validado contra DISCO

// TIEMPO DE USO — lee el vector en memoria (cargado al inicio, nunca actualizado)
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()); // ejecuta carga desde MEMORIA
OperaciónFuenteMomento
VERIFICACIÓN (HMAC)Archivo en discoEn el momento del disparo
USO (ejecución)Vector en memoriaCargado al inicio
VENTANAControlada por atacanteInicio → Disparo

Escenario de Ataque

Precondición: acceso de escritura a shortcuts.xml

  • Instalación portátil: mismo directorio que notepad++.exe
  • Instalación estándar: %AppData%\Notepad++\

Pasos:

  1. Sobrescribir shortcuts.xml en disco con una versión maliciosa (cmd = calc.exe)
  2. Iniciar Notepad++ — _userCommands se puebla desde el archivo malicioso
  3. Restaurar el shortcuts.xml legítimo en disco — ahora HMAC coincide con config.xml
  4. Enviar WM_COMMAND(21000) (ID_USER_CMD+0) o presionar Ctrl+Alt+P
  5. La verificación HMAC lee el archivo legítimo desde disco → PASA
  6. La ejecución lee _userCommands[0] desde memoria → calc.exe se ejecuta

Resultado: ejecución de comandos controlados por atacante bajo los privilegios del usuario actual. Sin administrador, sin UAC, sin advertencia al usuario.


Cronología de Ejecución


Impacto


Prueba de Concepto

Ver poc_8962_toctou.ps1.

Requisitos:

  • Notepad++ v8.9.6.2 portátil x64
  • doLocalConf.xml presente en el directorio de Notepad++ (modo portátil)
  • config.xml con un HMAC válido para el shortcuts.xml legítimo
root@kitploit:~
.\poc_8962_toctou.ps1 -NppPath "C:\ruta\a\notepad++.exe"

Verificado: calc.exe generado (PID 35932), el disco muestra shortcuts.xml legítimo durante todo el proceso.


Análisis del Parche

La corrección (commit 4f7563c) mueve la validación HMAC al inicio, junto con el análisis inicial del archivo. La verificación y el uso ahora operan sobre el mismo objeto al mismo tiempo, eliminando la ventana TOCTOU.

v8.9.6.2 (vulnerable)v8.9.6.4 (corregido)
Verificación HMACEn el momento del disparo, relee el discoAl inicio, mismos bytes que el análisis
Fuente del comandoMemoria cargada al inicioMemoria validada al inicio
Ventana TOCTOU

Referencias

  • GHSA-qm4c-qg8p-qfcr
  • Commit del parche 4f7563c
  • Versión Notepad++ v8.9.6.4
Descargar herramienta
TiempoEventoEstado
T+0.0sAtacante escribe shortcuts.xml MALICIOSOdisco=MALICIOSO
T+0.0sAtacante inicia Notepad++disco=MALICIOSO
T+0.1sNotepad++ lee shortcuts.xml → _userCommands[0]="calc.exe"mem=MALICIOSO
T+4.2sNotepad++ completamente cargadomem=MALICIOSO
T+4.2sAtacante restaura shortcuts.xml LEGÍTIMOdisco=LEGÍTIMO / mem=MAL
T+4.7sAtacante envía WM_COMMAND(21000)
T+4.7sVerificación HMAC: lee archivo LEGÍTIMO desde disco → PASAVERIFICACIÓN OK
T+4.7sEjecución: lee _userCommands[0] desde MEMORIA → calc.exeEXPLOTACIÓN
T+4.7scalc.exe generado (PID 35932)CONFIRMADO
TipoEjecución de Comandos Arbitrarios
Requiere AdminNo
Solicitud UACNo
DetectabilidadBaja — el disco muestra el archivo legítimo durante todo el proceso; la carga está solo en memoria
CVSS (est.)AV:L / AC:H / PR:L / UI:N / S:U / C:H / I:H / A:H
Inicio → Disparo
Eliminada