Serialization, Deserialization και Parser Security — DedSec Project
Serialization, Deserialization και Parser Security Ελληνική έκδοση — Μάθημα 127. Οι διεθνείς τεχνικοί όροι, protocol names, standards και commands παραμένουν στα Αγγλικά όπου αυτό αυξάνει…
Ελληνική έκδοση — Μάθημα 127. Οι διεθνείς τεχνικοί όροι, protocol names, standards και commands παραμένουν στα Αγγλικά όπου αυτό αυξάνει την ακρίβεια.
Το deserialization είναι parsing untrusted data. Εστίασε σε schemas, canonicalization, duplicate fields, resource limits και safe object reconstruction.
Μαθησιακοί στόχοι
Στο τέλος πρέπει να μπορείς να:
- εξηγήσεις το serialization versus object graphs και να εντοπίσεις trust boundary, state transition και evidence που σχετίζονται με αυτό,
- εξηγήσεις το schema validation and canonical forms και να εντοπίσεις trust boundary, state transition και evidence που σχετίζονται με αυτό,
- εξηγήσεις το JSON, XML, YAML and binary formats και να εντοπίσεις trust boundary, state transition και evidence που σχετίζονται με αυτό,
- εξηγήσεις το polymorphic type handling και να εντοπίσεις trust boundary, state transition και evidence που σχετίζονται με αυτό,
- εξηγήσεις το unsafe object reconstruction και να εντοπίσεις trust boundary, state transition και evidence που σχετίζονται με αυτό,
- εξηγήσεις το parser differentials and duplicate fields και να εντοπίσεις trust boundary, state transition και evidence που σχετίζονται με αυτό,
Βαθιές τεχνικές έννοιες
1. serialization και object graphs
Serialization μετατρέπει structured state σε wire/storage format και deserialization το ξαναχτίζει. Κράτησε external schema πιο απλό από internal object graph ώστε input να μην επιλέγει arbitrary classes/constructors.
2. schemas και canonical forms
Explicit schemas ορίζουν types, ranges και compatibility. Canonical representation είναι κρίσιμη όταν data υπογράφονται, γίνονται hash ή συγκρίνονται ώστε διαφορετικά encodings να μη δίνουν διαφορετική security απόφαση.
3. JSON, XML, YAML και binary formats
Κάθε format έχει διαφορετικά parser features και resource risks. Απενεργοποίησε unnecessary extensions, βάλε depth/size limits και έλεγξε duplicate/ambiguous fields στα boundaries.
4. polymorphic types
Automatic polymorphic deserialization μπορεί να αφήσει input να επιλέξει class. Χρησιμοποίησε explicit discriminator σε στενό allowlist data-only types και ξεχώρισε side effects από parsing.
5. unsafe reconstruction
Deserialization δεν πρέπει να εκτελεί arbitrary constructors/hooks με attacker-controlled state. Παράγαγε inert data, validate το και μετά εκτέλεσε authorized business logic.
6. parser differentials και duplicate fields
Proxy, validator, signature layer και application parser μπορεί να διαφωνούν για duplicate keys, numbers ή encodings. Πέρασε τα ίδια test bytes από όλα τα layers και σύγκρινε canonical result.
7. resource exhaustion
Deep nesting, huge collections, decompression ή expansion μπορεί να καταναλώσει CPU/memory πριν το business validation. Βάλε limits σε size, depth, object count, recursion και processing time.
8. safe deserialization patterns
Προτίμησε explicit schemas, allowlisted data types, bounded resources και version-aware migrations. Κράτα parser/version evidence και security regression samples για μελλοντικές library changes.
Καθοδηγούμενο εργαστήριο
Εργαστήριο 1 — Δημιούργησε δοκιμαστικό σχήμα JSON και έλεγξε τοπικά πεδία που λείπουν, επαναλαμβάνονται, υπερβαίνουν όρια ή έχουν λανθασμένο τύπο.
Εργαστήριο 2 — Σύγκρινε πώς δύο ασφαλείς parsers αναπαριστούν διπλά κλειδιά σε συνθετικά δεδομένα και τεκμηρίωσε την επίπτωση στην εμπιστοσύνη.
Εργαστήριο 3 — Ανασχεδίασε υποθετική απευθείας αποσειριοποίηση προνομιούχου αντικειμένου με ρητά επικυρωμένα αντικείμενα μεταφοράς δεδομένων.
Πλήρες αγγλικό μάθημα
Επόμενα μαθήματα
Σχετικά modules: 014, 022, 040, 068, 069, 071, 108. Από το κύριο menu επίλεξε Αναζήτηση μαθημάτων για να βρεις σχετικά θέματα σε όλο το project.