Το Fortnite Installer θα μπορούσε να γίνει κατάχρηση για την αθόρυβη εγκατάσταση εφαρμογών σε τηλέφωνα Galaxy

Το Fortnite Mobile στην εφαρμογή εγκατάστασης του Android ήταν εκμεταλλεύσιμο στην πρώτη του κυκλοφορία. Θα μπορούσε να γίνει κατάχρηση της αθόρυβης εγκατάστασης οποιασδήποτε εφαρμογής σε τηλέφωνα Samsung Galaxy.

Η κυκλοφορία του Fortnite Mobile στο Android δεν ήταν πολύ καλή, ειδικά από τότε πολλές από τις υποστηριζόμενες συσκευές Πραγματικά αγωνίζονται να παίξουν το παιχνίδι με αποδεκτούς ρυθμούς καρέ. Το παιχνίδι ξεκίνησε ως α Αποκλειστικό Samsung Galaxy για μόνο 3 ημέρες. Το Fortnite Installer ήταν για πρώτη φορά διαθέσιμο στο Εφαρμογές Samsung Galaxy προτού η Epic Games επιτρέψει σε παίκτες που δεν ανήκουν στη Samsung να κατεβάσουν και να εγκαταστήσουν το πλήρες παιχνίδι από το Fortnite Installer που δόθηκε στον ιστότοπο της Epic. Λίγο αφότου έγινε διαθέσιμο το Fortnite Installer, η Epic Games προώθησε αθόρυβα μια ενημέρωση στο Installer. Τώρα ξέρουμε γιατί: Μπαλώθηκαν α Man-in-the-Disk εκμετάλλευση που κατέστησε δυνατή για μια κακόβουλη εφαρμογή αθόρυβη εγκατάσταση όποια εφαρμογή ήθελαν

σε smartphone Samsung Galaxy. Επειδή υπήρξε κάποια σύγχυση σχετικά με το πώς λειτουργεί αυτό το ελάττωμα, θα προσπαθήσουμε να ξεκαθαρίσουμε τα πράγματα. Αρχικά, πρέπει να εξηγήσουμε τα βασικά της εγκατάστασης εφαρμογών στο Android.


Ροή εγκατάστασης εφαρμογών σε smartphone Android

Αθόρυβες εγκαταστάσεις από πηγές πρώτου κατασκευαστή

Για να εγκαταστήσετε αθόρυβα ένα APK στο Android χωρίς να ζητήσετε από τον χρήστη άδεια, πρέπει να έχετε μια εφαρμογή σε επίπεδο συστήματος με INSTALL_PACKAGES χορηγηθεί άδεια. Παραδείγματα εφαρμογών με αυτήν την άδεια περιλαμβάνουν το Google Play Store στις περισσότερες συσκευές Android. Τα καταστήματα εφαρμογών πρώτου κατασκευαστή σε συσκευές από τη Samsung, τη Huawei και άλλους κατασκευαστές συσκευών ενδέχεται επίσης να έχουν την άδεια INSTALL_PACKAGES. Εάν θέλετε να εγκαταστήσετε οποιαδήποτε εφαρμογή από το Google Play Store, θα χειριστεί τη λήψη και θα εγκαταστήσει αυτόματα η εφαρμογή για εσάς χωρίς περαιτέρω παρέμβαση αφού πατήσετε "Εγκατάσταση". (Το Google Play Store ακόμη αυτομάτως χορηγεί ορισμένα δικαιώματα χρόνου εκτέλεσης όπως αυτό για επικαλύψεις, ενώ οι εφαρμογές που είναι εγκατεστημένες εκτός του Play Store πρέπει να ζητούν από τον χρήστη να εκχωρήσει αυτές τις άδειες.)

Εάν είστε περίεργοι εάν μια εφαρμογή στη συσκευή σας έχει την άδεια INSTALL_PACKAGES, μπορείτε να μάθετε μέσω μιας εντολής ADB.

adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"

