Οι ενημερώσεις κώδικα εισήχθησαν για την τυχαιοποίηση των διευθύνσεων στοίβας πυρήνα Linux για κλήσεις συστήματος

Ο Kees Cook, πρώην επικεφαλής διαχειριστής συστήματος του kernel.org και αρχηγός της Ομάδας Ασφάλειας του Ubuntu, που τώρα εργάζεται στην Google για την ασφάλεια του Android και του ChromeOS, δημοσίευσε ένα σύνολο ενημερώσεων κώδικα για να τυχαιοποιήσει τις μετατοπίσεις στη στοίβα του πυρήνα κατά την επεξεργασία κλήσεων συστήματος. Οι ενημερώσεις κώδικα βελτιώνουν την ασφάλεια του πυρήνα αλλάζοντας την τοποθέτηση στοίβας, καθιστώντας τις επιθέσεις στη στοίβα πολύ πιο δύσκολες και λιγότερο επιτυχημένες. Η αρχική υλοποίηση υποστηρίζει επεξεργαστές ARM64 και x86/x86_64.

Η αρχική ιδέα για το patch ανήκει στο έργο PaX RANDKSTACK. Το 2019, η Elena Reshetova, μηχανικός από την Intel, προσπάθησε να δημιουργήσει μια υλοποίηση αυτής της ιδέας κατάλληλη για συμπερίληψη στον κύριο πυρήνα του Linux. Αργότερα, την πρωτοβουλία ανέλαβε ο Kees Cook, ο οποίος παρουσίασε μια υλοποίηση κατάλληλη για την κύρια έκδοση του πυρήνα. Τα patches προγραμματίζεται να συμπεριληφθούν ως μέρος της έκδοσης 5.13. Η λειτουργία θα απενεργοποιηθεί από προεπιλογή. Για να το ενεργοποιήσετε, προτείνεται η παράμετρος της γραμμής εντολών του πυρήνα "randomize_kstack_offset=on/off" και η ρύθμιση CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Η γενική επιβάρυνση της ενεργοποίησης της λειτουργίας υπολογίζεται σε απώλεια απόδοσης περίπου 1%.

Η ουσία της προτεινόμενης προστασίας είναι να επιλέξετε μια τυχαία μετατόπιση στοίβας για κάθε κλήση συστήματος, γεγονός που καθιστά δύσκολο τον προσδιορισμό της διάταξης στοίβας στη μνήμη, ακόμη και μετά τη λήψη δεδομένων διεύθυνσης, καθώς η επόμενη κλήση συστήματος θα αλλάξει τη διεύθυνση βάσης της στοίβας. Σε αντίθεση με την υλοποίηση PaX RANDKSTACK, στις διορθώσεις που προτείνονται για συμπερίληψη στον πυρήνα, η τυχαιοποίηση δεν πραγματοποιείται στο αρχικό στάδιο (cpu_current_top_of_stack), αλλά μετά τη ρύθμιση της δομής pt_regs, η οποία καθιστά αδύνατη τη χρήση μεθόδων που βασίζονται σε ptrace για τον προσδιορισμό της τυχαιοποιημένης μετατόπισης κατά τη διάρκεια μιας μακροχρόνιας κλήσης συστήματος.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο