Η Microsoft πρότεινε σύστημα ελέγχου πρόσβασης IPE για τον πυρήνα του Linux

Η εταιρεία έθεσε προς συζήτηση στη λίστα αλληλογραφίας προγραμματιστών πυρήνα Linux τον κώδικα για μια ενότητα LSM με εφαρμογή του μηχανισμού IPE (Integrity Policy Enforcement), ο οποίος επεκτείνει τα υπάρχοντα υποχρεωτικά συστήματα ελέγχου πρόσβασης. Αντί να δεσμεύεται με ετικέτες και διαδρομές στο IPE, η απόφαση να επιτραπεί ή να απορριφθεί μια λειτουργία λαμβάνεται με βάση τις μόνιμες ιδιότητες του στοιχείου συστήματος στο οποίο εκτελείται η λειτουργία. Η ενότητα σάς επιτρέπει να ορίσετε μια γενική πολιτική ακεραιότητας για ολόκληρο το σύστημα, υποδεικνύοντας ποιες λειτουργίες επιτρέπονται και πώς πρέπει να επαληθεύεται η αυθεντικότητα των στοιχείων.

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

Ο προτεινόμενος μηχανισμός μπορεί να χρησιμοποιηθεί σε υλικολογισμικό για ενσωματωμένες συσκευές, στις οποίες όλο το λογισμικό και οι ρυθμίσεις συναρμολογούνται ειδικά και παρέχονται από τον ιδιοκτήτη, για παράδειγμα, στα κέντρα δεδομένων της Microsoft, το IPE χρησιμοποιείται σε εξοπλισμό τείχους προστασίας. Αυτό που διακρίνει το IPE από άλλα συστήματα ελέγχου ακεραιότητας, όπως το IMA, είναι η ανεξαρτησία του από τα μεταδεδομένα στο FS - όλες οι ιδιότητες που καθορίζουν το επιτρεπτό των λειτουργιών αποθηκεύονται απευθείας στον πυρήνα.

Οι κανόνες καθορίζονται σε μορφή κειμένου χρησιμοποιώντας σύνολα κλειδιών-τιμών. Τα βασικά είναι το κλειδί "op", το οποίο ορίζει τη λειτουργία στην οποία ισχύει ο κανόνας (για παράδειγμα, το op=EXECUTE θα λειτουργήσει όταν επιχειρήσετε να το εκτελέσετε) και το κλειδί "action", το οποίο ορίζει την ενέργεια (για παράδειγμα, " action=DENY» για αποκλεισμό). Οι κανόνες δεσμεύονται σε ιδιότητες που παρέχονται από εξωτερικά υποσυστήματα όπως το dm-verity και το fs-verity.

Για παράδειγμα, οι κανόνες op=EXECUTE boot_verified=TRUE action=ALLOW op=EXECUTE dmverity_signature=FALSE action=DENY op=EXECUTE fsverity_digest=sha256:401fce…0dec146938 action=DENY θα επιτρέπουν μόνο την εκκίνηση από μια επαληθευμένη εκκίνηση του διαμερίσματος. από κατατμήσεις που δεν έχουν υπογραφές στο dm-verity και επίσης θα απαγορεύουν επιλεκτικά την εκτέλεση ενός αρχείου με κατακερματισμό "401fce...0dec146938".

Ένα αρχικό σύνολο κανόνων εκκίνησης ορίζεται χρησιμοποιώντας τη ρύθμιση SECURITY_IPE_BOOT_POLICY και περιλαμβάνεται ως μέρος της κατασκευής του πυρήνα και άλλοι κανόνες προστίθενται όπως απαιτείται μέσω του αρχείου /sys/kernel/security/ipe/new_policy. Οι μεταδιδόμενοι κανόνες κρυπτογραφούνται χρησιμοποιώντας το πιστοποιητικό που ορίζεται στο SYSTEM_TRUSTED_KEYRING.

Σε συστήματα γενικής χρήσης, προτείνεται η χρήση IPE σε συνδυασμό με τον μηχανισμό DIGLIM που αναπτύχθηκε από την Huawei. Το DIGLIM υλοποιείται με χρήση eBPF και σας επιτρέπει να εφαρμόζετε εύκολα τον έλεγχο ακεραιότητας σε επίπεδο μεμονωμένων αρχείων σε κανονικές διανομές χωρίς να απαιτείται επανασχεδιασμός τους (παρουσιάζεται ως παραλλαγή του Secure Boot που λειτουργεί σε επίπεδο εφαρμογής). Η ουσία του DIGLIM είναι να διατηρεί μια δεξαμενή κατακερματισμών επαλήθευσης για αρχεία και μεταδεδομένα και να παρέχει πρόσβαση σε εκτελέσιμα αρχεία μόνο εάν ο κατακερματισμός του υπάρχει στο χώρο συγκέντρωσης. Η λίστα των κατακερματισμών μπορεί να ληφθεί από τον διαχειριστή πακέτων RPM ή να δημιουργηθεί με μη αυτόματο τρόπο από τον χρήστη.

Πηγή: opennet.ru

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