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

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

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

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

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

Μια διεργασία μπορεί να διαμορφώσει τη δική της απομόνωση καλώντας curtainctl ή χρησιμοποιώντας τις συναρτήσεις plegde() και unveil() του libcurtain, παρόμοιες με αυτές που βρίσκονται στο OpenBSD. Για την παρακολούθηση κλειδαριών ενώ εκτελείται η εφαρμογή, παρέχεται το sysctl 'security.curtain.log_level'. Η πρόσβαση στα πρωτόκολλα X11 και Wayland είναι ενεργοποιημένη ξεχωριστά καθορίζοντας τις επιλογές "-X"/"-Y" και "-W" κατά την εκτέλεση κουρτίνας, αλλά η υποστήριξη για εφαρμογές γραφικών δεν έχει ακόμη σταθεροποιηθεί επαρκώς και έχει έναν αριθμό ανεπίλυτων προβλημάτων ( προβλήματα εμφανίζονται κυρίως κατά τη χρήση του X11 και η υποστήριξη Wayland υλοποιείται πολύ καλύτερα). Οι χρήστες μπορούν να προσθέσουν επιπλέον περιορισμούς δημιουργώντας αρχεία τοπικών κανόνων (~/.curtain.conf). Για παράδειγμα, για να επιτρέπεται η εγγραφή από το Firfox μόνο στον κατάλογο ~/Downloads/, μπορείτε να προσθέσετε μια ενότητα “[firefox]” με τον κανόνα “~/Downloads/ : rw +”.

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

Πηγή: opennet.ru

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