
Einfacher IOCTL-Dispatcher für CVE-2018-8060/8061
Beschreibung:
Der HWiNFO AMD64-Kerneltreiber Version 8.98 und niedriger erlaubt unprivilegierten Benutzern, IOCTLs an den Gerätetreiber zu senden. Wenn Eingabe- und/oder Ausgabepufferzeiger null sind oder wenn die Daten dieser Puffer ungültig sind, tritt ein Null-/Ungültiger-Zeiger-Fehler auf, was zu einem Windows-Kernel-Panik, auch bekannt als Blue Screen, führt.
POC:
Ein unprivilegierter Benutzer sendet einige IOCTLs an das symbolische Gerät "HWiNFO32", die höher als 0x85FE2600 sind, mit beliebigen Ein-/Ausgabepufferdaten, was zu einer Zeigerdereferenzierung im Bereich des Gerätetreibers führt; dies verursacht eine Kernel-Panik. In einigen Fällen führt dies zu CWE-476 (NULL-Pointer-Dereferenzierung) oder CWE-781 (Unzureichende Adressvalidierung bei IOCTL mit METHOD_NEITHER I/O-Steuercode).
Beschreibung:
Der HWiNFO AMD64-Kerneltreiber Version 8.98 und niedriger erlaubt unprivilegierten Benutzern, spezielle IOCTLs an den Gerätetreiber zu senden, was zu direktem physischem Speicherlesen oder -schreiben führt.
POC:
Ein unprivilegierter Benutzer sendet spezielle IOCTLs, z.B. 0x85FE2608, an das symbolische Gerät "HWiNFO32", wobei der Eingabepuffer (Benutzerebene) eine physische Speicheradresse, eine Größe und eine virtuelle Speicheradresse enthält. Dies führt dazu, dass der Treiber den physischen Speicher abbildet und liest und seinen Inhalt in die virtuelle Adresse kopiert.
Die Datei 8061.data ist wie folgt formatiert: