Ένας μηχανισμός απομόνωσης παρόμοιος με το plegde αναπτύσσεται στο FreeBSD

Ανακοινώθηκε ότι έχει προταθεί μια υλοποίηση μηχανισμού απομόνωσης εφαρμογών για το FreeBSD , η οποία θυμίζει τις κλήσεις συστήματος foldde και unveil που αναπτύχθηκαν από το έργο OpenBSD.

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

Η διαφορά μεταξύ των εντολών `pledge` και `unveil` , που αναπτύχθηκαν για το FreeBSD , συνοψίζεται στην παροχή ενός πρόσθετου επιπέδου που επιτρέπει στις εφαρμογές να απομονώνονται με ελάχιστες ή καθόλου αλλαγές στον κώδικά τους. Να θυμάστε ότι στο OpenBSD, οι εντολές `pledge` και `unlock` στοχεύουν στην στενή ενσωμάτωση με το βασικό περιβάλλον και υλοποιούνται με την προσθήκη ειδικών σχολίων στον κώδικα κάθε εφαρμογής.

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

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

Το βοηθητικό πρόγραμμα κουρτίνας μπορεί να χρησιμοποιηθεί για την απομόνωση των περισσότερων βοηθητικών προγραμμάτων, διεργασιών διακομιστή, γραφικών εφαρμογών, ακόμη και ολόκληρων περιόδων σύνδεσης στην επιφάνεια εργασίας που δεν έχουν τροποποιηθεί. Υποστηρίζεται η κοινή κουρτίνα με τους μηχανισμούς απομόνωσης που παρέχονται από τα υποσυστήματα Jail και Capsicum.

Είναι επίσης δυνατή η ενσωματωμένη απομόνωση , όπου οι εφαρμογές που ξεκινούν κληρονομούν τους κανόνες που έχουν οριστεί από την κύρια εφαρμογή, συμπληρώνοντάς τους με ξεχωριστούς περιορισμούς. Ορισμένες λειτουργίες του πυρήνα (εργαλεία εντοπισμού σφαλμάτων, POSIX/SysV IPC, PTY) προστατεύονται περαιτέρω από έναν μηχανισμό φραγμού που εμποδίζει την πρόσβαση σε αντικείμενα πυρήνα που δημιουργούνται από διεργασίες διαφορετικές από την τρέχουσα ή την κύρια διεργασία.

Μια διεργασία μπορεί να διαμορφώσει τη δική της απομόνωση καλώντας την curtainctl ή χρησιμοποιώντας τις συναρτήσεις plead() και unveil() που παρέχονται από τη βιβλιοθήκη libcurtain, παρόμοιες με αυτές στο OpenBSD. Η sysctl 'security.curtain.log_level' παρέχεται για την παρακολούθηση των κλειδωμάτων ενώ η εφαρμογή εκτελείται.

Η πρόσβαση στα πρωτόκολλα X11 και Wayland είναι ενεργοποιημένη ξεχωριστά, καθορίζοντας τις επιλογές "-X"/"-Y" και "-W" κατά την εκκίνηση της κουρτίνας, αλλά η υποστήριξη για εφαρμογές γραφικών δεν έχει ακόμη σταθεροποιηθεί επαρκώς και έχει μια σειρά από ανεπίλυτα ζητήματα ( προβλήματα εμφανίζονται κυρίως όταν χρησιμοποιείτε το X11 και η υποστήριξη Wayland είναι πολύ καλύτερη). Οι χρήστες μπορούν να προσθέσουν επιπλέον περιορισμούς δημιουργώντας αρχεία τοπικών κανόνων (~/.curtain.conf). Για παράδειγμα,

Η υλοποίηση περιλαμβάνει τη λειτουργική μονάδα πυρήνα mac_curtain για υποχρεωτικό έλεγχο πρόσβασης (MAC), ένα σύνολο ενημερώσεων κώδικα για τον πυρήνα του FreeBSD με την υλοποίηση των απαραίτητων προγραμμάτων οδήγησης και φίλτρων, τη βιβλιοθήκη libcurtain για τη χρήση του plegde και των αποκαλυπτόμενων λειτουργιών σε εφαρμογές, το βοηθητικό πρόγραμμα, εμφανίζει διαμόρφωση αρχεία, μια σουίτα δοκιμών και ενημερώσεις κώδικα για ορισμένα προγράμματα χώρου χρήστη (για παράδειγμα, για χρήση του $TMPDIR για ενοποίηση της εργασίας με προσωρινά αρχεία). Όποτε είναι δυνατόν, ο συγγραφέας προσπαθεί να ελαχιστοποιήσει τον αριθμό των αλλαγών που απαιτούν επιδιόρθωση του πυρήνα και των εφαρμογών.

Τέλος, αν ενδιαφέρεστε να μάθετε περισσότερα , μπορείτε να βρείτε τις λεπτομέρειες στον παρακάτω σύνδεσμο.


Προσθήκη ως προτιμώμενης πηγής στην Google