Η Mozilla ξεκινά την εφαρμογή της τεχνολογίας απομόνωσης βιβλιοθήκης RLBox

Ερευνητές από το Πανεπιστήμιο του Στάνφορντ, το Πανεπιστήμιο της Καλιφόρνια στο Σαν Ντιέγκο και το Πανεπιστήμιο του Τέξας στο Όστιν αναπτηγμένος εργαλεία RLBox, το οποίο μπορεί να χρησιμοποιηθεί ως πρόσθετο επίπεδο απομόνωσης για τον αποκλεισμό τρωτών σημείων σε βιβλιοθήκες συναρτήσεων. Το RLBox στοχεύει στην επίλυση του προβλήματος ασφαλείας των μη αξιόπιστων βιβλιοθηκών τρίτων που δεν βρίσκονται υπό τον έλεγχο των προγραμματιστών, αλλά των οποίων τα τρωτά σημεία μπορούν να θέσουν σε κίνδυνο το κύριο έργο.

Εταιρεία Mozilla σχεδιάζει να χρησιμοποιήστε το RLBox σε εκδόσεις Linux του Firefox 74 και εκδόσεις macOS του Firefox 75 για να απομονώσετε την εκτέλεση της βιβλιοθήκης γραφίτης, υπεύθυνος για την απόδοση γραμματοσειρών. Ωστόσο, το RLBox δεν είναι συγκεκριμένο για τον Firefox και μπορεί να χρησιμοποιηθεί για την απομόνωση τυχόν βιβλιοθηκών σε αυθαίρετα έργα. Εξελίξεις RLBox εξάπλωση με άδεια MIT. Το RLBox υποστηρίζει επί του παρόντος πλατφόρμες Linux και macOS, ενώ η υποστήριξη των Windows αναμένεται αργότερα.

Μηχανισμός Η δουλειά του RLBox καταλήγει στη μεταγλώττιση του κώδικα C/C++ μιας απομονωμένης βιβλιοθήκης σε ενδιάμεσο κώδικα WebAssembly χαμηλού επιπέδου, ο οποίος στη συνέχεια σχεδιάζεται ως λειτουργική μονάδα WebAssembly, τα δικαιώματα της οποίας ορίζονται μόνο σε σχέση με αυτήν την ενότητα (για παράδειγμα, μια βιβλιοθήκη για την επεξεργασία συμβολοσειρών δεν θα είναι δυνατό να ανοίξει μια υποδοχή δικτύου ή ένα αρχείο) . Η μετατροπή του κώδικα C/C++ σε WebAssembly γίνεται χρησιμοποιώντας wasi-sdk.

Για άμεση εκτέλεση, η ενότητα WebAssembly μεταγλωττίζεται σε κώδικα μηχανής χρησιμοποιώντας έναν μεταγλωττιστή Lucet και εκτελείται σε μια ξεχωριστή «νανοδιεργασία» απομονωμένη από την υπόλοιπη μνήμη της εφαρμογής. Ο μεταγλωττιστής Lucet βασίζεται στον ίδιο κώδικα με τον κινητήρα JIT ανελκυστήρας γερανού, που χρησιμοποιείται στον Firefox για την εκτέλεση του WebAssembly.

Η συναρμολογημένη μονάδα λειτουργεί σε ξεχωριστή περιοχή μνήμης και δεν έχει πρόσβαση στον υπόλοιπο χώρο διευθύνσεων. Εάν γίνει εκμετάλλευση μιας ευπάθειας στη βιβλιοθήκη, ο εισβολέας θα είναι περιορισμένος και δεν θα μπορεί να έχει πρόσβαση σε περιοχές μνήμης της κύριας διεργασίας ή να μεταφέρει έλεγχο εκτός του απομονωμένου περιβάλλοντος.

Η Mozilla ξεκινά την εφαρμογή της τεχνολογίας απομόνωσης βιβλιοθήκης RLBox

Παρέχονται πληροφορίες υψηλού επιπέδου για προγραμματιστές API, το οποίο σας επιτρέπει να καλείτε τις λειτουργίες της βιβλιοθήκης σε λειτουργία απομόνωσης. Οι χειριστές WebAssembly δεν απαιτούν σχεδόν καθόλου πρόσθετους πόρους και η αλληλεπίδραση μαζί τους δεν είναι πολύ πιο αργή από την κλήση συνηθισμένων συναρτήσεων (οι συναρτήσεις της βιβλιοθήκης εκτελούνται με τη μορφή εγγενούς κώδικα και το γενικό κόστος προκύπτει μόνο κατά την αντιγραφή και τον έλεγχο δεδομένων κατά την αλληλεπίδραση με το απομονωμένο περιβάλλον). Οι απομονωμένες συναρτήσεις βιβλιοθήκης δεν μπορούν να κληθούν απευθείας και πρέπει να προσπελαστούν χρησιμοποιώντας
στρώμα invoke_sandbox_function().

Με τη σειρά του, εάν είναι απαραίτητο να καλέσετε εξωτερικές συναρτήσεις από τη βιβλιοθήκη, αυτές οι συναρτήσεις πρέπει να οριστούν ρητά χρησιμοποιώντας τη μέθοδο register_callback (από προεπιλογή, το RLBox παρέχει πρόσβαση σε συναρτήσεις τυπική βιβλιοθήκη). Για να διασφαλιστεί η ασφάλεια της μνήμης, η απομόνωση εκτέλεσης κώδικα δεν είναι αρκετή και απαιτεί επίσης έλεγχο των επιστρεφόμενων ροών δεδομένων.

Οι τιμές που δημιουργούνται σε απομονωμένο περιβάλλον επισημαίνονται ως αναξιόπιστες και περιορισμένης χρήσης μολυσμένα σημάδια και για «καθαρισμό» απαιτούν επαλήθευση και αντιγραφή στη μνήμη της εφαρμογής.
Χωρίς εκκαθάριση, η απόπειρα χρήσης αλλοιωμένων δεδομένων σε ένα περιβάλλον που απαιτεί κανονικά δεδομένα (και αντίστροφα) έχει ως αποτέλεσμα τη δημιουργία σφαλμάτων κατά το χρόνο μεταγλώττισης. Μικρά ορίσματα συναρτήσεων, τιμές επιστροφής και δομές μεταβιβάζονται μέσω αντιγραφής μεταξύ της μνήμης διεργασίας και της μνήμης του sandbox. Για μεγάλα σύνολα δεδομένων, η μνήμη εκχωρείται σε ένα απομονωμένο περιβάλλον και ένας άμεσος δείκτης αναφοράς sandbox επιστρέφει στην κύρια διεργασία.

Πηγή: opennet.ru

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