Δύσκολα διορθωμένα τρωτά σημεία στο GRUB2 που σας επιτρέπουν να παρακάμψετε το UEFI Secure Boot

Έχουν αποκαλυφθεί πληροφορίες σχετικά με 8 τρωτά σημεία στο πρόγραμμα εκκίνησης GRUB2, τα οποία σας επιτρέπουν να παρακάμψετε τον μηχανισμό Ασφαλούς εκκίνησης UEFI και να εκτελέσετε μη επαληθευμένο κώδικα, για παράδειγμα, να εφαρμόσετε κακόβουλο λογισμικό που εκτελείται σε επίπεδο φορτωτή εκκίνησης ή πυρήνα.

Ας θυμηθούμε ότι στις περισσότερες διανομές Linux, για επαληθευμένη εκκίνηση σε λειτουργία Ασφαλούς εκκίνησης UEFI, χρησιμοποιείται ένα μικρό στρώμα shim, ψηφιακά υπογεγραμμένο από τη Microsoft. Αυτό το επίπεδο επαληθεύει το GRUB2 με το δικό του πιστοποιητικό, το οποίο επιτρέπει στους προγραμματιστές διανομής να μην έχουν κάθε πυρήνα και ενημέρωση GRUB πιστοποιημένη από τη Microsoft. Τα τρωτά σημεία στο GRUB2 σάς επιτρέπουν να επιτύχετε την εκτέλεση του κώδικά σας στο στάδιο μετά την επιτυχή επαλήθευση shim, αλλά πριν από τη φόρτωση του λειτουργικού συστήματος, ενσωματώνοντας την αλυσίδα εμπιστοσύνης όταν είναι ενεργή η λειτουργία Ασφαλούς εκκίνησης και αποκτώντας πλήρη έλεγχο της περαιτέρω διαδικασίας εκκίνησης, συμπεριλαμβανομένων φόρτωση άλλου λειτουργικού συστήματος, τροποποίηση του συστήματος στοιχείων λειτουργικού συστήματος και παράκαμψη της προστασίας κλειδώματος.

Όπως και με την ευπάθεια του BootHole του περασμένου έτους, η ενημέρωση του bootloader δεν αρκεί για να αποκλείσει το πρόβλημα, καθώς ένας εισβολέας, ανεξάρτητα από το λειτουργικό σύστημα που χρησιμοποιείται, μπορεί να χρησιμοποιήσει εκκινήσιμα μέσα με μια παλιά, ψηφιακά υπογεγραμμένη, ευάλωτη έκδοση του GRUB2 για να θέσει σε κίνδυνο την Ασφαλή εκκίνηση του UEFI. Το πρόβλημα μπορεί να λυθεί μόνο με την ενημέρωση της λίστας ανάκλησης πιστοποιητικών (dbx, UEFI Revocation List), αλλά σε αυτήν την περίπτωση θα χαθεί η δυνατότητα χρήσης παλιών μέσων εγκατάστασης με Linux.

Σε συστήματα με υλικολογισμικό που διαθέτουν ενημερωμένη λίστα ανάκλησης πιστοποιητικών, μόνο ενημερωμένες εκδόσεις διανομών Linux μπορούν να φορτωθούν σε λειτουργία Ασφαλούς εκκίνησης UEFI. Οι διανομές θα πρέπει να ενημερώσουν τους εγκαταστάτες, τους bootloaders, τα πακέτα πυρήνα, το υλικολογισμικό fwupd και το επίπεδο shim, δημιουργώντας νέες ψηφιακές υπογραφές για αυτούς. Οι χρήστες θα πρέπει να ενημερώσουν τις εικόνες εγκατάστασης και άλλα μέσα εκκίνησης, καθώς και να φορτώσουν μια λίστα ανάκλησης πιστοποιητικών (dbx) στο υλικολογισμικό UEFI. Πριν από την ενημέρωση του dbx σε UEFI, το σύστημα παραμένει ευάλωτο ανεξάρτητα από την εγκατάσταση ενημερώσεων στο λειτουργικό σύστημα. Η κατάσταση των τρωτών σημείων μπορεί να αξιολογηθεί σε αυτές τις σελίδες: Ubuntu, SUSE, RHEL, Debian.

Για την επίλυση προβλημάτων που προκύπτουν κατά τη διανομή των ανακληθέντων πιστοποιητικών, στο μέλλον σχεδιάζεται η χρήση του μηχανισμού SBAT (UEFI Secure Boot Advanced Targeting), η υποστήριξη του οποίου έχει εφαρμοστεί για τα GRUB2, shim και fwupd και ξεκινώντας από τις επόμενες ενημερώσεις θα χρησιμοποιείται αντί της λειτουργικότητας που παρέχεται από το πακέτο dbxtool. Το SBAT αναπτύχθηκε από κοινού με τη Microsoft και περιλαμβάνει την προσθήκη νέων μεταδεδομένων σε εκτελέσιμα στοιχεία UEFI, τα οποία περιλαμβάνουν πληροφορίες κατασκευαστή, προϊόντος, στοιχείου και έκδοσης. Τα καθορισμένα μεταδεδομένα είναι πιστοποιημένα με ψηφιακή υπογραφή και μπορούν επιπλέον να συμπεριληφθούν στις λίστες επιτρεπόμενων ή απαγορευμένων στοιχείων για την Ασφαλή εκκίνηση του UEFI. Έτσι, το SBAT θα επιτρέψει στην ανάκληση να χειριστεί τους αριθμούς εκδόσεων των στοιχείων χωρίς την ανάγκη αναγέννησης κλειδιών για την Ασφαλή εκκίνηση και χωρίς τη δημιουργία νέων υπογραφών για τον πυρήνα, το shim, το grub2 και το fwupd.

