Τα χαρακτηριστικά ασφαλείας υλικού είναι τόσο ασφαλή όσο και το λογισμικό τους. Αυτό αποδεικνύεται από την παραβίαση ενός παλαιότερου τσιπ Nvidia , το οποίο χρησιμοποίησε και η Tesla.
Ο επεξεργαστής Tegra X2 της Nvidia διαθέτει έναν ειδικό επεξεργαστή εκκίνησης και διαχείρισης ενέργειας (BPMP) και ενσωματωμένο firmware εκκίνησης που έχει σχεδιαστεί για να αποτρέπει την εκτέλεση προσαρμοσμένου λογισμικού.
Ωστόσο, αυτό το firmware έχει ευπάθειες, όπως κατέδειξε η χάκερ Elise Amber Katze στο 39ο Συνέδριο Επικοινωνίας του Χάους στο Αμβούργο.
Η αρχική πρόθεση ήταν να καταστεί το Magic Leap One (κριτική) ελεύθερα χρησιμοποιήσιμο μετά το κλείσιμο των διακομιστών του κατασκευαστή. Αλλά το τσιπ χρησιμοποιείται επίσης στο Autopilot Hardware 2 της Tesla.
Δεδομένου ότι η διαδικασία εκκίνησης περιλαμβάνει πολλά βήματα, ο χάκερ εντόπισε τρία σημεία επίθεσης: πρώτον, μέσω του τρίτου σταδίου του bootloader που ονομάζεται Cboot, αλλά και μέσω του firmware του BPMP, το οποίο είναι μόνιμα ενσωματωμένο στο σύστημα-σε-ένα-τσιπ (SoC).
Ο bootloader του Cboot, του οποίου τον πηγαίο κώδικα δημοσίευσε η Nvidia, περιέχει μια ευπάθεια ασφαλείας που επιτρέπει την αντικατάσταση της στοίβας.
Σχετικά με το πρωτόκολλο Fastboot, μπορεί να εισαχθεί προσαρμοσμένος κώδικας. Αυτό καθιστά δυνατή την ανάγνωση του κώδικα Cboot και τμημάτων του υλικολογισμικού BPMP.
Επιπλέον, μέσω ενός χειραγωγημένου Partition στο Device Tree (DTB), το Cboot στο TX2 μπορεί να ρυθμιστεί ώστε να αντικαθίσταται από αυθαίρετο κώδικα – επιτρέποντας έτσι τη φόρτωση ενός προσαρμοσμένου bootloader.
Μέρος του υλικολογισμικού είναι κρυφό
Ο χάκερ απέκτησε το πλήρες υλικολογισμικό BPMP χρησιμοποιώντας σφάλματα τάσης. Αυτό περιλαμβάνει τη σύντομη και σκόπιμη μείωση της τάσης τροφοδοσίας για την σκόπιμη πρόκληση σφαλμάτων.
Οι ερευνητές ασφαλείας είχαν ήδη εκμεταλλευτεί αυτήν την ευπάθεια το 2023 για να παρακάμψουν το τσιπ ασφαλείας στο υλικό Autopilot της Tesla. Στο Tegra X2, αυτή η ευπάθεια εμποδίζει τη ρύθμιση ενός μητρώου για την απόκρυψη μέρους του υλικολογισμικού BPMP από τη μνήμη.
Αυτό επέτρεψε την ανάγνωση ολόκληρου του υλικολογισμικού – και αυτό μπορεί επίσης να παραβιαστεί.
Ωστόσο, η εισαγωγή προσαρμοσμένου λογισμικού στο BPMP ήταν πιο περίπλοκη από ό,τι με το Cboot.
Η Nvidia μειώνει το κόστος εις βάρος της ασφάλειας
Ένας τρόπος επίθεσης για το firmware BPMP είναι η λειτουργία ανάκτησης USB, σε συνδυασμό με μια ειδική λειτουργία της ROM εκκίνησης.
Η λειτουργία ανάκτησης επιτρέπει τη μεταφορά δεδομένων στο SoC, παρόμοια με το Fastboot. Και εδώ, το λογισμικό είναι ελαττωματικό, επιτρέποντας τη μεταφορά μιας αυθαίρετης ποσότητας δεδομένων.
Το υλικό USB στη συνέχεια γράφει αυτά τα δεδομένα κομμάτι-κομμάτι στον χώρο διευθύνσεων.
Ένα ελάττωμα στο υλικό USB επιτρέπει την αντικατάσταση ολόκληρου του χώρου διευθύνσεων 32-bit. Ωστόσο, η αξιοποίηση αυτού για την εκτέλεση προσαρμοσμένου λογισμικού δεν είναι απλή:
Ο ελεγκτής USB μπορεί να γράψει μόνο στη μνήμη RAM του συστήματος, ενώ το BPMP διατηρεί τη στοίβα του στη δική του ξεχωριστή μνήμη. Αυτό αποτρέπει την απλή αντικατάσταση διευθύνσεων επιστροφής.
Η απομονωμένη μνήμη του BPMP μπορεί να χειριστεί εν μέρει αντικαθιστώντας τις δομές δεδομένων που χρησιμοποιούνται από τον ίδιο τον ελεγκτή USB.
Αυτό μπορεί να χρησιμοποιηθεί για να κάνει τον bootloader να δημιουργήσει μια νέα δομή δεδομένων σε οποιαδήποτε διεύθυνση ευθυγραμμισμένη με 16 byte – ακόμη και στην απομονωμένη μνήμη.
Είναι σπασμένο από τις επιδιορθώσεις
Ωστόσο, αυτό περιορίζει τις δυνατότητες. Το περιεχόμενο της νέας δομής δεδομένων δεν μπορεί να ελεγχθεί ελεύθερα. Είναι όμως δυνατό να ξεγελαστεί το BPMP ώστε να εκτελέσει κώδικα από τη μνήμη RAM λόγω μιας άλλης ευπάθειας ασφαλείας.
Αυτό αποτελεί μέρος μιας λειτουργίας που εισήγαγε η Nvidia για να αποφύγει τις δαπανηρές αναθεωρήσεις υλικού: Για τη διόρθωση σφαλμάτων στο ενσωματωμένο υλικολογισμικό, μπορεί να τροποποιηθεί χρησιμοποιώντας ενημερώσεις κώδικα (patches).
Ενώ αυτές διαμορφώνονται κατά την παραγωγή, μπορούν να ενεργοποιήσουν κλήσεις συστήματος για πιο σύνθετες αλλαγές – και ο αντίστοιχος χειριστής μπορεί να χρησιμοποιηθεί για να δώσει εντολή στον κώδικα BPMP να μεταβεί σε μια διεύθυνση στη μνήμη RAM του συστήματος.
Αυτό περιλαμβάνει τον χειρισμό ενός τμήματος του κώδικα, το οποίο, σε συνδυασμό με μια κατάλληλη κλήση—που προκύπτει από την ανάγνωση του Device Descriptors του τελικού σημείου ελέγχου USB—μπορεί να χρησιμοποιηθεί για τη μετάβαση σε μια διεύθυνση στη μνήμη RAM του συστήματος.
Μια περιγραφή όλων των ευπαθειών μπορεί να βρεθεί στο αποθετήριο Codeberg της Elise Amber Katze.
Ωστόσο, το hack λογικά δεν θα πρέπει να δημιουργήσει πρόβλημα. Η Nvidia διέκοψε την παραγωγή του Tegra TX2, ενός επεξεργαστή γενιάς Pascal που κυκλοφόρησε το 2016. Οι μεταγενέστερες παραλλαγές του Tegra είχαν τουλάχιστον τα κενά ασφαλείας στο Cboot.
