In XFree86 wurden vier Verwundbarkeiten entdeckt.
Das xterm-Paket stellt eine Terminal-Escapesequenz bereit, die den
Fenstertitel ausgibt, indem sie ihn in den Eingabepuffer des
Terminalfensters einfügt, genau so, als ob der Benutzer ihn eingetippt
hätte. Ein Angreifer kann eine Escapesequenz erstellen, die den Titel
des xterm-Fensters des Opfers auf einen beliebigen String setzt
(z.B. ein Shell-Kommando) und ihn dann ausgibt. Wenn das Opfer sich
in diesem Moment gerade am Shell-Prompt befindet, erscheint der String
auf der Kommandozeile, bereit, ausgeführt zu werden. Da es nicht
möglich ist, einen Zeilenumbruch in den Fenstertitel einzufügen, müsste
der Angreifer das Opfer noch dazu bringen, Enter zu drücken (oder auf
dessen Unachtsamkeit oder Verwirrung vertrauen), damit die Shell oder
ein anderer interaktiver Prozess dies als Benutzereingabe interpretiert. Es
ist jedoch denkbar, dass der Angreifer andere Escapesequenzen erzeugen
könnte, die das Opfer davon überzeugen könnten, den eingefügten String
zu akzeptieren. Das Common Vulnerabilities and Exposures
-Projekt auf
cve.mitre.org hat diesem Problem den Namen
CAN-2003-0063 zugewiesen.
Um festzustellen, ob Ihre xterm-Version durch einen Missbrauch der Fenstertitel-Ausgabe verwundbar ist, führen Sie das folgende Kommando an einem Shellprompt in einem xterm-Fenster aus:
echo -e "\e[21t"
(Die Terminalklingel könnte ertönen und der Fenstertitel könnte
ein l
vorangestellt haben.)
Dieser Fehler kann durch alles ausgenutzt werden, das eine Ausgabe an ein
Terminalfenster senden kann, wie ein Textdokument. Der xterm-Benutzer
muss jedoch selbst dafür sorgen, dass die Escapesequenz gesendet wird
(z.B. durch Betrachten des Textdokuments mit dem cat
-Kommando).
Ob Sie verwundbar sind, hängt davon ab, wie Sie xterm
benutzen. Erwägen Sie folgenden Ablauf:
echo -e '\e]2;s && echo rm -rf *\a' > /tmp/sploit echo -e '\e[21t' >> /tmp/sploit cat /tmp/sploit
Debian hat dieses Problem behoben, indem die Escapesequenz zur Ausgabe des Fenstertitels in xterm deaktiviert wurde; sie wird verstanden, aber ignoriert. Die Escapesequenz, um den Fenstertitel zu setzen, wurde nicht deaktiviert.
Ein zukünftiges Release des xterm-Pakets wird eine Konfigurationsoption bereitstellen, um dem Benutzer zu erlauben, die Ausgabe des Fenstertitels wieder zu aktivieren, diese wird jedoch in der Standardeinstellung aus sein.
Denial of Service)-Attacke durch DEC UDK-Escapesequenzen
Das xterm-Paket emuliert, da es DEC VT
-Textterminals emuliert,
eine Eigenschaft der DEC VT
-Terminals, die als Benutzerdefinierte Tasten
(User-Defined Keys
, Abkürzung UDK) bekannt ist. Es gibt jedoch einen Fehler
in der Behandlung von DEC UDK-Escapesequenzen durch xterm und durch eine
fehlerhafte kann der xterm-Prozess in eine Endlosschleife geraten. Dies
bringt den Prozess dazu durchzudrehen
, sinnlos CPU-Zyklen zu verbrauchen
und sich zu weigern, Signale zu verarbeiten (wie z.B. Versuche, den
Prozess auszulöschen oder das Fenster zu schließen).
Um festzustellen, ob Ihre Version von xterm durch diesen Angriff
verwundbar ist, führen Sie das folgende Kommando an einem Shell-Prompt
in einem opferbaren
Fenster aus (also einem, das nichts in seinem
Scrollback-Puffer hat, das Sie später noch sehen müssen):
echo -e "\eP0;0|0A/17\x9c"
Dieser Fehler kann durch alles ausgenutzt werden, das eine Ausgabe
an ein Terminal-Fenster senden kann, wie ein Textdokument. Der
xterm-Benutzer muss jedoch selbst dafür sorgen, dass die Escapesequenz
gesendet wird (z.B. durch Betrachten des Textdokuments mit dem
cat
-Kommando). Ob Sie verwundbar sind, hängt davon ab, wie Sie
xterm benutzen.
Debian hat dieses Problem gelöst, indem ein Patch für die Original-Quellen auf XFree86 4.1.0 zurück portiert wurde.
Shared-Memory-Segmente zu lesen und zu schreiben
Die meisten X-Server, die von der Beispielimplementierung von
MIT/X Consortium/X.org abstammen, wie auch die XFree86-X-Server,
unterstützen eine Erweiterung des X-Protokolls, genannt MIT-SHM. Diese
Erweiterung ermöglicht es X-Clients, die auf dem gleichen Rechner wie
der X-Server laufen, schneller und effizienter zu arbeiten, indem sie,
wenn möglich, von einer Eigenschaft des Betriebssystem profitieren,
genannt Shared Memory
. Der Linux-Kernel unterstützt z.B. Shared Memory.
Da der X-Server mit vielen Rechten läuft, greifen die
Zugriffskontrollmechanismen des Betriebssystems nicht und können die
Benutzung der gemeinsam genutzten Speichersegmente durch den X-Server
nicht überwachen. Der X-Server muss eigene Zugriffskontrollen
implementieren. Dies wurde in früheren Versionen von XFree86 (und
davor in der MIT/X Consortium/X.org Beispielimplementierung) nur
ungenügend getan. Dies ermöglicht es böswilligen X-Clients, Segmente
des gemeinsam genutzten Speichers zu lesen und zu verändern, auf die
sie eigentlich keinen Zugriff haben sollten. Das Common
Vulnerabilities and Exposures
-Projekt auf cve.mitre.org hat diesem
Problem den Namen
CAN-2002-0164 zugewiesen.
Debians XFree86 4.1.0-16 Pakete hatten nur eine unvollständige Lösung dieses Problems, die die richtigen Zugriffskontrollen nur bei X-Servern bewirkte, die nicht aus einem Display-Manager (z.B. xdm) heraus gestartet wurden. Diese Aktualisierung behebt das Problem.
Das Debian-Projekt weiß von keinen Exploits für diese Verwundbarkeit. Ein böswilliger X-Client, der die MIT-SHM-Erweiterung ausnutzt, könnte jedoch geschrieben werden und dann (absichtlich oder unabsichtlich) von einem Benutzer, der einen X-Server starten kann, ausgeführt werden. Die möglichen Auswirkungen dieses Fehlers hängen davon ab, wie der gemeinsame Speicher auf Ihrem System genutzt wird. Siehe die ipcs(8)-Handbuchseite für weitere Informationen.
Debian hat dieses Problem gelöst, indem ein Patch für die Original-Quellen auf XFree86 4.1.0 zurück portiert wurde.
Denial of Service) auszulösen oder beliebigen Code durch Heap- oder Stack-basierte Pufferüberlauf-Attacken auszuführen
Der Sicherheitsexperte blexim
schrieb [umformuliert]:
Ich habe einige Fehler in den Schrift-Bibliotheken der aktuellen Version des XFree86-Quellcodes gefunden. Diese Fehler können potenziell zur Ausführung von beliebigem Code durch einen entfernten Benutzer führen in jedem Prozess, der die betroffenen Funktionen aufruft. Die Funktionen stehen mit dem Transfer und der Auflistung von Schriften von Schrift-Server an Clients in Verbindung, was den Bereich der Gefährdung einschränkt.
Genauer gesagt werden einige Größenvariablen, die vom Schrift-Server an den Client übertragen werden, nicht ausreichend überprüft, was bei der Verwendung dieser Variablen in Berechnungen zu falschen Werten führen kann. Diese falschen Werte können zu Pufferüberläufen bei Puffern auf dem Heap oder dem Stack führen. Dies erlaubt potenziell die Ausführung von beliebigem Code. Wie schon gesagt, wird das Risiko dadurch begrenzt, dass nur Clients davon betroffen sind. In einigen (nicht standardmäßigen) Konfigurationen können jedoch sowohl xfs als auch der X-Server als Clients von entfernten Schrift-Servern agieren. In diesen Konfigurationen können sowohl xfs als auch der X-Server potenziell gefährdet sein.
Das Common Vulnerabilities and Exposures
-Projekt auf
cve.mitre.org hat diesem Problem den Namen
CAN-2003-0730 zugewiesen.
Das Debian-Projekt weiß von keinen Exploits für diese Verwundbarkeit. Standardmäßig sind X-Server in Debian so konfiguriert, dass sie nur auf einen lokal laufenden Schrift-Server zugreifen, und dies wird nur benutzt, wenn das xfs-Paket installiert ist. Die Debian-Standardkonfiguration von xfs nutzt nur Schriftverzeichnisse auf dem lokalen Rechner und versucht nicht, sich mit externen Schrift-Servern zu verbinden.
Debian hat dieses Problem gelöst, indem ein Patch für die Original-Quellen auf XFree86 4.1.0 zurück portiert wurde.
Alle oben genannten Probleme betreffen auch die xfree86v3-Pakete (im
Fall der beiden ersten Fehler enthält der xterm-Quellcode diese
Fehler, ein xterm-Paket wird jedoch nicht erstellt). Aufgrund von
eingeschränkten Ressourcen und dem Fehlen von upstream
-Unterstützung
für diesen alten Code kann Debian Version 3.3.6 von XFree86 nicht weiter
unterstützen. Um den zwei letzteren Fehler in dieser
Sicherheitsankündigung nicht ausgesetzt zu sein, empfehlen wir Ihnen, die
folgenden Pakete zu entfernen, wenn Sie sie installiert haben:
(Sie könnten auch die xext, xlib6 und xlib6-altdev Pakete entfernen wollen, für die die Unterstützung zusammen mit dem Rest der XFree86 3.3.6 Pakete eingestellt wird, auch wenn sie nicht von den Fehlern in dieser Sicherheitsankündigung betroffen sind.)
Für die stable-Distribution (Woody) wurden diese Probleme in Version 4.1.0-16woody1 behoben.
Für die unstable-Distribution (Sid) wurden alle Probleme bis auf CAN-2003-0730 in Version 4.2.1-11 behoben. CAN-2003-0730 wird in Version 4.2.1-12 behoben werden, die zurzeit vorbereitet wird.
Wir empfehlen Ihnen, Ihr xfree86-Paket zu aktualisieren.
MD5-Prüfsummen der aufgeführten Dateien stehen in der ursprünglichen Sicherheitsankündigung zur Verfügung.