Εντοπίστηκαν τρωτά σημεία:

  • CVE-2020-14372 – Χρησιμοποιώντας την εντολή acpi στο GRUB2, ένας προνομιούχος χρήστης στο τοπικό σύστημα μπορεί να φορτώσει τροποποιημένους πίνακες ACPI τοποθετώντας έναν SSDT (Δευτερεύων Πίνακας Περιγραφής Συστήματος) στον κατάλογο /boot/efi και αλλάζοντας τις ρυθμίσεις στο grub.cfg. Αν και η λειτουργία Ασφαλούς εκκίνησης είναι ενεργή, το προτεινόμενο SSDT θα εκτελεστεί από τον πυρήνα και μπορεί να χρησιμοποιηθεί για την απενεργοποίηση της προστασίας LockDown που αποκλείει τις διαδρομές παράκαμψης Ασφαλούς εκκίνησης UEFI. Ως αποτέλεσμα, ένας εισβολέας μπορεί να επιτύχει τη φόρτωση της μονάδας πυρήνα του ή τον κώδικα εκτέλεσης μέσω του μηχανισμού kexec, χωρίς να ελέγξει την ψηφιακή υπογραφή.
  • Το CVE-2020-25632 είναι μια πρόσβαση στη μνήμη χωρίς χρήση κατά την υλοποίηση της εντολής rmmod, η οποία συμβαίνει όταν γίνεται προσπάθεια εκφόρτωσης οποιασδήποτε μονάδας χωρίς να λαμβάνονται υπόψη οι εξαρτήσεις που σχετίζονται με αυτήν. Η ευπάθεια δεν αποκλείει τη δημιουργία ενός exploit που θα μπορούσε να οδηγήσει σε εκτέλεση κώδικα παρακάμπτοντας την επαλήθευση Secure Boot.
  • CVE-2020-25647 Μια εγγραφή εκτός ορίων στη συνάρτηση grub_usb_device_initialize() που καλείται κατά την προετοιμασία συσκευών USB. Το πρόβλημα μπορεί να εκμεταλλευτεί συνδέοντας μια ειδικά προετοιμασμένη συσκευή USB που παράγει παραμέτρους των οποίων το μέγεθος δεν αντιστοιχεί στο μέγεθος του buffer που έχει εκχωρηθεί για δομές USB. Ένας εισβολέας μπορεί να επιτύχει την εκτέλεση κώδικα που δεν επαληθεύεται στην Ασφαλή εκκίνηση χειρίζοντας συσκευές USB.
  • Το CVE-2020-27749 είναι μια υπερχείλιση buffer στη συνάρτηση grub_parser_split_cmdline(), η οποία μπορεί να προκληθεί καθορίζοντας μεταβλητές μεγαλύτερες από 2 KB στη γραμμή εντολών GRUB1. Η ευπάθεια επιτρέπει στην εκτέλεση κώδικα να παρακάμψει την Ασφαλή εκκίνηση.
  • CVE-2020-27779 – Η εντολή cutmem επιτρέπει σε έναν εισβολέα να αφαιρέσει μια σειρά από διευθύνσεις από τη μνήμη για να παρακάμψει την Ασφαλή εκκίνηση.
  • CVE-2021-3418 - Οι αλλαγές στο shim_lock δημιούργησαν ένα πρόσθετο διάνυσμα για την εκμετάλλευση της ευπάθειας του περασμένου έτους CVE-2020-15705. Εγκαθιστώντας το πιστοποιητικό που χρησιμοποιήθηκε για την υπογραφή του GRUB2 στο dbx, το GRUB2 επέτρεψε τη φόρτωση οποιουδήποτε πυρήνα απευθείας χωρίς επαλήθευση της υπογραφής.
  • CVE-2021-20225 - Δυνατότητα εγγραφής δεδομένων εκτός ορίων κατά την εκτέλεση εντολών με πολύ μεγάλο αριθμό επιλογών.
  • CVE-2021-20233 - Δυνατότητα εγγραφής δεδομένων εκτός ορίων λόγω λανθασμένου υπολογισμού μεγέθους buffer κατά τη χρήση εισαγωγικών. Κατά τον υπολογισμό του μεγέθους, θεωρήθηκε ότι απαιτούνταν τρεις χαρακτήρες για να ξεφύγουν από ένα μόνο εισαγωγικό, ενώ στην πραγματικότητα απαιτούνταν τέσσερις.

Πηγή: opennet.ru

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