Η αρχιτεκτονική της απόδρασης (VM Escape)
Το Firecracker βασίζεται σε ένα μοντέλο όπου κάθε vCPU αντιστοιχεί σε ένα thread στο host process. Όταν το thread εκτελεί το KVM_RUN system call, ο kernel αποθηκεύει τα registers του userspace σε μια δομή pt_regs. Η ερευνητική ομάδα κατάφερε να εντοπίσει αυτή τη δομή στη μνήμη του host, επιτρέποντας την τροποποίηση του instruction pointer και του stack pointer κατά την επιστροφή από το KVM.
Διαδικασία εντοπισμού και αναγνώρισης
Η επίθεση ακολουθεί μια πολυεπίπεδη διαδικασία αναγνώρισης:
- EPT Resolution: Χρήση ενός nonce (τυχαίου μοτίβου) στη μνήμη του guest για τον εντοπισμό του αντίστοιχου host physical address (HPA) μέσω των Extended Page Tables.
- Reverse Mapping: Αναζήτηση στα page tables του host για τον εντοπισμό του Page Global Directory (PGD) του Firecracker process.
- Image Mapping: Εντοπισμός του ELF image και υπολογισμός του load bias για την παράκαμψη του ASLR.
- Frame Finder: Επαλήθευση του vCPU thread μέσω ελέγχου του instruction pointer, του stack pointer και των syscall arguments.
Εκτέλεση και διατήρηση σταθερότητας
Για την εκτέλεση του payload, οι ερευνητές τροποποίησαν το stack του thread ώστε να εκτελέσει μια κλήση write(2) στο stderr του Firecracker. Η κρίσιμη λεπτομέρεια είναι η αποκατάσταση της κατάστασης του stack και των registers μετά την εκτέλεση, ώστε το thread να συνεχίσει την κανονική του λειτουργία χωρίς να προκληθεί crash, διατηρώντας το VM πλήρως λειτουργικό.
Συμπεράσματα για την ασφάλεια
Η έρευνα υπογραμμίζει ότι η απομόνωση που προσφέρει το Firecracker εξαρτάται άμεσα από την ακεραιότητα της μνήμης του host. Παρόλο που το jailer και τα seccomp profiles περιορίζουν σημαντικά την επιφάνεια επίθεσης, η δυνατότητα ανάγνωσης/εγγραφής στη μνήμη του host παραμένει ένα κρίσιμο σημείο συμφόρησης (bottleneck) για την ασφάλεια των microVMs.