[NETZ]KULTUR | | Aktuell | 19. Februar 2004 |
|
| |
SICHERHEITSLÜCKEN BEI KLEINWEICH, DIE 2836STE Anleitung zum IExplorer-HackenVon Burkhard Schröder |
Das Thema ist langweilig: schon wieder eine Sicherheitslücke bei Kleinweich. Spiegel online und Heise und viele andere haben berichtet. Ich verstehe aber nicht, worin die Sicherheitslücke besteht. Deshalb versuche ich, das Thema für Computer-Laien wie mich volkstümlich zu erklären. Und ausserdem geben wir hier eine Anleitung, wie man per Quellcode einer Website den IExplorer zum Absturz bingen kann. Ein bisschen Spaß muss sein.
Slashdot schränkt gleich ein: Das Loch betrifft nur die IEXplorer Version 5: "A post to Bugtraq from SecurityTracker.com reports an Internet Explorer 5 exploit that has been released based on the Win2K code leak: "It is reported that a remote user can create a specially crafted bitmap file that, when loaded by IE, will trigger an integer overflow and execute arbitrary code." Only affects IE 5 apparently, but still - it didn't take long!"
Im Usenet wird das Problem ebenso erläutert, ein Laie versteht aber nur Bahnhof. Erfreulich ist jedoch, dass im Original-Posting bei Securitytracker.com das Exploit gleich mitgeliefert wird. Ein base64-Decoder übersetzt den Anfang in den Quellcode der benötigten Website.
Bei Heise heisst es im im schönsten Computer-Chinesisch: "Ein Offset zur Verarbeitung von Bitmap-Dateien ist fälschlicherweise vom Typ Signed Integer." Was zum Teufel ist ein Offset? Auch entzückende Websites mit vielen t00lz, um Scriptkiddie zu werden, erläutern uns das nicht. Eine ausgefeilte Boolsche Algebra bringt uns schnell zum Ziel.
Der bequeme Weg ist aber besser: "Ein Offset gibt die Postition eines jeden Bytes in einer Datei, also sozusagen deren Adresse an... wie auch die Bytes wird es im Hex-Format angegeben...wenn also da steht: Gehen sie zu Offset 3D090, so ist das umgerechnet das 250000te Byte dieser Datei, welches dann meistens einen anderen Wert erhalten soll... Wenn du in einem Spielstand z.B. 0 Punkte hast, steht da 00 - wenn Du jetzt FF draus machst, hast Du plötzlich 255 Punkte..."
Und was bedeutet signed integer? Das hat, so suggeriert das Google-Ergebnis, mit ganzen negativen Zahlen zu tun: "Benötigt man aber auch negative Zahlen, verwendet man das Zweierkomplement und spricht vom signed integer und kann bei 8 Bit mit Zahlen von -128 bis +127 agieren." Man kann das auch "signierte Dualzahlen" nennen. Das sieht nach höherer Mathematik aus und hat sicher schon mindestens die Hälfte der geneigten Leser und wohlwollenden Leserinnen wegzappen lassen. Wir beissen jedoch die Zähne zusammen und machen weiter.
Die technische Erklärung mit allen Details ist nur etwas für Hacker und die, die es werden wollen: "Rrrrriiiiggghhhttt. Way to go, using a signed integer for an offset. Now all we have to do is create a BMP with bfOffBits > 2^31, and we're in. cbSkip goes negative and the Read call clobbers the
stack with our data."
Was haben wir bis jetzt? Eine Art Script, eine Anzahl von Programmier-Befehlen, verarbeitet eine Bitmap-Datei. Wenn das geschieht, gibt es einen Fehler, einen Integer Overflow. Für DAUs: Das Programm oder was auch immer in den Windows-Eingeweiden dafür zuständig ist, kriegt es nicht gebacken, wenn bestimmte Zahlenwerte nicht richtig dargestellt werden. Es kotzt sozusagen.
Jetzt sind wir schon fast beim letzten Heise-Satz: " Der anschließende Read-Aufruf überschreibt dann den Stack mit den in der BMP-Datei enthaltenen Daten" Den ersten Teil rate ich: ein read-Aufruf ist vermutlich ein Befehl, etwas zu lesen. Warum einfach, wenn es auch kompliziert zu sagen geht. Ein Stack ist ein Bereich im Speicher. DAU-Version: Ein Programm, das hervorgenudelt wird, weil es etwas tun soll, muss das Loch kennen, in das es wieder hineinflutschen soll, wenn alles getan ist. Das Loch nennt man Stack.
In der Bitmap-Datei ist also ein Code enthalten. Und wenn die Zahlen überlaufen wie ein Hirsebrei, überschreibt der böse Code einen bestimmten Bereich im Speicher - und nistet sich dort häuslich ein. Und jemand, der den Code geschrieben hat, kann dann eine ganze Menge mehr böser Dinge tun. Alles klar?
Zum Erholen hier ein anderer Code, der den IExplorer zum Absturz bringt - vgl. die Testseite:
Code: |
<html>
<body>
<span style='border: 1px solid #FFFFFF; text-align: center; height:
1px;'>
<DIV style="text-align: center; width: 100%;">
<div>
</DIV>
</span>
<div style='height: 0px;'>
</div>
</body>
</html> |
Viel Spaß beim IExplorer-Hacken!
---------------------------------------------------------------------------------------BURKS ONLINE 19.02.2004 Alle Rechte vorbehalten. Vervielfältigung nur mit Genehmigung des BurksVEB. |