Για παράδειγμα, το όνομα πακέτου του Google Play Store είναι "com.android.vending". Μια άλλη εφαρμογή με αυτήν την άδεια είναι η Shell με το όνομα πακέτου com.android.shell. Για εσάς που χρησιμοποιείτε Substratum χωρίς root μέσω της προσθήκης Andromeda στο Android Oreo, το σενάριο Andromeda που εκτελείται από τον υπολογιστή σας διατηρεί τη διαδικασία του κελύφους σε λειτουργία, ώστε το Substratum να μπορεί να το χρησιμοποιήσει για να εγκαταστήσει πακέτα (τις επικαλύψεις θεμάτων) και στη συνέχεια να χρησιμοποιήσει το Εντολές OverlayManager για να ενεργοποιήσετε τις επικαλύψεις.

Πλαϊνή φόρτωση εφαρμογών από πηγές τρίτων

Εάν επιχειρήσετε να κατεβάσετε και να εγκαταστήσετε μια εφαρμογή εκτός ενός καταστήματος εφαρμογών πρώτου κατασκευαστή, θα πρέπει πρώτα να ενεργοποιήσετε άγνωστες πηγές εγκατάστασης. Αυτό επιτρέπει στο Υπηρεσία διαχείρισης πακέτων εντός του πλαισίου Android (το οποίο έχει την άδεια INSTALL_PACKAGES) γνωρίζετε ότι αναγνωρίζετε τους κινδύνους της πλευρικής φόρτωσης εφαρμογών από πηγές τρίτων. Σε συσκευές προ-Android Oreo, υπάρχει μία μόνο εναλλαγή στις Ρυθμίσεις ασφαλείας για να επιτρέπεται η εγκατάσταση από άγνωστες πηγές. Σε Android Oreo και νεότερες εκδόσεις, μια εφαρμογή που ζητά την εγκατάσταση ενός APK πρέπει να δηλώσει το REQUEST_INSTALL_PACKAGES άδεια και ο χρήστης πρέπει να προσθέσει στη λίστα επιτρεπόμενων αυτήν την εφαρμογή, ώστε να μπορεί να ζητήσει εγκαταστάσεις εφαρμογής μέσω της Υπηρεσίας Διαχείρισης πακέτων. Δεδομένου ότι το REQUEST_INSTALL_PACKAGES είναι ένα δικαίωμα "appop", αυτό το καθιστά ένα από τα δικαιώματα που μπορούν να ελεγχθούν από τη διαχείριση αδειών των ρυθμίσεων ή μέσω του cmd appops εντολή κελύφους.

Μόλις ενεργοποιηθεί η εγκατάσταση από άγνωστες πηγές είτε καθολικά είτε ειδικά για μια αίτηση που ζητά, τότε ο χρήστης μπορεί να φορτώσει μια εφαρμογή πλευρικά. Ωστόσο, ο Διαχειριστής πακέτων δεν επιτρέπει την αθόρυβη εγκατάσταση της εφαρμογής. Αντίθετα, θα ειδοποιήσει τον χρήστη εάν θέλει να εγκαταστήσει την εφαρμογή και θα απαριθμήσει τυχόν ευαίσθητα δικαιώματα που ζητά να παραχωρηθούν κατά την εγκατάσταση. Εάν ο χρήστης αποδεχτεί, τότε η εφαρμογή εγκαθίσταται με τα ζητούμενα δικαιώματα μη χρόνου εκτέλεσης. Οι OEM μπορούν επίσης να προσαρμόσουν το Package Manager: Για παράδειγμα, το Package Manager στην κινεζική έκδοση του Το EMUI 5 της Huawei έχει μια δυνατότητα για σάρωση του APK για να αποφασίσει αν είναι ασφαλές και να ελέγξει ποιες είναι οι άδειες χορηγείται πριν εγκατάσταση. Το έχω παρατηρήσει αυτό στο Honor Note 8 με EMUI 5 που έχει εισαχθεί από την Κίνα, αν και είμαι βέβαιος ότι και άλλες κινεζικές συσκευές Huawei και Honor έχουν αυτή τη δυνατότητα στους Διαχειριστές πακέτων τους.

