Το Tapjacking επέστρεψε στο Android Marshmallow και κανείς δεν το πρόσεξε

Ορισμένες συσκευές Marshmallow είναι επιρρεπείς σε tapjacking, όπου μια εφαρμογή επικαλύπτει κείμενο πάνω από ένα παράθυρο διαλόγου άδειας για να ξεγελάσει τον χρήστη.

Ενώ πολλοί από εμάς τρέχουν πάνω από το νέο Android Nougat για συσκευές Nexus, η συντριπτική πλειοψηφία των χρηστών εξακολουθεί να χρησιμοποιεί Android Marshmallow. Ένα κατόρθωμα η ύπαρξη του οποίου έχει τεκμηριωθεί από τότε τουλάχιστον στα μέσα του 2015 εξακολουθεί να επηρεάζει πολλές σύγχρονες συσκευές Android.

Οι κακόβουλες εφαρμογές μπορούν να tapjack τις ενέργειές σας σε παρέχοντάς τους μια άδεια που ποτέ δεν χορηγήσατε ρητά. Εδώ είναι πώς λειτουργεί το exploit.


Η επιστροφή του Tapjacking

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

Δεν μπορείτε να εκχωρήσετε την άδεια αποθήκευσης για το Instagram επειδή έχετε ενεργοποιημένη μια ενεργή επικάλυψη οθόνης - in αυτή η θήκη, μια από τις πολλές εφαρμογές που χρωματίζουν την οθόνη σας ώστε να μπορείτε να χρησιμοποιείτε το τηλέφωνό σας τη νύχτα χωρίς να τυφλώνετε ο ίδιος. Αυτή είναι μια περίπτωση του συστήματος αδειών Android λειτουργεί όπως προβλέπεται: για να εκχωρήσετε σε μια εφαρμογή μια ευαίσθητη άδεια, πρέπει να απενεργοποιήσετε τυχόν επικαλύψεις οθόνης που έχετε στη συσκευή σας.

Marshmallow Permission Tapjacking. Πατώντας "Να επιτρέπεται" θα εμφανιστούν όλες οι επαφές μου.

Οι εφαρμογές που έχουν τη δυνατότητα να σχεδιάζουν πάνω από την οθόνη σας θα μπορούσαν ενδεχομένως να σας εξαπατήσουν ώστε να της τροφοδοτήσετε ευαίσθητα δεδομένα. Για παράδειγμα, μια επικάλυψη οθόνης θα μπορούσε να τοποθετήσει έναν ψεύτικο κωδικό πρόσβασης πάνω από μια πραγματική οθόνη σύνδεσης προκειμένου να συλλέξει τους κωδικούς πρόσβασής σας. Ένα exploit όπως αυτό ονομάζεται 'tapjacking' και έχει εμφανιστεί και διορθωθεί σε διάφορες εκδόσεις Android όλα αυτά τα χρόνια, με ένα από τα χειρότερα παραδείγματα που διαρκεί μέχρι το Android 4.0.3. Αλλά πρόσφατα, το exploit επέστρεψε με Μοντέλο άδειας χρόνου εκτέλεσης του Android Marshmallow.

Ένας προγραμματιστής με το όνομα Iwo Banaś δημιούργησε ένα εφαρμογή επιδεικνύοντας το κατόρθωμα. Ο τρόπος που λειτουργεί είναι αρκετά απλός - όταν μια εφαρμογή εμφανίζει ένα παράθυρο διαλόγου άδειας, την κακόβουλη εφαρμογή που εγκαταστήσατε θα εμφανίσει μια επικάλυψη συστήματος για να καλύψει το μπλοκ κειμένου του διαλόγου άδειας με οποιοδήποτε κείμενο θέλει. Ένας άθελος χρήστης που κάνει κλικ στο "να επιτρέπεται" στο πλαίσιο διαλόγου άδειας θα εξαπατηθεί ώστε να παραχωρήσει μια άδεια που του ζητήθηκε - αλλά για την οποία το αίτημα ήταν κρυφό από την προβολή του χρήστη. Μια τέτοια εκμετάλλευση ακυρώνει εντελώς τον σκοπό του συστήματος αδειών του Android Marshmallow, από την εισαγωγή του το νέο μοντέλο έπρεπε να διασφαλίσει ότι οι χρήστες θα είχαν μόνο άδειες για τις οποίες είχαν ρητά συναινέσει.

