Κυκλοφορία της μονάδας LKRG 0.8 για προστασία από την εκμετάλλευση τρωτών σημείων στον πυρήνα του Linux

Openwall Project δημοσιεύεται απελευθέρωση μονάδας πυρήνα LKRG 0.8 (Linux Kernel Runtime Guard), σχεδιασμένο να ανιχνεύει και να αποκλείει επιθέσεις και παραβιάσεις της ακεραιότητας των δομών του πυρήνα. Για παράδειγμα, η λειτουργική μονάδα μπορεί να προστατεύσει από μη εξουσιοδοτημένες αλλαγές στον εκτελούμενο πυρήνα και από προσπάθειες αλλαγής των δικαιωμάτων των διεργασιών χρήστη (ανίχνευση χρήσης εκμεταλλεύσεων). Η λειτουργική μονάδα είναι κατάλληλη τόσο για την οργάνωση προστασίας έναντι ήδη γνωστών εκμεταλλεύσεων για τον πυρήνα του Linux (για παράδειγμα, σε περιπτώσεις όπου είναι δύσκολο να ενημερώσετε τον πυρήνα στο σύστημα), όσο και για την αντιμετώπιση εκμεταλλεύσεων για άγνωστα ακόμη τρωτά σημεία. Κωδικός έργου διανέμονται από άδεια σύμφωνα με το GPLv2.

Μεταξύ των αλλαγών στη νέα έκδοση:

  • Η θέση του έργου LKRG έχει αλλάξει, το οποίο δεν χωρίζεται πλέον σε ξεχωριστά υποσυστήματα για τον έλεγχο της ακεραιότητας και τον προσδιορισμό της χρήσης εκμεταλλεύσεων, αλλά παρουσιάζεται ως πλήρες προϊόν για τον εντοπισμό επιθέσεων και διαφόρων παραβιάσεων ακεραιότητας.
  • Παρέχεται συμβατότητα με πυρήνες Linux από 5.3 έως 5.7, καθώς και με πυρήνες μεταγλωττισμένους με επιθετικές βελτιστοποιήσεις GCC, χωρίς τις επιλογές CONFIG_USB και CONFIG_STACKTRACE ή με την επιλογή CONFIG_UNWINDER_ORC, καθώς και με πυρήνες που δεν διαθέτουν λειτουργίες LKRG, να απαλειφθεί με?
  • Κατά τη δημιουργία, ορισμένες υποχρεωτικές ρυθμίσεις πυρήνα CONFIG_* ελέγχονται για τη δημιουργία σημαντικών μηνυμάτων σφάλματος αντί για σκοτεινές διακοπές λειτουργίας.
  • Προστέθηκε υποστήριξη για λειτουργίες αναμονής (ACPI S3, αναστολή στη μνήμη RAM) και αναστολής λειτουργίας (S4, αναστολή σε δίσκο).
  • Προστέθηκε υποστήριξη DKMS στο Makefile.
  • Έχει υλοποιηθεί πειραματική υποστήριξη για πλατφόρμες ARM 32-bit (δοκιμάστηκε στο Raspberry Pi 3 Model B). Η προηγουμένως διαθέσιμη υποστήριξη AArch64 (ARM64) έχει επεκταθεί για να παρέχει συμβατότητα με την πλακέτα Raspberry Pi 4.
  • Έχουν προστεθεί νέα άγκιστρα, συμπεριλαμβανομένου ενός ικανού() χειριστή κλήσεων για τον καλύτερο εντοπισμό εκμεταλλεύσεων που χειρίζονται "δυνατότητες", όχι αναγνωριστικά επεξεργασίας (Διαπιστευτήρια);
  • Νέα λογική έχει προταθεί για τον εντοπισμό προσπαθειών διαφυγής περιορισμών χώρου ονομάτων (για παράδειγμα, από κοντέινερ Docker).
  • Στα συστήματα x86-64, ελέγχεται και εφαρμόζεται το bit SMAP (Supervisor Mode Access Prevention), σχεδιασμένο να εμποδίζει την πρόσβαση στα δεδομένα χώρου χρήστη από προνομιούχο κώδικα που εκτελείται σε επίπεδο πυρήνα. Η προστασία SMEP (Supervisor Mode Execution Prevention) είχε εφαρμοστεί στο παρελθόν.
  • Κατά τη λειτουργία, οι ρυθμίσεις LKRG τοποθετούνται σε μια σελίδα μνήμης που είναι συνήθως μόνο για ανάγνωση.
  • Οι πληροφορίες καταγραφής που μπορεί να είναι πιο χρήσιμες για επιθέσεις (για παράδειγμα, πληροφορίες σχετικά με διευθύνσεις στον πυρήνα) περιορίζονται στη λειτουργία εντοπισμού σφαλμάτων (log_level=4 και άνω), η οποία είναι απενεργοποιημένη από προεπιλογή.
  • Η επεκτασιμότητα της βάσης δεδομένων παρακολούθησης διεργασιών έχει αυξηθεί - αντί για ένα δέντρο RB που προστατεύεται από ένα spinlock, χρησιμοποιείται ένας πίνακας κατακερματισμού 512 δέντρων RB που προστατεύονται από 512 κλειδαριές ανάγνωσης-εγγραφής.
  • Μια λειτουργία έχει εφαρμοστεί και ενεργοποιηθεί από προεπιλογή, στην οποία η ακεραιότητα των αναγνωριστικών διεργασίας ελέγχεται συχνά μόνο για την τρέχουσα εργασία και επίσης προαιρετικά για ενεργοποιημένες εργασίες (αφύπνιση). Για άλλες εργασίες που βρίσκονται σε κατάσταση αναστολής λειτουργίας ή λειτουργούν χωρίς πρόσβαση στο API του πυρήνα που ελέγχεται από την LKRG, ο έλεγχος εκτελείται λιγότερο συχνά.
  • Προστέθηκαν νέες παράμετροι sysctl και λειτουργικής μονάδας για τη λεπτομέρεια του LKRG, καθώς και δύο sysctl για απλοποιημένη διαμόρφωση επιλέγοντας από τα σύνολα ρυθμίσεων (προφίλ) μικρορύθμισης που έχουν προετοιμαστεί από τους προγραμματιστές.
  • Οι προεπιλεγμένες ρυθμίσεις έχουν αλλάξει για να επιτευχθεί μια πιο ισορροπημένη ισορροπία μεταξύ της ταχύτητας εντοπισμού παραβιάσεων και της αποτελεσματικότητας της απόκρισης, αφενός, και του αντίκτυπου στην απόδοση και του κινδύνου ψευδώς θετικών αποτελεσμάτων, αφετέρου.
  • Το αρχείο μονάδας systemd έχει επανασχεδιαστεί για να φορτώνει τη λειτουργική μονάδα LKRG νωρίς κατά την εκκίνηση (μπορεί να χρησιμοποιηθεί μια επιλογή γραμμής εντολών πυρήνα για την απενεργοποίηση της λειτουργικής μονάδας).

