Was ist das SER-Dateiformat?
Eine .ser-Datei enthält einen Java serialized object stream - eine binäre Kodierung eines oder mehrerer Java-Objekte, die von ObjectOutputStream erzeugt und von ObjectInputStream zurückgelesen werden. Das Format wurde 1997 mit Java 1.1 eingeführt und ist in der Java Object Serialization Specification definiert.
Jede gültige .ser-Datei beginnt mit der 4-Byte-Magic-Sequenz AC ED 00 05: Die Bytes 0-1 enthalten STREAM_MAGIC (0xACED) und die Bytes 2-3 enthalten STREAM_VERSION (0x0005). Der Stream kodiert den Klassendeskriptor, die Felder und die verschachtelten Daten jedes Objekts unter Verwendung von typisierten Blockmarkern: TC_OBJECT (0x73), TC_CLASS (0x76), TC_ARRAY (0x75), TC_STRING (0x74) und TC_NULL (0x70).
Die Serialisierung wurde weit verbreitet zum Caching von Anwendungszuständen, zum Übertragen von Objekten zwischen JVMs und zum Persistieren von Konfigurationsdaten verwendet. Jedoch ist die Java-Deserialisierung eine bekannte Sicherheitslücke - bösartig manipulierte Streams können Gadget-Chains im Classpath ausnutzen, um eine Remote Code Execution zu erreichen. Java 9 führte den ObjectInputFilter ein, um einzuschränken, welche Klassen deserialisiert werden dürfen, und moderne Java-Richtlinien raten dringend davon ab, .ser-Dateien für nicht vertrauenswürdige Daten zu verwenden.
Bevorzugte moderne Alternativen sind JSON (via Jackson oder Gson), Protocol Buffers oder Kryo. GeneMapper (Thermo Fisher Scientific) verwendet .ser-Dateien für Bioinformatik-Projektdaten. Das Dienstprogramm SerializationDumper kann den Inhalt von .ser untersuchen, ohne ihn auszuführen.
Sicherheit
RISIKO: HIGHDie Java-Deserialisierung ist eine der kritischsten Angriffsflächen in Java-Anwendungen (historisch OWASP Top 10). Das Öffnen einer nicht vertrauenswürdigen .ser Datei in einer anfälligen Anwendung kann beliebigen Code über Gadget-Chains ausführen (vgl. Apache Commons Collections Exploit, 2015). Endbenutzer sollten .ser Dateien nur aus vertrauenswürdigen Quellen und in der dafür vorgesehenen Anwendung öffnen. Analyse unbekannter .ser Dateien: Verwenden Sie SerializationDumper (statischer Dump, führt den Payload nicht aus), anstatt sie in einer aktiven JVM zu deserialisieren.
Formatdetails
kurz gefasst- GeneMapper Projektdatei - Die GeneMapper-Software von Applied Biosystems/Life Technologies verwendet .ser als proprietären Projekt-Datencontainer.
- Generischer Anwendungsdatencache - Jede Java-Anwendung kann beliebige Objekte nach .ser serialisieren; die Inhalte sind vollständig anwendungsspezifisch.
Programme zum Öffnen von SER-Dateien
Technische Details
technische Spezifikation| Magic Bytes | AC ED 00 05 bei Offset 0 - STREAM_MAGIC (0xACED) gefolgt von STREAM_VERSION (0x0005) |
| Kodierung | Binär, Big-Endian |
| MIME-Typ | application/x-java-serialized-object |
| Serialisierungs-API | java.io.ObjectOutputStream (Schreiben) / java.io.ObjectInputStream (Lesen); Klassen müssen java.io.Serializable implementieren |
| Protokollversion | Serialisierungsprotokoll Version 2 (Stream Version 5), stabil seit Java 1.2 |
| Klassen-Versionierung | Jede Klasse bettet eine serialVersionUID ein; Versionskonflikte werfen eine InvalidClassException zum Zeitpunkt der Deserialisierung |
| Inhalts-Marker | TC_OBJECT (0x73), TC_CLASS (0x76), TC_ARRAY (0x75), TC_STRING (0x74), TC_NULL (0x70) |
| Sicherheitsrisiko | Bekannter Angriffsvektor für Deserialisierungs-Gadget-Chains; Java 9+ entschärft dies durch ObjectInputFilter-Allowlisting |
| Typische Größe | Einige Bytes für einfache Objekte bis hin zu hunderten MB für große serialisierte Objektgraphen |
| Plattform-Portabilität | Lesbar durch jede JVM unter Windows, Linux oder macOS; nicht portabel außerhalb des Java-Ökosystems |
| Stream-Komprimierung | Unkomprimiert auf Formatebene; GZIPOutputStream-Wrapping wird optional auf Anwendungsebene angewendet |
| Integrität | Keine integrierte Prüfsumme; Integrität wird durch Signierung auf Anwendungsebene oder sicheren Transport gewährleistet |
| Bekannte Anwendung | GeneMapper (Thermo Fisher Scientific) verwendet .ser für Bioinformatik-Projekt- und Datendateien |
| Veröffentlicht | 1997 (Java 1.1, JDK 1.1) |
| Neueste Version | Stream version 5 (serialization protocol version 2, since Java 1.2) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | docs.oracle.com |
SER-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu SER-Dateien.