
Driver kernel-mode Windows che blocca lo sfruttamento di CVE-2017-11882 intercettando la creazione di processi e negando i processi figlio malevoli generati da eqnedt32.exe.
Un driver Windows che neutralizza CVE-2017-11882 : )
Questo progetto è suddiviso in un driver kernel e un componente di notifica in modalità utente che comunicano attraverso un dispositivo personalizzato utilizzando il modello di chiamata invertita.
DriverEntry registra una callback PsSetCreateProcessNotifyRoutineEx in modo che il driver venga invocato in modo sincrono ad ogni creazione di processo a livello di sistema, prima che il nuovo processo inizi l'esecuzione.ZwOpenProcess e interroga ProcessImageFileName per recuperare il percorso NT completo. Un confronto con suffisso finale RtlCompareUnicodeString contro eqnedt32.exe decide se si tratta di un tentativo di sfruttamento.CreateInfo->CreationStatus = STATUS_ACCESS_DENIED. Questo è il metodo documentato per interrompere l'avvio di un processo dalla callback.L'agente utilizza due thread: un dispatcher I/O che esegue il ciclo di chiamata invertita con WaitForSingleObject + GetOverlappedResult, e un worker UI che genera avvisi e li visualizza con MessageBoxW. Gli handle sono gestiti da un piccolo wrapper RAII AutoHandle.
L'intera rilevazione si basa sul PID del padre riportato dal kernel. Un attaccante che chiama NtCreateUserProcess con PROC_THREAD_ATTRIBUTE_PARENT_PROCESS può ri-assegnare il payload a explorer.exe e evitare la rilevazione : )
Questa soluzione non rileva exploit avanzati che eseguono process injection o esecuzione di codice in memoria. Rileva solo l'exploit comune per questa CVE, che genera un nuovo processo (malevolo).