Σε κάθε περίπτωση, αυτό περίπου συνοψίζει τη διαφορά μεταξύ της εγκατάστασης μιας εφαρμογής από εγκεκριμένη πηγή πρώτου κατασκευαστή και πηγή τρίτου μέρους. Εάν επιχειρήσετε να εγκαταστήσετε μια εφαρμογή από το Play Store ή ισοδύναμο κατάστημα εφαρμογών με το INSTALL_PACKAGES άδεια, θα χειριστεί αθόρυβα την εγκατάσταση μόνη της χωρίς περαιτέρω παρέμβαση του χρήστη αφού ξεκινήσετε η λήψη. Ωστόσο, εάν κάνετε λήψη ενός APK από XDA Labs, APKMirror ή άλλες πηγές τρίτων, το τυπικό πρόγραμμα εγκατάστασης πακέτου θα χειριστεί την εγκατάσταση και θα ζητήσει από τον χρήστη να εγκαταστήσει αυτό το πακέτο. Πού μπαίνει λοιπόν το Fortnite Installer και γιατί είναι όλο αυτό σχετικό;

Ένα ελάττωμα στη διαδικασία εγκατάστασης του Fortnite

Νωρίτερα σήμερα, η Google αποκάλυψε μια ευπάθεια ανακάλυψαν με την πρώτη έκδοση του Fortnite Installer. Η ευπάθεια αποδείχθηκε στο Exynos Samsung Galaxy S8+ (dream2lte), αλλά επηρέασε επίσης όλες τις άλλες συσκευές Samsung Experience, συμπεριλαμβανομένων των Samsung Galaxy Note 9 και Samsung Galaxy Tab S4. Η ευπάθεια επιτρέπει ένα ήδη εγκατεστημένη κακόβουλη εφαρμογή για να επωφεληθείτε από τον τρόπο με τον οποίο το πρόγραμμα εγκατάστασης Fortnite προσπαθεί να εγκαταστήσει το Fortnite για πρώτη φορά σε συσκευές Samsung Galaxy. Χρησιμοποιώντας ένα ιδιωτικό API στο Samsung Galaxy Apps, το πρόγραμμα εγκατάστασης Fortnite παρακάμπτει την ανάγκη να ζητηθεί από τον χρήστη μέσω του τυπικού προγράμματος εγκατάστασης πακέτων να εγκαταστήσει το Fortnite. Αυτό συμβαίνει επειδή το Galaxy Apps έχει την άδεια που χρειάζεται για να χειριστεί την εγκατάσταση αθόρυβα. Δεν θα υπήρχε τίποτα λάθος με αυτή τη διαδικασία αθόρυβης εγκατάστασης, εάν η εφαρμογή που εγκαθίσταται αθόρυβα είναι το πραγματικό Fortnite. Όμως, λόγω του σημείου που το πρόγραμμα εγκατάστασης Fortnite αποθηκεύτηκε το ληφθέν αρχείο APK για το παιχνίδι Fortnite, ήταν εύκολα εκμεταλλεύσιμο.

Το AndroidManifest από το Samsung Galaxy Apps δείχνει ότι το Galaxy Apps έχει την άδεια να εγκαταστήσει άλλες εφαρμογές από μόνο του, παρακάμπτοντας το τυπικό πρόγραμμα εγκατάστασης πακέτων.

Σύμφωνα με την αναφορά στο Issue Tracker, το πρόγραμμα εγκατάστασης Fortnite θα κατέβαζε το Fortnite Mobile APK στο /sdcard/Android/data/com.epicgames.portal/files/downloads/. Αυτό θεωρείται "εξωτερικός χώρος αποθήκευσης" στο Android καθώς το /sdcard είναι ένας συμβολικός σύνδεσμος /data/media/CURRENT_USER και /sdcard ήταν το όνομα που χρησιμοποιήθηκε στις πρώτες μέρες του Android όταν τα δεδομένα της εφαρμογής ήταν αποθηκευμένο σε φυσικές κάρτες SD. Σήμερα, τα δεδομένα εφαρμογών αποθηκεύονται συνήθως σε καταλόγους για συγκεκριμένες εφαρμογές στο /data/data/ και κάθε εφαρμογή έχει πρόσβαση μόνο στα αρχεία στον δικό της κατάλογο /data/data. Έτσι, εάν το πρόγραμμα εγκατάστασης Fortnite αποθηκεύσει το ληφθέν Fortnite APK στον δικό του κατάλογο /data/data/, θα ήταν αδύνατο για οποιαδήποτε εφαρμογή χωρίς δικαιώματα ανάγνωσης (δηλ. χωρίς πρόσβαση root) για να μάθετε τι συμβαίνει σε αυτόν τον κατάλογο.

