Gewiefte Angreifer können drei kritische Schwachstellen im X-Server von X.org ausnutzen, um eigene Befehle auszuführen.
Der X-Server von X.org übernimmt auf Linux-Systemen die Anzeige von grafischen Benutzeroberflächen auf dem Bildschirm. Er verwaltet die Anzeige von Fenstern und nimmt Eingaben von Maus und Tastatur entgegen. Daneben übernimmt er die Bildschirmdarstellung und zeigt transparent die Bildschirmausgaben von Anwendungen auf entfernten Systemen an. Dazu benutzt er das Protokoll X Windows System oder kurz X11.
Die Komponente Xwayland erlaubt es X-Anwendungen, das Wayland-Display-Server-Protokoll unter Linux zu nutzen, ohne sie vollständig migrieren zu müssen. Es handelt sich quasi um eine Brücke, die die Interoperabilität zwischen älteren X-Anwendungen und dem neueren Wayland-Protokoll ermöglicht. Sie wird immer wichtiger, da in Zukunft X11 deutlich weniger zum Einsatz kommt. Zum Beispiel stellt KDE Plasma im kommenden Major-Release 6.0 standardmäßig auf den vorgesehenen Nachfolger Wayland um. Das Gnome-Projekt plant ebenfalls, die Unterstützung für X11 schrittweise einzustellen.
Teilweise kritische Sicherheitslücken im X-Server von X.org und in Xwayland haben zur Folge, dass ein Angreifer höhere Rechte auf dem System erlangen und eine Denial-of-Service-Attacke ausführen kann. Insgesamt handelt es sich um drei verschiedene Schwachstellen [1].
Das erste kritische Problem entsteht aufgrund einer fehlerhaften Berechnung eines Offsets in einem Puffer für Kopieraktionen von Daten auf dem Heap via »memcpy()«. Dadurch kann der Angreifer Daten außerhalb vorgesehener Speichergrenzen schreiben. Das hat zur Folge, dass er höhere Rechte erlangen oder den X-Server zum Absturz bringen kann. Zum Beispiel führt das Voranstellen von drei Werten zu einer bestehenden X-Server-Eigenschaft mit fünf Werten zu einem allokierten Array der Größe 8, aber die vorhandenen fünf Werte werden an den Indizes 5 bis 10 geschrieben. Die Indizes 3 und 4 werden dagegen nicht initialisiert. Dadurch wird fälschlicherweise Speicher überschrieben. Auf diese Weise kann der Angreifer eigene Befehle einschleusen.
Das zweite kritische Problem betrifft das Paket xorg-x11-server-xvfb. Es enthält den X Virtual Framebuffer Server Xvfb. Xvfb ermöglicht das Ausführen von Anwendungen in einer virtuellen grafischen Umgebung ohne physischen Monitor. Das ist besonders nützlich, wenn man keine grafische Anzeige benötigt, beispielsweise bei Servern oder in automatisierten Szenarien. Aufgrund eines Programmierfehlers kann ein Angreifer einen Use-after-free-Fehler ausnutzen, um Befehle oder eine Denial-of-Service-Attacke auszuführen.
Diese Attacken greifen allerdings nur, wenn das System im Multi-Screen-Betrieb läuft. Diese Betriebsart des X-Servers bezeichnet man auch als Zaphod-Modus. Wenn der Speicherzeiger von einem Bildschirm zum Root-Fenster des anderen Bildschirms verschoben wird, kann der Enter-Leave-Code eine Referenz zum vorherigen Zeiger beibehalten. Das Zerstören dieses Fensters hinterlässt diese Referenz. Andere Fenster können dann einen Use-after-free-Fehler auslösen, wenn sie zerstört werden. Dieser Fehler lässt sich nur unter sehr spezifischen Bedingungen ausnutzen. Insbesondere erfordert er einen »XWarpPointer«-Aufruf und setzt voraus, dass der Zeiger niemals ein Client-Fenster auf dem anderen Bildschirm erreicht.
Die dritte, weniger kritische Schwachstelle entsteht ebenfalls aufgrund eines Use-after-free-Fehlers und lässt sich ebenfalls nur im Zaphod-Modus ausnutzen. Das Problem tritt hier im »DamageDestroy«-Code im Zusammenhang mit der Bildschirmbereinigung auf.
Bei Use-after-free-Schwachstellen handelt es sich um eine verbreitete Sicherheitslücke, bei der ein Programm auf freigegebenen Speicher zugreift. Das können Angreifer nutzen, um Schadcode einzufügen und das Programm oder System zu gefährden. Entwickler müssen sicherstellen, dass die Speicherfreigabe und der Speicherzugriff ordnungsgemäß erfolgen, um solche Schwachstellen zu verhindern.
Die Entwickler haben fehlerbereinigte Versionen der Pakete xorg-server (21.1.9) und xwayland (23.2.2) veröffentlicht.
Infos
- Schwachstellenbeschreibung: https://lists.x.org/archives/xorg-announce/2023-October/003430.html





