Ένα θέμα ευπάθειας στο cryptsetup που σας επιτρέπει να απενεργοποιήσετε την κρυπτογράφηση σε διαμερίσματα LUKS2

Εντοπίστηκε ένα θέμα ευπάθειας (CVE-2021-4122) στο πακέτο Cryptsetup, το οποίο χρησιμοποιείται για την κρυπτογράφηση διαμερισμάτων δίσκου στο Linux, το οποίο επιτρέπει την απενεργοποίηση της κρυπτογράφησης σε διαμερίσματα σε μορφή LUKS2 (Linux Unified Key Setup) τροποποιώντας τα μεταδεδομένα. Για να εκμεταλλευτεί την ευπάθεια, ο εισβολέας πρέπει να έχει φυσική πρόσβαση στα κρυπτογραφημένα μέσα, δηλ. Η μέθοδος έχει νόημα κυρίως για επίθεση σε κρυπτογραφημένες εξωτερικές συσκευές αποθήκευσης, όπως μονάδες flash, στις οποίες ο εισβολέας έχει πρόσβαση αλλά δεν γνωρίζει τον κωδικό πρόσβασης για την αποκρυπτογράφηση των δεδομένων.

Η επίθεση ισχύει μόνο για τη μορφή LUKS2 και σχετίζεται με τη χειραγώγηση των μεταδεδομένων που είναι υπεύθυνα για την ενεργοποίηση της επέκτασης "online recryption", η οποία επιτρέπει, εάν είναι απαραίτητο να αλλάξετε το κλειδί πρόσβασης, να ξεκινήσει η διαδικασία επανακρυπτογράφησης δεδομένων εν κινήσει χωρίς διακοπή της εργασίας με το διαμέρισμα. Δεδομένου ότι η διαδικασία αποκρυπτογράφησης και κρυπτογράφησης με ένα νέο κλειδί απαιτεί πολύ χρόνο, η "online recryption" καθιστά δυνατή τη μη διακοπή της εργασίας με το διαμέρισμα και την εκ νέου κρυπτογράφηση στο παρασκήνιο, σταδιακά επανακρυπτογραφώντας τα δεδομένα από το ένα κλειδί στο άλλο . Είναι επίσης δυνατό να επιλέξετε ένα κενό κλειδί προορισμού, το οποίο σας επιτρέπει να μετατρέψετε την ενότητα σε αποκρυπτογραφημένη φόρμα.

Ένας εισβολέας μπορεί να κάνει αλλαγές στα μεταδεδομένα LUKS2 που προσομοιώνουν την ακύρωση της λειτουργίας αποκρυπτογράφησης ως αποτέλεσμα αποτυχίας και να επιτύχει αποκρυπτογράφηση μέρους του διαμερίσματος μετά την ενεργοποίηση και χρήση της τροποποιημένης μονάδας δίσκου από τον κάτοχο. Σε αυτήν την περίπτωση, ο χρήστης που έχει συνδέσει την τροποποιημένη μονάδα δίσκου και την έχει ξεκλειδώσει με τον σωστό κωδικό πρόσβασης δεν λαμβάνει καμία προειδοποίηση σχετικά με τη διαδικασία επαναφοράς της διακοπείσας λειτουργίας επανακρυπτογράφησης και μπορεί να μάθει για την πρόοδο αυτής της λειτουργίας μόνο χρησιμοποιώντας το "luks Dump" εντολή. Ο όγκος των δεδομένων που μπορεί να αποκρυπτογραφήσει ένας εισβολέας εξαρτάται από το μέγεθος της κεφαλίδας LUKS2, αλλά στο προεπιλεγμένο μέγεθος (16 MiB) μπορεί να υπερβαίνει τα 3 GB.

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

Ένα τυπικό σενάριο επίθεσης απαιτεί ο εισβολέας να μπορεί να πιάσει τη μονάδα δίσκου πολλές φορές. Πρώτον, ένας εισβολέας που δεν γνωρίζει τον κωδικό πρόσβασης κάνει αλλαγές στην περιοχή μεταδεδομένων, ενεργοποιώντας την αποκρυπτογράφηση μέρους των δεδομένων την επόμενη φορά που θα ενεργοποιηθεί η μονάδα δίσκου. Στη συνέχεια, η μονάδα επιστρέφει στη θέση της και ο εισβολέας περιμένει μέχρι ο χρήστης να τη συνδέσει εισάγοντας έναν κωδικό πρόσβασης. Όταν η συσκευή ενεργοποιηθεί από τον χρήστη, ξεκινά μια διαδικασία επανακρυπτογράφησης παρασκηνίου, κατά την οποία μέρος των κρυπτογραφημένων δεδομένων αντικαθίσταται με αποκρυπτογραφημένα δεδομένα. Επιπλέον, εάν ο εισβολέας καταφέρει να πιάσει ξανά τη συσκευή στα χέρια του, ορισμένα από τα δεδομένα στη μονάδα δίσκου θα είναι σε αποκρυπτογραφημένη μορφή.

Το πρόβλημα εντοπίστηκε από τον συντηρητή του έργου cryptsetup και επιδιορθώθηκε στις ενημερώσεις cryptsetup 2.4.3 και 2.3.7. Η κατάσταση των ενημερώσεων που δημιουργούνται για την επίλυση του προβλήματος στις διανομές μπορεί να παρακολουθηθεί σε αυτές τις σελίδες: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Η ευπάθεια εμφανίζεται μόνο μετά την κυκλοφορία του cryptsetup 2.2.0, το οποίο εισήγαγε την υποστήριξη για τη λειτουργία "online recryption". Ως λύση προστασίας, μπορεί να χρησιμοποιηθεί η εκκίνηση με την επιλογή "--disable-luks2-reencryption".

Πηγή: opennet.ru

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