Ωστόσο, από το Fortnite Installer αποθηκεύτηκε το ληφθέν APK σε εξωτερικό χώρο αποθήκευσης, θα μπορούσε να παρακολουθηθεί και να αντικατασταθεί από οποιαδήποτε εφαρμογή με δικαιώματα ανάγνωσης εξωτερικού χώρου αποθήκευσης. Κανονικά, οι εφαρμογές γράφουν στο /data/media, την "εικονική κάρτα SD", όταν αποθηκεύουν αρχεία στα οποία πρέπει να έχει πρόσβαση ο χρήστης μέσω MTP ή από άλλες εφαρμογές. Για να μπορεί μια εφαρμογή να διαβάζει ή να γράφει στο /data/media, πρέπει να έχει το READ_EXTERNAL_STORAGE και Δικαιώματα WRITE_EXTERNAL_STORAGE αντίστοιχα (και τα δύο ανήκουν στην ίδια ομάδα αδειών και ως εκ τούτου χορηγούνται από κοινού). Πριν από το Android 4.4 KitKat, οι περισσότερες εφαρμογές ζήτησαν αυτές τις άδειες κατά την εγκατάσταση γιατί διαφορετικά δεν θα ήταν μπορούν να διαβάζουν ή να γράφουν στα αρχεία στον καθορισμένο κατάλογο εξωτερικής αποθήκευσης του πακέτου τους /data/media/.../Android/. Με την εισαγωγή του FUSE για εξομοίωση αδειών καταλόγου τύπου FAT-on-sdcard στο Android 4.4 KitKat, οι εφαρμογές δεν χρειάζονται πλέον δικαιώματα για πρόσβαση στα αρχεία στον καθορισμένο κατάλογο τους στον εξωτερικό χώρο αποθήκευσης. Η πρόσβαση σε αρχεία σε οποιονδήποτε άλλο κατάλογο θα συνεχίσει να απαιτεί τα δικαιώματα εξωτερικού χώρου αποθήκευσης, κάτι που μπορεί να κάνει μια κακόβουλη εφαρμογή για να παραβιάσει τη διαδικασία εγκατάστασης του Fortnite.

Όπως φαίνεται στο παρακάτω βίντεο, μια κακόβουλη εφαρμογή με άδεια READ_EXTERNAL_STORAGE παρακολουθεί τον κατάλογο λήψεων του Fortnite Installer στον εξωτερικό χώρο αποθήκευσης. Όταν εντοπίσει ότι η λήψη έχει ολοκληρωθεί και το δακτυλικό αποτύπωμα επαληθευτεί, αντικαθιστά το κατέβασε το πακέτο Fortnite με το δικό του κακόβουλο πακέτο χάρη στο WRITE_EXTERNAL_STORAGE άδεια. Ωστόσο, λόγω του τρόπου με τον οποίο το Samsung Galaxy Apps επαληθεύει το Fortnite APK πριν από την εγκατάσταση (...απλώς ελέγχει εάν το όνομα του πακέτου είναι "com.epicgames.fortnite"), είναι δυνατό να έχετε Galaxy Εφαρμογές εγκαταστήστε σιωπηλά το κακόβουλο πακέτο στο παρασκήνιο χωρίς παρέμβαση ή ειδοποίηση χρήστη—εφόσον το όνομα του κακόβουλου πακέτου ήταν "com.epicgames.fortnite." Ακόμη χειρότερα, εάν αυτό το κακόβουλο πακέτο στόχευε το επίπεδο SDK 22 ή χαμηλότερο (Android 5.1 Lollipop και παλαιότερες εκδόσεις), θα εκχωρούνται αυτόματα όλα τα δικαιώματα που ορίζονται στο μανιφέστο του, επειδή τα δικαιώματα χρόνου εκτέλεσης είναι υποχρεωτικά μόνο για εφαρμογές που στοχεύουν το επίπεδο SDK 23 και άνω (Android 6.0 Marshmallow και αργότερα).

