
Windows-Treiber im Kernel-Modus, der die Ausnutzung von CVE-2017-11882 blockiert, indem er die Prozesserstellung abfängt und bösartige untergeordnete Prozesse, die von eqnedt32.exe gestartet werden, verweigert.
Ein Windows-Treiber, der CVE-2017-11882 neutralisiert : )
Dieses Projekt besteht aus einem Kernel-Treiber und einer Benutzermodus-Benachrichtigungskomponente, die über ein benutzerdefiniertes Gerät unter Verwendung des Inverted-Call-Modells kommunizieren.
DriverEntry registriert einen PsSetCreateProcessNotifyRoutineEx-Callback, sodass der Treiber synchron bei jeder systemweiten Prozesserstellung aufgerufen wird, bevor der neue Prozess mit der Ausführung beginnt.ZwOpenProcess und fragt ProcessImageFileName ab, um den vollständigen NT-Pfad zu erhalten. Ein Vergleich des Dateinamens-Endes mit RtlCompareUnicodeString gegen eqnedt32.exe entscheidet, ob es sich um einen Exploit-Versuch handelt.CreateInfo->CreationStatus = STATUS_ACCESS_DENIED. Dies ist die dokumentierte Methode, um einen Prozessstart aus dem Callback abzubrechen.Der Agent verwendet zwei Threads: einen I/O-Dispatcher, der die Inverted-Call-Schleife mit WaitForSingleObject + GetOverlappedResult ausführt, und einen UI-Worker, der Warnungen einblendet und sie mit MessageBoxW anzeigt. Die Handles werden von einem kleinen RAII-AutoHandle-Wrapper verwaltet.
Die gesamte Erkennung basiert auf der vom Kernel gemeldeten übergeordneten PID. Ein Angreifer, der NtCreateUserProcess mit PROC_THREAD_ATTRIBUTE_PARENT_PROCESS aufruft, kann die Nutzlast an explorer.exe umhängen und so der Erkennung entgehen : )
Diese Lösung erkennt keine fortgeschrittenen Exploits, die Prozessinjektion oder speicherresidente Codeausführung durchführen. Sie erkennt nur den gängigen Exploit für diese CVE, der einen neuen (schädlichen) Prozess startet.