Τώρα, ξέρω τι σκέφτεσαι. Εάν το Android εντόπισε μια επικάλυψη συστήματος και με εμπόδιζε να εκχωρήσω δικαιώματα αποθήκευσης στο Instagram, δεν θα εμπόδιζε να συμβεί αυτή η εκμετάλλευση; Η απάντηση είναι όχι, στη δοκιμή μου φαίνεται ότι σε ορισμένες συσκευές η εμφάνιση επικάλυψης κειμένου πάνω από ένα παράθυρο διαλόγου άδειας δεν ενεργοποιεί τον μηχανισμό ασφαλείας. Ο προγραμματιστής της εφαρμογής proof-of-concept tapjacking δηλώνει ότι το exploit είναι αποτελεσματικό επειδή βασίζεται στο ότι ο χρήστης εγκαθιστά μια δευτερεύουσα κακόβουλη εφαρμογή που στοχεύει το επίπεδο API 22 και κάτω (προ-Marshmallow). Αυτό οφείλεται στο γεγονός ότι πριν από το Android Marshmallow, όλες οι εφαρμογές λαμβάνουν άδεια κατά την εγκατάσταση.

Εντάξει, οπότε αν είστε στο Marshmallow το μόνο που θα χρειαστεί να κάνετε είναι να αποφύγετε την εγκατάσταση εφαρμογών που δεν εμπιστεύεστε που ζητούν άδεια σχεδίασης επικάλυψης, σωστά; Εάν το μοντέλο αδειών του Android λειτουργούσε όπως είχε αρχικά σχεδιαστεί, θα είχατε δίκιο. Αλλά από την ανακάλυψη αυτού του εκμεταλλεύματος, ακόμη και εφαρμογές που στοχεύουν το επίπεδο API 23 (Marshmallow) που ζητούν την άδεια επικάλυψης αποτελούν πιθανό κίνδυνο.


Ένα κενό στο μοντέλο άδειας;

Τυπικές εφαρμογές που χρησιμοποιούν επικαλύψεις. Μέσω: Μεσαίο

Εάν είστε ένα από τα πολλά εκατομμύρια των ανθρώπων που χρησιμοποιούν το Facebook Messenger για συνομιλία με τους φίλους σας, τότε έχετε συναντήσει ένα από τα καλύτερα χαρακτηριστικά του Android - τη δυνατότητα των εφαρμογών να σχεδιάζουν πάνω από άλλες οθόνες. Πόσο ωραίο είναι να έχετε μια φούσκα με την αγαπημένη σας ομαδική συνομιλία στο Facebook να ακολουθεί τον χρήστη πάνω από οποιαδήποτε εφαρμογή ανοίγει; Αν και το Messenger του Facebook έφερε την ιδέα των «αιωρούμενων εφαρμογών» στο mainstream, η ιδέα υπήρχε εδώ και αρκετό καιρό στο Android. Οι εφαρμογές μπόρεσαν να δημιουργήσουν επικαλύψεις πάνω από τις εφαρμογές σας εδώ και αρκετό καιρό, χάρη στην ύπαρξη του TYPE_SYSTEM_OVERLAY στο WindowsManager του Android.

Μενού άδειας "Σχεδίαση πάνω από άλλες εφαρμογές".

Πριν από το Android Marshmallow, οι εφαρμογές θα πρέπει να ζητήσουν μια άδεια SYSTEM_ALERT_WINDOW κατά την εγκατάσταση προτού εμφανίσει επικαλύψεις στο πάνω μέρος της οθόνης σας. Αλλά αυτό άλλαξε με την εισαγωγή του μοντέλου αδειών χρόνου εκτέλεσης του 6.0. Οι χρήστες θα πρέπει τώρα να χορηγούν δικαιώματα σε εφαρμογές όταν εκτελούν πραγματικά την εφαρμογή, κάτι που ελπίζουμε ότι θα ωθούσε τον μέσο όρο χρήστη να προστατεύσει τα προσωπικά του δεδομένα από εφαρμογές που ζητούν ύποπτα φαινομενικά λειτουργικά άσχετες άδειες.

Ωστόσο, το SYSTEM_ALERT_WINDOW δεν μοιάζει με άλλα δικαιώματα. Οι προγραμματιστές δεν μπορούν να εμφανίσουν ένα παράθυρο διαλόγου για να ζητήσουν μέσω προγραμματισμού την παραχώρηση άδειας από τον τελικό χρήστη, όπως τα περισσότερα άλλα δικαιώματα σε οποιαδήποτε εφαρμογή που στοχεύει το Marshmallow. Αντίθετα, πρέπει να πλοηγηθείτε χειροκίνητα στην οθόνη ρυθμίσεων και να ενεργοποιήσετε μόνοι σας την άδεια. Φυσικά, ορισμένες εφαρμογές όπως το Facebook Messenger θα σας βοηθήσουν στη διαδικασία.

Η Google το απαιτεί από τους προγραμματιστές επειδή θεωρούν ότι η άδεια είναι "ιδιαίτερα ευαίσθητη."