Τι θα συνέβαινε όμως σε συσκευές που δεν ανήκουν στη Samsung; Λοιπόν, επειδή το Samsung Galaxy Apps δεν είναι εγκατεστημένο σε συσκευές που δεν ανήκουν στη Samsung, το κακόβουλο APK δεν θα εγκατασταθεί σιωπηλά στο παρασκήνιο. Το Fortnite Installer είναι μια εφαρμογή τρίτου κατασκευαστή και, ως εκ τούτου, πρέπει πρώτα να ζητήσει από τον χρήστη να ενεργοποιήσει εγκατάσταση από άγνωστες πηγές και, στη συνέχεια, στείλτε ένα αίτημα στο πρόγραμμα εγκατάστασης του πακέτου να εγκαταστήσει το ψεύτικο Fortnite APK. Στη συνέχεια, θα εξαρτηθεί από τον χρήστη να πατήσει "Εγκατάσταση" όταν ερωτηθεί αν θέλει να εγκαταστήσει την εφαρμογή ή όχι. Αυτό είναι προβληματικό, ανεξάρτητα από το γεγονός ότι τα τηλέφωνα που δεν ανήκουν στη Samsung δεν κινδυνεύουν να εγκατασταθεί αθόρυβα μια κακόβουλη εφαρμογή στο παρασκήνιο. Ο μέσος χρήστης δεν θα ήταν καθόλου σοφότερος εάν ένα κακόβουλο APK κατασκευασμένο με "Fortnite" στο όνομά του και το εικονίδιο της εφαρμογής Fortnite παρουσιαστεί σε αυτόν για εγκατάσταση.

Ωστόσο, υπάρχει σαφής διάκριση μεταξύ της εκμετάλλευσης αυτού του ελαττώματος σε smartphone Samsung Galaxy και smartphone εκτός Samsung. Η πρώτη είναι μια επίθεση Man-in-the-Disk που εκμεταλλεύεται επίσης ένα κρυφό API συστήματος για να εγκαταστήσει αθόρυβα οποιαδήποτε εφαρμογή στο το παρασκήνιο, με οποιεσδήποτε άδειες και χωρίς να χρειάζεται να εξαπατήσετε τον χρήστη ώστε να νομίζει ότι εγκαθιστά ένα ψεύτικο Fortnite APK. Το τελευταίο είναι α τυπική επίθεση Man-in-the-Disk που μπορεί επίσης να συμβεί σε άλλες εφαρμογές που αποθηκεύουν APK ή άλλα σημαντικά δεδομένα σε καταλόγους εξωτερικού χώρου αποθήκευσης, όπως φαίνεται από τα πρόσφατα Σημείο ελέγχου Θέση. Συμβαίνει ότι, χάρη στο κρυφό Galaxy Apps API, αυτή η επίθεση Man-in-the-Disk είναι πιο επικίνδυνη στις συσκευές Samsung Galaxy.

Διόρθωση του ελαττώματος

Προς τιμή της Epic Games, απάντησαν πολύ γρήγορα στην αναφορά στο Google Issue Tracker και κυκλοφόρησαν μια ενημέρωση στην έκδοση 2.1.0 όσο πιο γρήγορα μπορούσαν. Η επιδιόρθωση ήταν απλή—απλώς αποθηκεύστε το ληφθέν Fortnite APK στον εσωτερικό κατάλογο αποθήκευσης του Installer του Fortnite στο /data/data και όχι στον εξωτερικό του κατάλογο αποθήκευσης στο /data/media. Ο μηχανικός της Epic Games ζήτησε να αποκαλυφθεί το ελάττωμα μετά από 90 ημέρες, αν και η Google απέρριψε και δημοσιοποίησε το ζήτημα 7 ημέρες μετά την κυκλοφορία μιας επιδιόρθωσης. Ο Διευθύνων Σύμβουλος της Epic Games, Tim Sweeney, ήταν δεν ευχαριστημένος με τον γρήγορο χρόνο διεκπεραίωσης από την αρχική αναφορά ασφαλείας έως την αποκάλυψή της. Προσέφερε την ακόλουθη δήλωση στους Android Central.

