Klingt komisch und irgendwie Zusammenhangslos, aber es geht: Mit einem Bug im Win32k.sys Modul von Windows kann man Windows hacken … zumindest, wenn man der Man-in-the-middle (z.B. ein Arbeitskollege) ist.
Die Lücke erlaubt einem Angreife eine Privilege Escalation, also die Aneignung von höheren Rechten.
Funktionsweise der Lücke
(dieser Abschnitt ist sehr technisch und ich garantiere für keinerlei Richtigkeit)
Der Fehler lag in der Funktion xxxEnableWndSBArrows
, die eine Windows-Scrollbar aktiviert oder deaktiviert. Diese Funktion ruft unter anderem die Funktion xxxDrawScrollbar
, in der das Assembler Unterprogramm redraw_the_scrollbar
existiert. Dieses Unterprogramm ist im Prinzip ein Dead-Code, denn er wird normalerweise nie ausgeführt. Wenn man jedoch im Integer Wert WSBflags
aus der typedef struct tagSBINFO
die Bits 3 und 4 auf 0 setzt (also ...1110011b
), dann wird dieser Dead-Code doch ausgeführt. Dies allein ist nicht schlimm, doch wenn man z.B. die Größe eines Buffers erhöhen würde, würde das anders aussehen.
Dies ist mit der Struktur struct typedef tagPROPLIST
möglich. Sowohl die tagPROPLIST
als auch die tagSBINFO
sind dem Desktop-Head zugeordnet, dies ist für später wichtig. Auch wichtig: Immer, wenn man einen Eintrag in die properties hinzufügt, wird der Speicher neu zugeordnet. Wenn man nun durch das erhöhen des ersten DWORDS
(cEntries
) in der tagPROPLIST
die Größe des Buffers erhöht, bis dieser an den Speicherbereich von tagSBINFO
heranreicht, kann man einen Buffer-Overflow erzeugen, was im Prinzip die Sicherheitslücke aus macht.
Alle Windows Versionen betroffen
Der oben beschriebene dead-code existiert seit ca. 15 Jahren, diese Lücke existiert also auch schon 15 Jahre.
Neben dem technical preview von Windows 10 sind also alle Windows Versionen ab XP betroffen. Für Versionen, die noch unterstützt werden (Vista und neuer) wurde die Lücke im Februar-Patch behoben. Für XP bleibt diese Lücke jedoch bestehen.
Pingback: Sicherheitslücken plagen Android - [curi0sity]
Pingback: Kritisches Sicherheitsupdate außer der Reihe - [curi0sity]