Ειδικές Άδειες

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

Δεδομένων των όσων γνωρίζουμε παραπάνω για το tapjacking, αυτό είναι λογικό. Αλλά εδώ είναι το θέμα. Η Google δεν ακολουθεί καν τους δικούς της κανόνες. Τα στιγμιότυπα οθόνης του Facebook Messenger που σας καθοδηγούν στη διαδικασία εκχώρησης της άδειας SYSTEM_ALERT_WINDOW που σας έδειξα παραπάνω; Αυτό συμβαίνει μόνο εάν εγκαταστήσετε το APK εκτός του Google Play Store. Εάν εγκαταστήσετε μια εφαρμογή από το Google Play Store, το Η άδεια SYSTEM_ALERT_WINDOW εκχωρείται αυτόματα.

Αρχείο Manifest του Facebook Messenger. Στην εφαρμογή εκχωρείται αυτόματα η άδεια επικάλυψης παρά τη στόχευση του επιπέδου 23 του API.

Η Google έχει θυσιάσει την ασφάλεια για λόγους ευκολίας

Για πολύ καιρό πριν από το Android Marshmallow, το SYSTEM_ALERT_WINDOW θεωρούνταν "επικίνδυνος"άδεια. Με το Android Marshmallow 6.0, η άδεια άλλαξε σε υπογραφή|σύστημα|appop Αυτό ήταν που αρχικά απαιτούσε από τους προγραμματιστές να οδηγήσουν τον χρήστη στην οθόνη ρυθμίσεων για να χορηγήσουν την άδεια. Αλλά με την έκδοση Android 6.0.1, Το SYSTEM_ALERT_WINDOW τροποποιήθηκε ώστε το Google Play Store θα μπορούσε να χορηγήσει αυτόματα την άδειαχωρίς ειδοποίηση του χρήστη. Το γιατί η Google έκανε αυτήν την αλλαγή δεν είναι σαφές για εμάς. Η ίδια η Google δεν έχει δηλώσει γιατί έκανε αυτήν την αλλαγή, κάτι που είναι ιδιαίτερα περίεργο λαμβάνοντας υπόψη τη γλώσσα σχετικά με το SYSTEM_ALERT_WINDOW που εξακολουθεί να υπάρχει στις ιστοσελίδες τους.

Είναι πιθανό αυτό Αρκετοί προγραμματιστές εξοργίστηκαν από τις αρχικές αλλαγές στο SYSTEM_ALERT_WINDOW που απαιτούσαν από τους χρήστες να παραχωρήσουν με μη αυτόματο τρόπο την άδεια που η Google σιωπηλά υπέκυψε και μόλις την παραχώρησε σε οποιαδήποτε εφαρμογή το ζήτησε. Αλλά κάνοντας αυτό, η Google έχει θυσίασε την ασφάλεια για την ευκολία. Υπάρχει λόγος για τον οποίο η ίδια η Google θεώρησε την άδεια ως επικίνδυνη για το μεγαλύτερο χρονικό διάστημα, επειδή είναι. Και η ύπαρξη της εκμετάλλευσης tapjacking άδειας Marshmallow είναι αρκετή απόδειξη των εγγενών κινδύνων στην αυτόματη χορήγηση αυτής της άδειας σε οποιαδήποτε εφαρμογή.

Αυτό το tapjacking exploit τέθηκε πρόσφατα στην αντίληψή μας, αν και υπάρχει εδώ και πολλούς μήνες. Στην εσωτερική μας δοκιμή συσκευών στην ομάδα του XDA Portal, το επιβεβαιώσαμε το exploit λειτουργεί σε πολλές σύγχρονες συσκευές με Android Marshmallow. Ακολουθεί μια γρήγορη ανασκόπηση των συσκευών που δοκιμάσαμε στις πιο πρόσφατες διαθέσιμες εκδόσεις λογισμικού για κάθε αντίστοιχη συσκευή και εάν λειτουργεί ή όχι η εκμετάλλευση του tapjacking. Οι συσκευές με την ένδειξη "Ευάλωτες" είναι επιρρεπείς σε εκμετάλλευση tapjacking, ενώ οι συσκευές με την ένδειξη "Όχι Ευάλωτα" είναι σε θέση να εντοπίσουν μια εφαρμογή που εμφανίζει την επικάλυψη και να ζητήσει να την απενεργοποιήσετε προηγουμένως συνεχίζοντας.

  • Nextbit Robin - Android 6.0.1 με ενημερώσεις κώδικα ασφαλείας Ιουνίου - Ευάλωτα
  • Moto X Pure - Android 6.0 με ενημερώσεις κώδικα ασφαλείας Μαΐου - Ευάλωτα
  • Honor 8 - Android 6.0.1 με ενημερώσεις κώδικα ασφαλείας Ιουλίου - Ευάλωτα
  • Motorola G4 - Android 6.0.1 με ενημερώσεις κώδικα ασφαλείας Μαΐου - Ευάλωτα
  • OnePlus 2 - Android 6.0.1 με ενημερώσεις κώδικα ασφαλείας Ιουνίου - Μη ευάλωτος
  • Samsung Galaxy Note 7 - Android 6.0.1 με ενημερώσεις κώδικα ασφαλείας Ιουλίου - Μη ευάλωτος
  • Google Nexus 6 - Android 6.0.1 με ενημερώσεις κώδικα ασφαλείας Αυγούστου - Μη ευάλωτος
  • Google Nexus 6P - Android 7.0 με ενημερώσεις κώδικα ασφαλείας Αυγούστου - Μη ευάλωτος

