Η απόκρυψη της πρόσβασης root στο Magisk πρόκειται να γίνει πολύ πιο δύσκολη χάρη σε μια πρόσφατη αλλαγή στο SafetyNet που φέρνει πιστοποίηση υλικού.
Τον Μάρτιο, μερικοί χρήστες με εγκατεστημένο το Magisk παρατήρησε ότι οι συσκευές τους απέτυχαν στη βεβαίωση SafetyNet. Αυτά τα νέα ήταν ανησυχητικά για την κοινότητα στο XDA επειδή σημαίνει ότι πολλές σημαντικές τραπεζικές/οικονομικές εφαρμογές και δημοφιλή παιχνίδια όπως το Pokémon Go και το Fate/Grand Order αρνούνταν να εκτελούνται σε συσκευές με root. Για κάποιο χρονικό διάστημα, φαινόταν ότι οι αυστηρότεροι περιορισμοί στο SafetyNet είχαν αποσυρθεί, για να εμφανιστούν ξανά για λίγους χρήστες τις τελευταίες εβδομάδες. Ωστόσο, η Google επιβεβαίωσε αθόρυβα στις αρχές Μαΐου ότι δοκιμάζει πιστοποίηση που υποστηρίζεται από υλικό Αποκρίσεις SafetyNet, κάτι που έκανε το Magisk να μην μπορεί να κρύψει ξανά την κατάσταση ξεκλειδώματος του bootloader Μάρτιος. Εάν αυτή η αλλαγή κυκλοφορήσει ευρέως, θα σημαίνει ότι οι χρήστες θα πρέπει να επιλέξουν μεταξύ της πρόσβασης σε root/προσαρμοσμένες ROM/πυρήνες/κ.λπ. ή τις προτιμώμενες τραπεζικές εφαρμογές και παιχνίδια τους. Μια από τις μεγαλύτερες προσκλήσεις του Android για ισχυρούς χρήστες θα μπορούσε σύντομα να εξαφανιστεί.
Για να ανακεφαλαιώσουμε αυτήν τη σειρά γεγονότων, θα πρέπει πρώτα να μιλήσουμε για το ίδιο το SafetyNet. Το SafetyNet είναι ένα σύνολο API στις Υπηρεσίες Google Play. Το SafetyNet Attestation API είναι ένα από αυτά τα API και μπορεί να κληθεί από εφαρμογές τρίτων για να ελέγξει εάν το περιβάλλον λογισμικού της συσκευής έχει παραβιαστεί με οποιονδήποτε τρόπο. Το API ελέγχει για διάφορα πράγματα, όπως σημάδια δυαδικών αρχείων υπερχρήστη, την κατάσταση ξεκλειδώματος του bootloader και πολλά άλλα. Όταν κάνετε root μια συσκευή με το Magisk, "[δημιουργεί] ένα απομονωμένο "ασφαλές περιβάλλον" για τη διαδικασία ανίχνευσης [SafetyNet] και περνά από το API της Google για να δημιουργήσει ένα νόμιμη Αποτέλεσμα SafetyNet που δεν αντικατοπτρίζει την πραγματική κατάσταση της συσκευής», σύμφωνα με τον XDA Senior Recognized Developer topjohnwu. Αυτό επιτρέπει στο χρήστη να κάνει root το τηλέφωνό του, διασφαλίζοντας ταυτόχρονα ότι το API επιστρέφει πάντα "false" για τυχόν ελέγχους ξεκλειδώματος του bootloader. Αυτή η μέθοδος παράκαμψης του εντοπισμού ξεκλειδώματος του bootloader του SafetyNet έχει εφαρμοστεί για το Magisk τα τελευταία λίγα χρόνια, αλλά αυτό συμβαίνει μόνο επειδή η Google έχει καθυστερήσει να επαληθεύσει την ακεραιότητα της εικόνας εκκίνησης χρησιμοποιώντας υλικό επιβεβαίωση. Τον Μάρτιο, φαινόταν ότι η Google άρχιζε επιτέλους να χρησιμοποιεί πιστοποίηση υλικού στο SafetyNet για να επαληθεύσει την εικόνα εκκίνησης, αλλά ποτέ δεν λάβαμε επίσημη δήλωση από την Google που να επιβεβαιώνει την αλλαγή και μόνο λίγοι χρήστες ήταν επηρεάζονται. Όπως εντόπισε το XDA Senior Member Displax, ωστόσο, η Google επιβεβαίωσε στις 5 Μαΐου 2020, ότι οι αποκρίσεις του SafetyNet Attestation API από ορισμένες συσκευές περιλαμβάνουν πλέον ελέγχους που υποστηρίζονται από υλικό.
Στην Ομάδα Google για "Πελάτες API SafetyNet", η Google παρουσίασε μια νέα δυνατότητα για το API βεβαίωσης: αξιολόγησηΤύπος. Η απάντηση JSON Web Signature (JWS) από ορισμένες συσκευές θα έχει ένα πεδίο με το όνομα "evaluationType" που "θα παρέχει στους προγραμματιστές πληροφορίες στους τύπους σημάτων/μετρήσεων που έχουν συνεισφέρει σε κάθε μεμονωμένη απόκριση SafetyNet Attestation API." Ένα από τα υποστηριζόμενα διακριτικά σε αυτό το πεδίο είναι "HARDWARE_BACKED" που υποδεικνύει ότι το API "[χρησιμοποίησε] τις διαθέσιμες λειτουργίες ασφαλείας που υποστηρίζονται από υλικό της απομακρυσμένης συσκευής (π.χ. πιστοποίηση κλειδιού με υποστήριξη υλικού) για να επηρεάσει την αξιολόγηση [της]." Η Google λέει ότι "αυτήν τη στιγμή αξιολογούν και προσαρμόζουν τα κριτήρια καταλληλότητας για συσκευές όπου θα βασιζόμαστε σε υποστηριζόμενο από υλικό χαρακτηριστικά ασφαλείας." Αυτό σημαίνει ότι, σε ορισμένες συσκευές, οι Υπηρεσίες Google Play χρησιμοποιούν πλέον βεβαίωση που υποστηρίζεται από υλικό για να εντοπίσει ότι το λογισμικό της συσκευής δεν έχει παραποιημένα. Η Google δεν έχει τεκμηριώσει επίσημα αυτήν την αλλαγή εκτός της ανακοίνωσης στην Ομάδα Google, επομένως ορισμένοι προγραμματιστές που χρησιμοποιούν το SafetyNet ενδέχεται να δεν έχετε επίγνωση αυτής της αλλαγής (και επομένως δεν ελέγχετε ακόμα για το πεδίο "HARDWARE_BACKED" στις απαντήσεις JWS.) Ωστόσο, για εκείνες τις εφαρμογές που κάνουν έλεγχο για αυτό το πεδίο, δεν υπάρχει πλέον τρόπος να αποκρύψετε την πρόσβαση root από αυτούς, υπό την προϋπόθεση ότι η συσκευή σας αποτελεί μέρος της δοκιμής που κάνει η Google τρέξιμο.
Σύμφωνα με το topjohnwu, η βεβαίωση που υποστηρίζεται από υλικό σημαίνει ότι οι Υπηρεσίες Google Play τώρα «[αποστέλλουν] ένα μη τροποποιημένο πιστοποιητικό αποθήκευσης κλειδιών στους διακομιστές SafetyNet, [επαληθεύουν] τη νομιμότητά του και [ελέγχει] τα δεδομένα επέκτασης πιστοποιητικού για να γνωρίζει εάν η συσκευή σας [έχει] ενεργοποιήσει την επαληθευμένη εκκίνηση (κατάσταση του bootloader).» Δεδομένου ότι τα ιδιωτικά κλειδιά από τα οποία προέρχονται τα πιστοποιητικά αποθήκευσης κλειδιών υποστηρίζονται από το απομονωμένο ασφαλές περιβάλλον του τηλεφώνου, η ανάκτησή τους θα συνεπαγόταν την εξάλειψη της ασφάλειας του Trusted Execution Environment (TEE) του τηλεφώνου ή της αποκλειστικής ασφάλειας υλικού ενότητα (HSM). Αν κάποιος μπορούσε με κάποιο τρόπο να διαρρεύσει ένα ιδιωτικό κλειδί, το τα κλειδιά θα ανακαλούνταν γρήγορα μόλις το ανακάλυψε η Google. Η Google προσφέρει ανταμοιβές εκατοντάδων χιλιάδων δολαρίων για τυχόν κρίσιμα τρωτά σημεία ασφαλείας που επηρεάζουν το TEE στα τηλέφωνα Pixel, το οποίο απλώς δείχνει ότι είναι απίστευτα απίθανο αυτό να είναι μια πιθανή οδός για να παρακάμψετε την ανίχνευση ξεκλειδώματος του bootloader τέλος πάντων.
Ένας άλλος πιθανός τρόπος με τον οποίο το Magisk θα μπορούσε να συνεχίσει να πλαστογραφεί την κατάσταση ξεκλειδώματος του bootloader είναι η τροποποίηση του κώδικα πελάτη του SafetyNet ώστε να χρησιμοποιεί πάντα την αξιολόγηση BASIC. Οπως και σημειώνει ο topjohnwu, ωστόσο, αυτό θα απαιτούσε την εισαγωγή προσαρμοσμένου κώδικα στις Υπηρεσίες Google Play μέσω ενός πλαισίου σύνδεσης όπως το Xposed Framework. Αυτό δεν είναι μόνο δύσκολο να γίνει επειδή οι Υπηρεσίες Google Play είναι πολύ συγκεχυμένες, αλλά είναι επίσης αδύνατο να κρυφτεί καθώς "κάποια ανάλυση χώρου μνήμης θα αποκαλύψει πολύ χειρισμό κώδικα Επιπλέον, αυτό θα λειτουργούσε μόνο εάν οι διακομιστές της Google συνεχίσουν να αποδέχονται ΒΑΣΙΚΕΣ αξιολογήσεις και εάν οι αξιολογήσεις HARDWARE_BACKED δεν επιβάλλονται σε συσκευές που υποστηρίζουν τους. (Οι απαντήσεις του SafetyNet "[προέρχονται] από διακομιστές Google και είναι υπογεγραμμένες με το ιδιωτικό κλειδί της Google", σύμφωνα με το topjohnwu, επομένως οι πραγματικές απαντήσεις δεν μπορούν να πλαστογραφηθούν.)
Από το Android 7 Nougat, η Google απαιτεί όλες οι συσκευές να έχουν απομονωμένο ασφαλές περιβάλλον, Αυτό σημαίνει ότι αυτή η αλλαγή στον τρόπο με τον οποίο το SafetyNet επαληθεύει το ξεκλείδωμα του bootloader θα επηρεάσει τις περισσότερες συσκευές που είναι εκτός λειτουργίας εκεί. Δεδομένου ότι οι παλαιότερες συσκευές χωρίς απομονωμένο ασφαλές περιβάλλον προφανώς δεν μπορούν να εκτελέσουν πιστοποίηση με υποστήριξη υλικού, το Magisk θα εξακολουθεί να μπορεί να αποκρύψει την πρόσβαση root σε αυτές τις συσκευές. Ωστόσο, εάν αυτή η αλλαγή διαδοθεί ευρέως, όλοι οι άλλοι θα πρέπει να κάνουν μια δύσκολη επιλογή μεταξύ της πρόσβασης root και των τραπεζικών εφαρμογών.
Δυστυχώς, υπάρχουν πιθανώς πολλές εφαρμογές εκεί έξω που χρησιμοποιούν ελέγχους SafetyNet όταν στην πραγματικότητα δεν χρειάζονται. Ένα παράδειγμα που αναφέρεται από το topjohnwu είναι η επίσημη εφαρμογή McDonald's, η οποία φαινομενικά αρνείται να εκτελεστεί σε μια ξεκλείδωτη συσκευή bootloader. Στο Twitter, η topjohnwu χαρακτηρίζει τις εφαρμογές που χρησιμοποιούν υπερβολικά το API ως δημιουργία ενός εχθρικού περιβάλλοντος για ισχυρούς χρήστες. Αναγνωρισμένος προγραμματιστής XDA Quinny899 συμμετέχει με ένα ανέκδοτο για το πώς η ομάδα του σκέφτηκε να χρησιμοποιήσει το SafetyNet για να ελέγξει την κατάσταση ασφάλειας της συσκευής. Τελικά αποφάσισαν να μην το κάνουν, καθώς η εφαρμογή της ομάδας του κρυπτογραφεί όλα τα ευαίσθητα δεδομένα με τα οποία λειτουργεί. Το SafetyNet, υποστηρίζει, δεν θα πρέπει να χρησιμοποιείται αντί των κατάλληλων πρακτικών ασφάλειας και διαχείρισης δεδομένων, ειδικά όταν λαμβάνεται υπόψη η δυνατότητα εκμετάλλευσης υπερχρήστη.
Για περισσότερες πληροφορίες σχετικά με το πώς η νέα αλλαγή στο SafetyNet επηρεάζει το Magisk, ανατρέξτε στο topjohnwu's εξαιρετικό FAQ στο Twitter. Αν θέλετε απλώς να ελέγξετε αν η συσκευή σας είναι μέρος της νέας δοκιμής SafetyNet της Google, μπορείτε να την ακολουθήσετε αυτόν τον οδηγό από το XDA Senior Member Displax ή κατεβάστε την πιο πρόσφατη έκδοση του Magisk Manager.
Αυτό το άρθρο ενημερώθηκε στις 10:46 π.μ. EST στις 30 Ιουνίου 2020, για να διορθωθεί ότι η Google πληρώνει ανταμοιβές μόνο για ευπάθειες ΤΕΕ που βρίσκονται σε τηλέφωνα Pixel. Επιπλέον, προστέθηκαν λεπτομέρειες σχετικά με την πιο πρόσφατη έκδοση του Magisk Manager, η οποία τώρα εμφανίζει το πεδίο αξιολόγησης Τύπος στον ενσωματωμένο έλεγχο SafetyNet.