Λαμβάνοντας υπόψη τις βελτιστοποιήσεις που προτείνονται στη νέα έκδοση, η μείωση της απόδοσης κατά τη χρήση του LKRG 0.8 εκτιμάται σε 2.5% στην προεπιλεγμένη λειτουργία ("βαρύ") και 2% σε λειτουργία φωτός ("ελαφριά").

Σε μια που πραγματοποιήθηκε πρόσφατα έρευνα αποτελεσματικότητα πακέτων για την ανίχνευση rootkits LKRG έδειξε καλύτερα αποτελέσματα, προσδιορίζοντας 8 από τα 9 δοκιμασμένα rootkits που λειτουργούν σε επίπεδο πυρήνα χωρίς ψευδώς θετικά (rootkits Diamorphine, Honey Pot Bears, LilyOfTheValley, Nuk3 Gh0st, Puszek, Reptile, Rootfoo Linux Rootkit και Sutekh εντοπίστηκαν, αλλά ένα Keysniffer, το οποίο είναι ενότητα, χάθηκε με ένα keylogger, όχι ένα rootkit με την κυριολεκτική έννοια). Για σύγκριση, τα πακέτα AIDE, OSSEC και Rootkit Hunter εντόπισαν 2 από τα 9 rootkit, ενώ το Chkrootkit δεν εντόπισε κανένα. Ταυτόχρονα, το LKRG δεν υποστηρίζει την ανίχνευση των rootkit που βρίσκονται στο χώρο του χρήστη, επομένως η μεγαλύτερη αποτελεσματικότητα επιτυγχάνεται όταν χρησιμοποιείται ένας συνδυασμός AIDE και LKRG, ο οποίος κατέστησε δυνατή την αναγνώριση 14 από τα 15 rootkits όλων των τύπων.

Επιπλέον, μπορεί να σημειωθεί ότι ο προγραμματιστής διανομής Whonix άρχισε διαμόρφωση έτοιμα πακέτα με DKMS για Debian, Whonix, Qubes και Kicksecure και ένα πακέτο για Arch Linux έχει ήδη ενημερωθεί στην έκδοση 0.8. Τα πακέτα με LKRG είναι επίσης διαθέσιμα στα ρωσικά alt linux и AstraLinux.

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

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

Πηγή: opennet.ru

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