Μέχρι στιγμής, αυτές είναι όλες οι συσκευές που κατάφερα να κάνω την ομάδα να δοκιμάσει. Δεν μπόρεσα να βρω καμία συσχέτιση μεταξύ της έκδοσης ενημερωμένης έκδοσης κώδικα ασφαλείας και του exploit. Όπως μπορείτε να πείτε από το δικό μας τελευταία συζήτηση σχετικά με τις ενημερώσεις ασφαλείας Android, πολλοί άνθρωποι δεν εκτελούν ούτως ή άλλως τις πιο πρόσφατες ενημερώσεις κώδικα ασφαλείας και επομένως είναι πιθανώς ευάλωτοι σε αυτό το exploit και σε άλλα που περιγράφονται στο Δελτίο ασφαλείας Android.


Προχωρώντας μπροστά

Η υπηρεσία Tapjacking χορήγησε την άδεια επικάλυψης

Σας προτρέπουμε να δοκιμάσετε μόνοι σας αυτό το exploit στη συσκευή σας για να δείτε εάν είστε ευάλωτοι. Έχουμε συγκεντρώσει τα APK από το τον πηγαίο κώδικα που συνδέεται παραπάνω (μπορείτε να το κάνετε και μόνοι σας) και τα έχετε ανεβάσει στο AndroidFileHost. Για να δοκιμάσετε το exploit, πρέπει να εγκαταστήσετε και τα δύο κύρια εφαρμογή tapjacking καθώς και του βοηθητική υπηρεσία. Στη συνέχεια, απλά εκτελέστε την κύρια εφαρμογή και κάντε κλικ στο κουμπί "δοκιμή". Εάν ένα πλαίσιο κειμένου επιπλέει πάνω από το παράθυρο διαλόγου άδειας και όταν κάνετε κλικ στο "Να επιτρέπεται" εμφανίζεται μια λίστα με τις επαφές της συσκευής σας, τότε η συσκευή σας είναι ευάλωτη στο tapjacking. Μην ανησυχείτε μήπως το αιωρούμενο πλαίσιο κειμένου δεν καλύπτει πλήρως το παράθυρο διαλόγου άδειας, αυτή η εφαρμογή απόδειξης της ιδέας δεν είναι προορίζεται να δείξει τέλεια πώς να παραβιάσεις ένα παράθυρο διαλόγου αδειών, αλλά μάλλον να αποδείξει ότι είναι πράγματι δυνατόν.

Ελπίζουμε ότι θα παρουσιαστεί μια επιδιόρθωση που διορθώνει αυτό το exploit σε όλες τις συσκευές Marshmallow και ότι οι OEM ενημερώνουν όλες τις συσκευές τους στην πιο πρόσφατη ενημέρωση κώδικα ασφαλείας. Επειδή η πραγματικότητα είναι ότι θα χρειαστούν πολλοί μήνες για να αποκτήσουν Nougat οι περισσότερες δεσμευμένες συσκευές, οπότε ο μόνος τρόπος για τους περισσότερους Οι χρήστες για να μείνουν μακριά από τον κίνδυνο είναι είτε να εγκαταστήσουν τις πιο πρόσφατες ενημερώσεις κώδικα ασφαλείας είτε να λάβουν δικαιώματα εφαρμογής παρακολούθησης τους εαυτούς τους. Ωστόσο, με την απόφαση της Google να χορηγήσει αυτόματα την δυνητικά επικίνδυνη άδεια SYSTEM_ALERT_WINDOW, πολλά Οι χρήστες εκτελούν εν αγνοία τους εφαρμογές που θα μπορούσαν ενδεχομένως να παραβιάσουν τα τηλέφωνά τους για να τους χορηγήσουν όλο και πιο επικίνδυνες άδειες.