Wenn ein Angreifer es nicht schafft, den Rechner zu übernehmen oder Code auszuführen, kann er dennoch Schaden anrichten: Beim Denial of Service (DoS) fallen Dienste oder das ganze System aus.
Zahlreiche Softwarepakete sind in den letzten Wochen Opfer von Denial-of-Service-Schwachstellen geworden. Was muss passieren, um ein Programm schachmatt zu setzen? Der Desktop-Nachrichtendienst Dbus beispielsweise erledigt seine Arbeit still im Hintergrund. Über ihn erfährt etwa der Dateimanager, wenn ein USB-Stick in den Rechner gesteckt wird.
Die zugrunde liegende Bibliothek Libdbus weist in den Versionen 1.4.16 bis 1.4.26 und 1.5.8 bis 1.6.12 eine Schwachstelle auf [1]. Die Bibliotheksfunktion »_dbus _printf_string_upper_bound()« verwendet eine »va_list« -Variable falsch. Auf der Plattform x86_64 kann daher ein lokaler Anwender den Dbus-Dienst zum Absturz bringen, wenn er die Funktion über eine Systemkomponente dazu bringt, genau 1024 Byte zurückzugeben.
Lach-Attacke
Einfacher ist es, den REXML-Parser in Ruby zum Speicherfresser zu machen. Um sehr große String-Objekte zu allozieren, verwendet der Angreifer hier ein geschickt konstruiertes XML-Dokument. Es setzt auf eine Reihe von Entities (Abkürzungen), die jeweils zehnmal ihre Vorgängerin enthalten. Nach zehn Durchgängen ist die ursprüngliche Zeichenkette eine Milliarde Mal länger geworden – ausreichend, um den Arbeitsspeicher zu erschöpfen.
Da die Programmierer in ihrem Demo-Exploit die Lach-Silbe »lol« als Zeichenkette verwenden, nennt man diesen Angriff auch Billion Laughs Attack [2]. Betroffen sind die Ruby-Versionen 1.9.3 (Patchlevel 392) und 2.0.0 (Patchlevel 0).
Noch leichter und zudem aus der Ferne lässt sich Monkey, ein Webserver für Embedded Linux, aufs Kreuz legen. Er kann »GET« -Anfragen nicht verarbeiten, die ein Null-Byte enthalten. Sie lassen sich recht einfach mit einer Zeile Ruby oder Perl abschicken und verursachen eine Speicherverletzung. Betroffen ist Monkey 1.1.1. [3].
K.o.-Schleife
Realplayer, ein proprietärer Audio- und Videoplayer, der auch für Linux erhältlich ist, lässt sich durch HTML und Javascript zum Durchdrehen bringen. Kann jemand den Anwender veranlassen, eine Datei mit dem Inhalt von Listing 1 mit dem Player zu öffnen, verwendet dieser die Variable »buffer« aus dem enthaltenen Javascript, um eine Schleife zu steuern. Deren Wert besteht aus einer langen Kette von As (»\x41« ), was die Schleife unkontrollierbar macht und zur Erschöpfung des Arbeitsspeichers führt. Betroffen sind die Versionen bis einschließlich 16.0.2.32 [4].
Listing 1
Realplayer-Exploit
01 <html>
02 <head>
03 <script language="JavaScript">
04 {
05 var buffer = '\x41'
06 for(i=0; i <= 100 ; ++i)
07 {
08 buffer+=buffer+buffer
09 document.write(buffer);
10 }
11 }
12 </script>
13 </head>
14 </html>
Der Absturz eines Mediaplayers mag zu verschmerzen sein, unangenehm wird es aber, wenn er das ganze System blockiert. Gravierender können die Folgen sein, wenn sich ein Embedded-Gerät nicht mehr steuern lässt, weil der eingebaute Monkey-Webserver sabotiert wurde.
Infos
- Libdbus-Schwäche (CVE-2013-2168): http://www.securitytracker.com/id/1028667
- Billion Laughs Attack: http://en.wikipedia.org/wiki/Billion_laughs
- Monkey-Sicherheitslücke (CVE-2013-3724): http://www.securityfocus.com/archive/1/526791
- Realplayer-Sicherheitslücke: (CVE-2013-3299): http://seclists.org/bugtraq/2013/Jul/18





