Insecure Deserialization

Auch bekannt als:Unsichere Deserialisierung

Insecure Deserialization: Wiederherstellung von Objekten aus nicht vertrauenswürdigen Daten, wodurch fremde Logik ausgeführt wird. Die Schwachstelle mündet häufig direkt in Remote Code ExecutionRemote Code ExecutionSchwachstelle oder Angriff, der Code auf einem entfernten Ziel ausführen lässt..

Funktionsweise und Einordnung

Serialisierung wandelt Objekte in eine übertragbare Darstellung, Deserialisierung baut sie wieder auf. Mächtige Formate stellen dabei nicht nur Daten wieder her, sondern auch Typinformationen und rufen beim Aufbau Methoden auf — Konstruktoren, Setter, readObject, __wakeup. Ein Angreifer, der die serialisierten Daten kontrolliert, wählt damit auch die instanziierten Typen. Über sogenannte Gadget Chains werden vorhandene Klassen der Anwendung so verkettet, dass am Ende ein Systemaufruf steht. Betroffen sind unter anderem Java, PHP, Python pickle und unsicher konfiguriertes YAML.

Bedeutung in der Praxis

Signaturen oder Verschlüsselung über dem Serialisat verhindern die Manipulation, lösen aber nicht das Grundproblem. Robuster ist ein Wechsel auf rein datenorientierte Formate ohne Typinformationen, eine strikte Allowlist erlaubter Klassen und die klare Trennung zwischen Transportformat und internem Objektmodell. Für die Bewertung ist entscheidend, welche Bibliotheken im Klassenpfad liegen — die Ausnutzbarkeit hängt oft weniger an der Anwendung als an ihren Abhängigkeiten.

Verwandte Begriffe

  • Injection AttackInjection AttackManipuliert Interpreter oder Anwendungen durch eingeschleuste Befehle oder Daten.: Manipuliert Interpreter oder Anwendungen durch eingeschleuste Befehle oder Daten.
  • Remote Code ExecutionRemote Code ExecutionSchwachstelle oder Angriff, der Code auf einem entfernten Ziel ausführen lässt.: Schwachstelle oder Angriff, der Code auf einem entfernten Ziel ausführen lässt.
  • Input ValidationInput ValidationPrüfung von Eingabedaten auf Format, Länge, Typ, Wertebereich und Zulässigkeit.: Prüfung von Eingabedaten auf Format, Länge, Typ, Wertebereich und Zulässigkeit.
  • Java Deserialization VulnerabilityJava Deserialization VulnerabilitySchwachstelle durch Verarbeitung manipulierter serialisierter Java-Objekte.: Schwachstelle durch Verarbeitung manipulierter serialisierter Java-Objekte.