
Stapelbasierter Pufferüberlauf in MsIo64.sys, Proof-of-Concept für lokale Privilegienausweitung auf nt authority/system
Einfacher PoC zur Ausnutzung von CVE-2021-27965 für LPE durch Starten der System-Eingabeaufforderung.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27965
Ein Problem wurde im signierten MICSYS Windows-Treiber (MsIo64.sys) entdeckt, das zur Kompromittierung des gesamten lokalen Systems führen kann. Die IOCTL-Dispatch-Routine des Treibers leidet unter einem stackbasierten Pufferüberlauf in all IOCTL-Codes und verfügt zudem nicht über eine Überprüfung des vom Benutzer bereitgestellten Puffers.
Jeder kann einen Handle erstellen und IOCTL-Anfragen an diese IOCTL-Codes senden, die das Windows-Sicherheitsmodell durchbrechen:
Bei jedem IOCTL-Code greift der Treiber nicht direkt auf Irp->SystemBuffer zu, sondern verwendet eine memcpy-ähnliche Funktion, um Irp->SystemBuffer in den Stack-Frame-Puffer der aktuellen Funktion zu kopieren, der immer eine feste Größe hat (und verwendet dann diesen Puffer). Da sowohl Irp->SystemBuffer als auch Irp->CurrentStackLocation->InputBufferLength vom aufrufenden Prozess kontrolliert werden, könnte ein böswilliger Akteur einen ausreichend großen Puffer senden, um den im Stack-Frame der Funktion zu überlaufen. Hinweis: Obwohl in DriverEntry __security_init_cookie() vorhanden ist, fehlt in der IOCTL-Dispatch __security_check_cookie() aus irgendeinem Grund.
TODO
TODO