Η Epic εκτίμησε πραγματικά την προσπάθεια της Google να πραγματοποιήσει έναν σε βάθος έλεγχο ασφαλείας του Fortnite αμέσως μετά την κυκλοφορήσει στο Android και μοιραστείτε τα αποτελέσματα με την Epic, ώστε να μπορέσουμε να εκδόσουμε γρήγορα μια ενημέρωση για να διορθώσουμε το ελάττωμα που έχουν ανακαλύφθηκε.

Ωστόσο, ήταν ανεύθυνο της Google να αποκαλύψει δημόσια τις τεχνικές λεπτομέρειες του ελαττώματος τόσο γρήγορα, ενώ πολλές εγκαταστάσεις δεν είχαν ακόμη ενημερωθεί και εξακολουθούσαν να είναι ευάλωτες.

Ένας μηχανικός ασφαλείας της Epic, κατόπιν παρότρυνσης μου, ζήτησε από την Google να καθυστερήσει τη δημόσια αποκάλυψη για τις τυπικές 90 ημέρες, ώστε να δοθεί χρόνος για την ευρύτερη εγκατάσταση της ενημέρωσης. Η Google αρνήθηκε. Μπορείτε να τα διαβάσετε όλα στο https://issuetracker.google.com/issues/112630336

Οι προσπάθειες ανάλυσης ασφαλείας της Google εκτιμώνται και ωφελούν την πλατφόρμα Android, ωστόσο μια εταιρεία τόσο ισχυρή όσο η Google θα πρέπει να εξασκηθεί περισσότερο υπεύθυνος χρόνος αποκάλυψης από αυτόν και να μην θέτουν σε κίνδυνο τους χρήστες κατά τη διάρκεια των προσπαθειών της κατά των δημοσίων σχέσεων ενάντια στη διανομή του Fortnite από την Epic εκτός Google Play.

Δεν μπορώ να μιλήσω για πόσες υπάρχουσες συσκευές Samsung Galaxy εξακολουθούν να έχουν το παλαιότερο πρόγραμμα εγκατάστασης Fortnite. Ίσως η Epic Games πρέπει να πει σε αυτούς τους χρήστες να ενημερώσουν την εγκατάστασή τους στέλνοντας ένα μήνυμα στο Fortnite Mobile. Η καταπληκτική νέα δυνατότητα ανταλλαγής μηνυμάτων εντός εφαρμογής του Firebase μπορούσε να κάνει το κόλπο. Αν και, πιθανότατα δεν είναι μεγάλη υπόθεση ούτως ή άλλως, επειδή, εάν ένας χρήστης με το παλαιότερο πρόγραμμα εγκατάστασης έχει ήδη κατεβάσει το νόμιμο Fortnite, τότε οποιαδήποτε επίθεση MITD δεν θα λειτουργήσει επειδή το κακόβουλο APK δεν μπορεί να εγκατασταθεί πάνω από το υπάρχον Fortnite εγκατάσταση. Σε κάθε περίπτωση, η ανακάλυψη αυτού του ελαττώματος τόσο νωρίς μετά την κυκλοφορία του Fortnite στο Android—όταν εξακολουθεί να υπάρχει τόση διαμάχη για την Epic Games» απόφαση να εγκαταλείψει το Google Play— σίγουρα βοηθά το επιχείρημα ότι η απόφαση της Epic Games ήταν απρόσεκτη. Δεν θα μάθουμε ποτέ εάν αυτή ήταν η πρόθεση της Google πίσω από τη δημοσιοποίηση αυτού του ζητήματος τόσο γρήγορα.