Ο προγραμματιστής του Magisk ανακάλυψε ότι η Google μπορεί να έχει αρχίσει να χρησιμοποιεί ελέγχους υλικού για να προσδιορίσει εάν μια συσκευή έχει ξεκλειδωθεί από το bootloader.
Αναγνωρισμένος προγραμματιστής XDA topjohnwuΤο έργο "Magisk" του έχει ουσιαστικά γίνει συνώνυμο του "root" στην κοινότητα του Android. Ένας από τους κύριους λόγους που είναι τόσο δημοφιλές είναι επειδή μπορεί να κρύψει το γεγονός ότι ο χρήστης έχει τροποποιήσει τη συσκευή του. Ωστόσο, η Google μπορεί να καταπολεμήσει την ικανότητα του Magisk να αποκρύπτει την κατάσταση ξεκλειδώματος του bootloader από τις εφαρμογές.
Για να κάνετε root το τηλέφωνό σας, συνήθως χρειάζεται να ξεκλειδώσετε το bootloader, το οποίο σας επιτρέπει να αναβοσβήσετε τροποποιημένες εικόνες εκκίνησης. Αυτό είναι απαραίτητο επειδή το Magisk τροποποιεί την εικόνα εκκίνησης για να πλαστογραφήσει την κατάσταση του φορτωτή εκκίνησης ή/και τους ελέγχους κατάστασης επαληθευμένης εκκίνησης. Το SafetyNet Attestation API της Google, το οποίο αποτελεί μέρος των Υπηρεσιών Google Play, χρησιμοποιείται για να ενημερώνει μια εφαρμογή εάν εκτελείται σε μια παραποιημένη συσκευή. εάν το SafetyNet API εντοπίσει ότι ο bootloader έχει ξεκλειδωθεί, τότε θα επιστρέψει μια κατάσταση αποτυχίας για τον έλεγχο "Basic Integrity". Οι συσκευές που αποτυγχάνουν σε αυτόν τον έλεγχο μπορούν στη συνέχεια να κλειδωθούν από εφαρμογές που χρησιμοποιούν το SafetyNet API για τον προσδιορισμό της ακεραιότητας της συσκευής. Τέτοιες εφαρμογές περιλαμβάνουν συνήθως τραπεζικές εφαρμογές, εφαρμογές πληρωμής (όπως το Google Pay) και πολλά διαδικτυακά παιχνίδια (όπως το Pokémon Go). Ωστόσο, επειδή το SafetyNet API έχει χρησιμοποιήσει μέχρι στιγμής μόνο ελέγχους λογισμικού για να προσδιορίσει εάν η συσκευή έχει παραβιαστεί, το Magisk μπορεί απλώς να πλαστογραφήσει το bootloader ή/και επαληθευμένη κατάσταση εκκίνησης, καθώς είναι εγκατεστημένο σε χαμηλότερο επίπεδο και με υψηλότερα προνόμια από τις Υπηρεσίες Google Play και άλλους χρήστες εφαρμογές. Όπως εξηγεί ο topjohnwu, το MagiskHide «[δημιουργεί] ένα απομονωμένο «ασφαλές περιβάλλον» για τη διαδικασία ανίχνευσης και περνά από το API της Google για να δημιουργήσει ένα
νόμιμη Αποτέλεσμα SafetyNet που δεν αντικατοπτρίζει την πραγματική κατάσταση της συσκευής."Πρόσφατα, ωστόσο, οι χρήστες παρατήρησαν ότι οι συσκευές τους που ξεκλειδώνουν το bootloader αποτυγχάνουν στον έλεγχο βασικής ακεραιότητας του SafetyNet, παρόλο που χρησιμοποίησαν το Magisk για να επιδιορθώσουν την εικόνα εκκίνησης. Σύμφωνα με το topjohnwu, αυτό συμβαίνει επειδή η Google μπορεί να έχει εφαρμόσει βεβαίωση κλειδιού σε επίπεδο υλικού για να επαληθεύσει ότι η εικόνα εκκίνησης δεν έχει παραβιαστεί. Συγκεκριμένα, αυτό σημαίνει ότι οι Υπηρεσίες Google Play "[αποστέλλουν] ένα μη τροποποιημένο πιστοποιητικό αποθήκευσης κλειδιών στους διακομιστές SafetyNet, επαληθεύουν τη νομιμότητά του και ελέγχουν δεδομένα επέκτασης πιστοποιητικού για να γνωρίζετε εάν η συσκευή σας [έχει] ενεργοποιήσει την επαληθευμένη εκκίνηση (κατάσταση του bootloader).» Αυτό σημαίνει ότι μπορεί να μην είναι πλέον είναι δυνατό να αποκρύψετε το γεγονός ότι ο bootloader έχει ξεκλειδωθεί, γεγονός που θα έχει ως αποτέλεσμα εφαρμογές όπως το Google Pay και το Pokémon Go να μην λειτουργούν κανονικά.
Όπως σημείωσε ο topjohnwu, αυτή η αλλαγή στον τρόπο με τον οποίο το SafetyNet ελέγχει την κατάσταση ξεκλειδώματος του bootloader έρχεται μέσω μιας ενημέρωσης από την πλευρά του διακομιστή στο SafetyNet API που περιέχεται στις Υπηρεσίες Google Play. Ωστόσο, δεν αποτυγχάνει κάθε χρήστης σε αυτούς τους ενημερωμένους ελέγχους SafetyNet, επομένως η νέα βεβαίωση κλειδιού σε επίπεδο υλικού ενδέχεται να μην έχει ακόμη εφαρμοστεί ευρέως.
Έχουμε δει τον topjohnwu να ξεπερνά τεχνικά εμπόδια ξανά και ξανά. Η Google πραγματοποιεί συχνά νέους ελέγχους στο SafetyNet τους οποίους η topjohnwu στη συνέχεια ανακαλύπτει και παρακάμπτει στο Magisk. Κάθε νέα έκδοση του Android επιφέρει αλλαγές στη δομή του διαμερίσματος ή στην εικόνα εκκίνησης, απαιτώντας από τον topjohnwu να μελετήσει τις αλλαγές και στη συνέχεια να εφαρμόσει μια νέα μέθοδο επιδιόρθωσης. Ωστόσο, ακόμη και το topjohnwu μπορεί να δυσκολευτεί να βρει μια παράκαμψη αυτή τη φορά.
Αυτό συμβαίνει επειδή η λύση αυτή τη φορά θα περιλάμβανε την παραβίαση του υλικολογισμικού του Trusted Execution Environment (TEE) των συσκευών προκειμένου να ανακτηθεί το ιδιωτικό κλειδί. Ωστόσο, αυτό είναι απίστευτα δύσκολο να γίνει, καθώς απαιτεί την εύρεση μιας ευπάθειας στο υλικολογισμικό που έχει σχεδιαστεί για να είναι απίστευτα ασφαλές. Στην πραγματικότητα, πολλές εταιρείες προσφέρουν πληρωμές σε εκατοντάδες χιλιάδες δολάρια εάν βρεθεί μια τέτοια ευπάθεια. Η Google, για παράδειγμα, πληρώνει 250.000 $ για ευπάθειες απομακρυσμένης εκτέλεσης κώδικα στο Trusted Execution Environment του Pixel και έως 1.000.000 $ για τρωτά σημεία στο Τιτάνας Μ τσιπ ασφαλείας. Ακόμα κι αν ένα ιδιωτικό κλειδί διέρρευε με κάποιο τρόπο, είναι απίθανο να ήταν πολύ χρήσιμο αφού Η Google μπορεί να ανακαλέσει εξ αποστάσεως το κλειδί επομένως δεν μπορεί να χρησιμοποιηθεί για την επαλήθευση της ακεραιότητας των συσκευών.
Μόλις επιβληθεί ευρέως η βεβαίωση κλειδιού σε επίπεδο υλικού για το SafetyNet, οι περισσότερες συσκευές με ξεκλείδωτους φορτωτές εκκίνησης με Android 8.0 Oreo ή νεότερη έκδοση δεν θα περάσουν τον έλεγχο βασικής ακεραιότητας του SafetyNet. Αυτό συμβαίνει επειδή όλες οι συσκευές που κυκλοφόρησαν με Android 8.0 Oreo ή νεότερη έκδοση απαιτείται να διαθέτουν αποθήκευση κλειδιών υλικού σε ένα TEE. Ορισμένες συσκευές σήμερα διαθέτουν ακόμη και αποκλειστικές μονάδες ασφαλείας υλικού (HSM) που κάνουν την εκμετάλλευση ακόμη πιο δύσκολη, απομακρύνοντας το ΤΕΕ από τον κύριο επεξεργαστή. ο Titan M στο Pixel 4 και Το νέο τσιπ ασφαλείας της Samsung στο Galaxy S20 είναι παραδείγματα αυτού.
Topjohnwu εξηγεί επίσης ότι άλλες πιθανές λύσεις είναι είτε αδύνατες είτε εξαιρετικά απαιτητικές. Η χρήση του Xposed Framework για την τροποποίηση του SafetyNet Attestation API στις Υπηρεσίες Google Play πιθανότατα δεν θα λειτουργήσει, καθώς "οι σωστοί έλεγχοι SafetyNet θα επαληθεύσουν τα αποτελέσματα σε έναν απομακρυσμένο διακομιστή και όχι σε [το] συσκευή που μπορεί να χειριστεί με πλαίσια εισαγωγής κώδικα." Επιπλέον, οι Υπηρεσίες Google Play είναι πολύ ασαφείς, καθιστώντας τη δημιουργία μιας τέτοιας μονάδας Xposed απίστευτα προκλητική στην πρώτη θέση. Η πλαστογράφηση ενός αποτελέσματος δοκιμής SafetyNet δεν θα είναι δυνατή, καθώς οι απαντήσεις του SafetyNet "προέρχονται από διακομιστές Google και υπογράφονται με το ιδιωτικό κλειδί της Google".
Η Google είχε τη δυνατότητα να σκληρύνει τους ελέγχους SafetyNet χρησιμοποιώντας πιστοποίηση κλειδιού που υποστηρίζεται από υλικό εδώ και αρκετά χρόνια. Το γεγονός ότι απέφυγαν να το κάνουν για 3 χρόνια επέτρεψε στους χρήστες να απολαμβάνουν τις μονάδες root και Magisk χωρίς να θυσιάζουν τη δυνατότητα χρήσης τραπεζικών εφαρμογών. Ωστόσο, φαίνεται ότι η ικανότητα του Magisk να αποκρύπτει αποτελεσματικά την κατάσταση ξεκλειδώματος του bootloader πλησιάζει σύντομα στο τέλος της. Είναι μια αλλαγή που περιμέναμε εδώ και χρόνια, αλλά λυπόμαστε που την βλέπουμε επιτέλους να ισχύει. Ελπίζουμε ότι η Google θα ενημερώσει το SafetyNet Attestation API για να επιστρέψει εάν ο έλεγχος κατάστασης χρησιμοποιήθηκε βάσει υλικού βεβαίωση, καθώς αυτό θα επέτρεπε στους προγραμματιστές εφαρμογών να αποφασίσουν εάν θέλουν να αποκλείσουν όλους τους χρήστες που έχουν ξεκλειδώσει το bootloader.
Χάρη στον Daniel Micay (@Daniel Micay) για τη συμβολή του σχετικά με αυτό το θέμα!