Hvad er SER-filformatet?
En .ser-fil indeholder en Java serialized object stream - en binær kodning af et eller flere Java-objekter produceret af ObjectOutputStream og læst tilbage af ObjectInputStream. Formatet blev introduceret med Java 1.1 i 1997 og er defineret i Java Object Serialization Specification.
Enhver gyldig .ser-fil begynder med den 4-byte lange magiske sekvens AC ED 00 05: byte 0-1 indeholder STREAM_MAGIC (0xACED) og byte 2-3 indeholder STREAM_VERSION (0x0005). Strømmen koder hvert objekts klassedescriptor, felter og indlejrede data ved hjælp af typede blokmarkører: TC_OBJECT (0x73), TC_CLASS (0x76), TC_ARRAY (0x75), TC_STRING (0x74) og TC_NULL (0x70).
Serialisering blev i vid udstrækning brugt til caching af applikationstilstand, overførsel af objekter mellem JVM'er og lagring af konfigurationsdata. Imidlertid er Java-deserialisering en kendt sikkerhedssårbarhed - ondsindet udformede strømme kan udnytte «gadget chains» i classpath for at opnå fjernafvikling af kode. Java 9 introducerede ObjectInputFilter for at begrænse, hvilke klasser der må deserialiseres, og moderne Java-vejledning fraråder kraftigt brug af .ser-filer til upålidelige data.
Foretrukne moderne alternativer inkluderer JSON (via Jackson eller Gson), Protocol Buffers eller Kryo. GeneMapper (Thermo Fisher Scientific) bruger .ser-filer til bioinformatik-projektdata. Værktøjet SerializationDumper kan inspicere indholdet af .ser uden at eksekvere dem.
Sikkerhed og tryghed
RISIKO: HIGHJava-deserialisering er en af de mest alvorlige angrebsflader i Java-applikationer (historisk set i OWASP Top 10). Åbning af en upålidelig .ser-fil i en sårbar applikation kan eksekvere vilkårlig kode via «gadget chains» (jf. Apache Commons Collections-eksploateringen, 2015). Slutbrugere bør kun åbne .ser-filer fra betroede kilder og i deres tilsigtede program. Ved analyse af ukendte .ser-filer: brug SerializationDumper (statisk dump, eksekverer ikke indholdet) frem for at deserialisere dem i en aktiv JVM.
Formatdetaljer
kort fortalt- GeneMapper-projektfil - Applied Biosystems/Life Technologies GeneMapper-software bruger .ser som sin proprietære beholder til projektdata.
- Generisk applikationsdatacache - Enhver Java-applikation kan serialisere vilkårlige objekter til .ser; indholdet er fuldstændig applikationsspecifikt.
Programmer der åbner SER-filer
Tekniske detaljer
dyb specifikation| Magic bytes | AC ED 00 05 ved offset 0 - STREAM_MAGIC (0xACED) efterfulgt af STREAM_VERSION (0x0005) |
| Kodning | Binær, big-endian |
| MIME-type | application/x-java-serialized-object |
| Serialiserings-API | java.io.ObjectOutputStream (skriv) / java.io.ObjectInputStream (læs); klasser skal implementere java.io.Serializable |
| Protokolversion | Serialiseringsprotokol version 2 (stream version 5), stabil siden Java 1.2 |
| Klasse-versionering | Hver klasse indlejrer en serialVersionUID; versionskonflikt kaster InvalidClassException ved deserialisering |
| Indholdsmarkører | TC_OBJECT (0x73), TC_CLASS (0x76), TC_ARRAY (0x75), TC_STRING (0x74), TC_NULL (0x70) |
| Sikkerhedsrisiko | Kendt angrebsvektor via deserialiserings-gadget-chains; Java 9+ afbøder dette via ObjectInputFilter-allowlisting |
| Typisk størrelse | Fra få bytes for simple objekter op til hundreder af MB for store serialiserede objektgrafer |
| Platform-portabilitet | Kan læses af enhver JVM på Windows, Linux eller macOS; ikke portabel uden for Java-økosystemet |
| Strømkomprimering | Ukomprimeret på formatniveau; GZIPOutputStream-indpakning anvendes valgfrit på applikationslaget |
| Integritet | Ingen indbygget tjeksum; integritet sikres via signering på applikationslaget eller sikker transport |
| Kendt applikation | GeneMapper (Thermo Fisher Scientific) bruger .ser til bioinformatik-projekt- og datafiler |
| Udgivet | 1997 (Java 1.1, JDK 1.1) |
| Seneste version | Stream version 5 (serialization protocol version 2, since Java 1.2) |
| Åben standard | Ja · royaltyfri |
| Specifikation | docs.oracle.com |
SER-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om SER-filer.