OpenBSD: Μια νέα λειτουργία που προστέθηκε στα snapshots δοκιμών των νέων εκδόσεων του OpenBSD θα δημιουργεί ένα μοναδικό πυρήνα (Kernel) κάθε φορά που ένας χρήστης του OpenBSD επανεκκινήσει ή αναβαθμίσει τον υπολογιστή του.
Αυτή η λειτουργία ονομάζεται KARL από το Kernel Address Randomized Link, ή Τυχαία διεύθυνση του πυρήνα, και λειτουργεί με την επανασύνδεση (relinking) των εσωτερικών αρχείων πυρήνα με τυχαία σειρά, ώστε να δημιουργείται κάθε φορά ένα μοναδικό kernel binary blob.
Επί του παρόντος, στις σταθερές εκδόσεις του OpenBSD το kernel χρησιμοποιεί μια προκαθορισμένη σειρά για να πραγματοποιήσει relinking και να φορτώσει εσωτερικά αρχεία μέσα στο kernel binary. Αυτό έχει σαν αποτέλεσμα να υπάρχει ο ίδιος πυρήνα για όλους τους χρήστες.
OpenBSD με KARL και όχι ASLR
Το KARL αναπτύχθηκε από τον Theo de Raadt, και λειτουργεί δημιουργώντας ένα νέο kernel binary κατά την εγκατάσταση, την αναβάθμιση και τον χρόνο εκκίνησης. Αν ο χρήστης εκκινήσει, αναβαθμίσει ή επανεκκινήσει το μηχάνημά του, ένας νέος δημιουργημένος πυρήνας θα αντικαταστήσει το υπάρχον kernel και το λειτουργικό σύστημα θα δημιουργήσει ένα νέο kernel binary το οποίο θα χρησιμοποιηθεί στην επόμενη εκκίνηση/αναβάθμιση/επανεκκίνηση.
Το KARL δεν πρέπει να συγχέεται με το ASLR ή Address Space Layout Randomization, μια τεχνική που δίνει τυχαία διεύθυνση μνήμης (memory address) όταν εκτελείται μια εφαρμογή. Έτσι τα exploits δεν μπορούν να στοχεύσουν μια συγκεκριμένη περιοχή μνήμης που γνωρίζει ο επιτιθέμενος ότι τρέχει κάποια εφαρμογή ή ο πυρήνας.
Αντίθετα, το KARL δημιουργεί kernel binaries με τυχαίες εσωτερικές δομές, έτσι ώστε τα exploits δεν μπορούν να επιτεθούν σε εσωτερικές λειτουργίες του πυρήνα, pointers, ή objects. Μια τεχνική εξήγηση είναι διαθέσιμη στο παρακάτω link.
http://undeadly.org/cgi?action=article&sid=20170701170044&mode=expanded&count=9
To χαρακτηριστικό αναπτύχθηκε τους τελευταίους δύο μήνες
Οι εργασίες για αυτό το χαρακτηριστικό άρχισαν τον Μάιο και συζητήθηκαν για πρώτη φορά στα μέσα Ιουνίου μέσω του OpenBSD technical mailing list. Το KARL προστέθηκε πρόσφατα σε εκδόσεις snapshot του OpenBSD 6.1.
Αυτό το νέο χαρακτηριστικό φαίνεται να είναι μοναδικό στο OpenBSD, αφού δεν γνωρίζουμε κάτι ανάλογο για το Linux.
Το Linux μόλις πρόσθεσε υποστήριξη για το Kernel Address Space Layout Randomization (KASLR), μια λειτουργία που κάνει port το ASLR στο ίδιο τον πυρήνα, φορτώνοντας τον πυρήνα σε μια τυχαία διευθύνση μνήμης.
Αυτή η λειτουργία ενεργοποιήθηκε από προεπιλογή στο Linux 4.12, που κυκλοφόρησε την περασμένη εβδομάδα. Η διαφορά μεταξύ των δύο είναι ότι το KARL φορτώνει διαφορετικά kernel binaries στο ίδιο μέρος, ενώ το KASLR φορτώνει το ίδιο kernel binary σε τυχαίες θέσεις. Ίδιος στόχος, διαφορετικά μονοπάτια.
Όσο για τα Windows, το KARL δεν υποστηρίζεται, αλλά η Microsoft χρησιμοποιεί το KASLR εδώ και πολλά χρόνια.
Θα πρέπει να αναφέρουμε ότι η νέα λειτουργία του OpenBSD φαίνεται να παρέχει πολύ περισσότερη ασφάλεια από τις λύσεις που χρησιμοποιούν η Microsoft και το Linux.
Ίσως μετά από αρκετές δοκιμές δούμε το KARL και σε άλλα λειτουργικά συστήματά.