Eine Datei ist gleichzeitig JPEG und HTML
Zusammenfassung
Michal Zalewski konstruiert eine Polyglot-Datei, die Bildbetrachter als JPEG und Browser als HTML akzeptieren.
Ideen
- Dateiformate erkennen Inhalte anhand unterschiedlicher Startpunkte und Regeln.
- Tolerante Parser ignorieren Daten, die ein anderer Parser interpretiert.
- Eine Bytefolge kann mehrere formal gültige Strukturen enthalten.
- Inhaltsprüfung allein anhand einer Dateiendung bleibt unzuverlässig.
Einsichten
- Parserdifferenzen schaffen Sicherheitsgrenzen mit unerwarteten Lücken.
- Großzügige Fehlerbehandlung erhöht Kompatibilität und Angriffsfläche zugleich.
- Validierung muss denselben Parser wie die spätere Verarbeitung verwenden.
Fakten
- Die Demonstration ist gültiges JPEG und ausführbares HTML.
- Browser und Bildprogramme interpretieren dieselben Bytes verschieden.
- Das Projekt stammt von Michal Zalewski.
Empfehlungen
- Bestimme Dateitypen aus Inhalt und Nutzungskontext.
- Liefere Uploads mit sicheren Content-Type- und Download-Headern aus.
Referenzen
Der Link zur Originalquelle öffnet einen neuen Tab.