Entwickler fast aller PC-Betriebssysteme, inklusive Windows, macOS, Linux und FreeBSD, haben auf Grund eines Missverständnisses einen Fehler in ihren Code eingebaut, über den ein lokaler Angreifer Kernel-Speicher auslesen und unter Umständen manipulieren kann. Das könnte zum Ausführen bösartigen Codes mit Systemrechten führen. Die Entwickler hatten, unabhängig voneinander, Anweisungen in der Chipset-Dokumentation von Intel missverstanden. Updates stehen unter anderem für Windows, macOS, den Linux-Kernel (via SUSE, Red Hat und Ubuntu), FreeBSD, DragonFly BSD und die Hypervisor von Xen und VMware bereit.

Das Problem hat seinen Ursprung in einem Speicherverwaltungsfehler (CVE-2018-8897). Die Entwickler der verschiedenen Betriebssysteme hatten die Dokumentation von Intel missverstanden, die den CPU-Befehl POP SS beschreibt. Dieser schreibt die Speicher-Position des Stacks eines gerade laufenden Programms in das Stack Segment Register (SS) der CPU. Das ist Teil des Mechanismus, mit dem moderne Betriebssysteme im Hintergrund mit Speicher-Segmentierung umgehen.

Stack-Manipulationen

Die CPU sollte POP SS eigentlich so ausführen, dass der Stack niemals wiedersprüchliche Informationen enthalten kann – selbst wenn der Vorgang durch einen Interrupt unterbrochen wird. Clevere Sicherheitsforscher haben nun allerdings einen Trick gefunden, mit dem sie die CPU so manipulieren können, dass diese Daten aus einem Userspace-Programm in den Speicher des Kernels lädt.

Dazu setzen sie in ihrem Programm einen Debug-Punkt in dessen Stack und führen dann einen Interrupt herbei. Die Betriebssystem-Entwickler waren allesamt auf Grund der Intel- und AMD-Dokumentation davon ausgegangen, dass der Interrupt Handler der CPU in seiner Arbeit selbst nicht unterbrochen werden kann. Der Debug-Punkt bringt diesen allerdings aus dem Tritt, womit die OS-Entwickler nicht gerechnet hatten. Das führt dazu, dass der Betriebssystem-Kernel auf einmal mit Daten aus dem Userspace-Programm eines potenziellen Angreifers hantiert, weil es die Debugging Exception des Programms im Kontext des Kernels ausführt.

Gefährliche Konsequenzen

Auf Intel-Systemen kann der Angreifer so unter Umständen einen Pointer des Interrup Handlers (GSBASE) kontrollieren. Auf AMD-Systemen hat er zusätzlich Kontrolle über den Stack Pointer (SP). Versucht ein Angreifer diese Sicherheitslücke auszunutzen, führt das in den meisten Fällen zu einem Absturz des Kernels. Trotzdem besteht die Gefahr, dass sich die Lücke ausnutzen lässt, um Kernel-Speicher auszulesen oder gar Code mit Systemrechten auszuführen.

Eine ausführliche Beschreibung des Sicherheitslücke findet sich in der Veröffentlichung der beiden Sicherheitsforscher Nick Peterson und Nemanja Mulasmajic, die die Lücke entdeckt haben. Das CERT der Carnegie Mellon Universität in den USA hat eine eine Liste der verfügbaren Updates bereitgestellt. (fab)