Wie kann schadhafter Code in einer Bilddatei schädlich sein?
-
Für das Programm sollten das doch nur einfache Daten sein,
wie kann das dann also dazu führen, daß der Code in einer Bilddatei ausgeführt wird?
-
Fehler im Viewer
-
Stichwort: Buffer Overflow
-
Ganz primitives Beispiel.
Bild enthält seine eigene Größe.
Viewer verläßt sich darauf und fordert so viel Speicher an.
Dann lädt der Viewer das Bild so lange bis es nichts mehr zu laden gibt (Nicht aufgrund des Wertes des Bildes).
Steht im Bild eine kleinere Größe als es wirklich hat wird das was zu vie ist über die Arraygrenzen hinaus in fremden Speicher geschrieben.Wird dieser als Programm interpretiert hat man den GAU.
-
MsterX schrieb:
Ganz primitives Beispiel.
Bild enthält seine eigene Größe.
Viewer verläßt sich darauf und fordert so viel Speicher an.
Dann lädt der Viewer das Bild so lange bis es nichts mehr zu laden gibt (Nicht aufgrund des Wertes des Bildes).
Steht im Bild eine kleinere Größe als es wirklich hat wird das was zu vie ist über die Arraygrenzen hinaus in fremden Speicher geschrieben.Wird dieser als Programm interpretiert hat man den GAU.
Versteh ich nicht.
Wenn das Bild eine kleinere Größe drinstehen hat als es wirklich groß ist und das Programm verläßt sich auf den Wert der da drinsteht, dann läd es ja nur einen Teil des Bildes und nicht mehr.
Es muß also anders herum sein.
Im Bild muß ein größerer Wert drinstehen, als das Bild wirklich an Größe hat. Erst dann wird über die Bilddatei hinaus, Daten ausgelesen.
-
das ist jetzt wort verdreherei - aber du hst es schon richtig verstanden - genau so kann es gehen
-
Und wie schleust man da jetzt Code ein?
Hängt man die Opcodes einfach dem Bild hintendran und hofft, daß sie ausgeführt werden?
-
Um schrieb:
Es muß also anders herum sein.
Im Bild muß ein größerer Wert drinstehen, als das Bild wirklich an Größe hat. Erst dann wird über die Bilddatei hinaus, Daten ausgelesen.Nein, anders herum war es schon richtig. Wäre der Wert größer würde der Bildbetrachter mehr Speicher anfordern als er braucht - das wäre ja kein Problem (außer das führt zum Speichermangel wegen zu großem Wert). Aber mit dynamischen angeforderten Speicher funktioniert das glaube eh nicht so gut, weil man weiß ja nicht was man hinter dem Puffer überschreiben tut. Der Speicher muss schon auf dem Stack liegen.
Bei Wikipedia gibt es unter dem o. g. Stichwort einen schönen Artikel dazu.
-
Tell schrieb:
Und wie schleust man da jetzt Code ein?
Hängt man die Opcodes einfach dem Bild hintendran und hofft, daß sie ausgeführt werden?
Den Code kann man mittels eines Stack Overflow gezielt ausführen lassen.
-
"Einfach" php code in die Bilddatei schreiben und dann vom server ausführen lassen.
-
Ganz so einfach ist das auch nicht, schau Dir dazu mal die Videos und Exploits auf www.milw0rm.org an. www.packetstormsecurity.org hat meistens auch immer was passendes, wo man weiterkommt.