Πώς να προβάλετε τα δικαιώματα εφαρμογής Android πριν από την εγκατάσταση ενός APK
Όταν εγκαθιστάτε μια εφαρμογή από το Google Play Store, το Android εμφανίζει μια απλοποιημένη σύνοψη του τι μπορεί να έχει πρόσβαση η εφαρμογή. Φορτώστε ένα APK από μια πηγή εκτός Play και δεν έχετε τέτοιο δίχτυ ασφαλείας, εκτός εάν διαβάσετε μόνοι σας το μανιφέστο. Το "Πρέπει μια εφαρμογή ταπετσαρίας να χρειάζεται πραγματικά πρόσβαση SMS και μικροφώνου;" είναι ακριβώς το είδος της ερώτησης που θα σας βοηθήσει να απαντήσετε σε αυτόν τον οδηγό.
Αυτό που ακολουθεί είναι η ίδια ροή εργασιών που χρησιμοποιεί η ομάδα μας όταν διαλέγει ένα άγνωστο APK: ανοίξτε το, διαβάστε τις καταχωρίσεις uses-permission, αποκωδικοποιήστε τα επίπεδα προστασίας και συγκρίνετε τι χρειάζεται η εφαρμογή λέει με ό,τι συνήθως απαιτεί η κατηγορία της. Το διαδικτυακό εργαλείο πληροφοριών APK μας κάνει την αποκωδικοποίηση δυαδικού XML για εσάς, οπότε η όλη διαδικασία διαρκεί περίπου δέκα δευτερόλεπτα.
Γιατί να ενοχλείτε τις άδειες ελέγχου;
Οι κακόβουλοι προγραμματιστές λαμβάνουν δημοφιλείς δωρεάν εφαρμογές, τις τροποποιούν και τις επανακυκλοφορούν σε ιστότοπους τρίτων. Ενώ η εφαρμογή μπορεί να φαίνεται και να λειτουργεί κανονικά, ο κρυφός της κωδικός θα μπορούσε να είναι η αντιγραφή της λίστας επαφών σας ή η εγγραφή ήχου φόντου. Προβάλλοντας τα δικαιώματα προεγκατάσταση, μπορείτε να εντοπίσετε αυτές τις κόκκινες σημαίες του "permission creep".
Πώς να ελέγξετε οποιοδήποτε αρχείο APK (Διαδικτυακό)
Το Εργαλείο πληροφοριών APK μας διαβάζει το μανιφέστο του αρχείου σας εξ ολοκλήρου στο πρόγραμμα περιήγησής σας. το αρχείο δεν μεταφορτώνεται ποτέ σε διακομιστή και δεν εκτελείται κώδικας. Δείτε πώς να το χρησιμοποιήσετε:
Διαδικασία:
- Μεταβείτε στο Σελίδα πληροφοριών APK.
- Επιλέξτε το αρχείο .apk.
- Περιμένετε να ολοκληρωθεί η ανάλυση (συνήθως 5 δευτερόλεπτα).
- Κάντε κύλιση προς τα κάτω στο Ενότητα αδειών.
- Αναζητήστε σημαίες υψηλού κινδύνου όπως: READ_SMS, PROCESS_OUTGOING_CALLS ή ACCESS_FINE_LOCATION.
Λίστα κόκκινων σημαιών άδειας
Εάν μια εφαρμογή Αριθμομηχανή ή Φακός ζητήσει READ_CONTACTS ή RECORD_AUDIO, διαγράψτε το αρχείο αμέσως. Δεν υπάρχει κανένας νόμιμος λόγος για αυτές τις εφαρμογές να έχουν αυτά τα δεδομένα.
Κατανόηση των επιπέδων άδειας Android
Δεν δημιουργούνται όλα τα δικαιώματα ίσα. Το Android τα κατηγοριοποιεί σε τρία επίπεδα:
- Κανονικός: Δικαιώματα χαμηλού κινδύνου που δεν απειλούν άμεσα το απόρρητο (π.χ. SET_ALARM). Το Android τα χορηγεί αυτόματα.
- Επικίνδυνος: Δικαιώματα υψηλού κινδύνου (Επαφές, Τοποθεσία, Κάμερα). Αυτά τα πρέπει επιβεβαιώνονται από εσάς όταν εκτελείται η εφαρμογή.
- Υπογραφή/Σύστημα: Εξαιρετικά υψηλού κινδύνου. Αυτά είναι διαθέσιμα μόνο σε εφαρμογές που υπογράφονται από τον κατασκευαστή της συσκευής ή το ίδιο το λειτουργικό σύστημα.
Μη αυτόματη μέθοδος (Χρήση προγράμματος προβολής ZIP)
Εάν έχετε κάποια τεχνική ικανότητα, μπορείτε να ελέγξετε μόνοι σας τα δικαιώματα:
- Μετονομάστε το app.apk σε app.zip και ανοίξτε το.
- Βρείτε το AndroidManifest.xml. (Σημείωση: Είναι σε δυαδική μορφή και θα μοιάζει με ασυναρτησίες σε ένα πρόγραμμα επεξεργασίας κειμένου).
- Χρησιμοποιήστε ένα εργαλείο όπως το AXMLPrinter για να το μετατρέψετε σε ευανάγνωστο κείμενο.
- Αναζητήστε ετικέτες που ξεκινούν με <uses-permission>.
Σύσταση: Είναι πολύ πιο γρήγορο να χρησιμοποιήσετε το διαδικτυακό εργαλείο που το αποκωδικοποιεί για εσάς αμέσως.
Ελέγξτε τις εφαρμογές σας τώρα
Μάθετε ακριβώς τι ζητούν οι εφαρμογές σας. Χωρίς μυστικά, χωρίς κινδύνους.
Ελέγξτε τα δικαιώματα APKΤι είναι πραγματικά αποθηκευμένο στο AndroidManifest.xml
Το μανιφέστο είναι η πηγή της αλήθειας για κάθε άδεια, στοιχείο και χαρακτηριστικό που δηλώνει μια εφαρμογή. Μέσα σε ένα APK, το αρχείο είναι σε μορφή δυαδική XML, όχι το απλό κείμενο που βλέπετε στον πηγαίο κώδικα, επομένως δεν μπορεί να διαβαστεί με ένα κανονικό πρόγραμμα επεξεργασίας κειμένου. Το εργαλείο μας APK Info αποκωδικοποιεί το δυαδικό XML και εμφανίζει τις σχετικές ετικέτες. Τα πιο σημαντικά είναι:
- <uses-permission android:name="..."/>: κάθε άδεια που μπορεί να ζητήσει ποτέ η εφαρμογή. Η λίστα γεμάτος είναι εδώ, συμπεριλαμβανομένων εκείνων που η εφαρμογή ενδέχεται να μην χρησιμοποιήσει ποτέ πραγματικά κατά το χρόνο εκτέλεσης.
- <uses-permission-sdk-23 ... />: το ίδιο, αλλά ζητείται μόνο όταν η εφαρμογή εκτελείται σε Android 6 ή νεότερη έκδοση. Οι παλαιότερες συσκευές επιτρέπονται αθόρυβα χωρίς προτροπή.
- <uses-feature android:name="..." android:required="true|false"/>: χαρακτηριστικά υλικού που χρησιμοποιεί η εφαρμογή (κάμερα, GPS, NFC). Όταν επισημαίνεται υποχρεούμαι, το Play Store αποκρύπτει την εφαρμογή από συσκευές που δεν διαθέτουν τη δυνατότητα.
- <application android:debuggable="true">: μια γιγάντια κόκκινη σημαία σε ένα APK έκδοσης. Μια εφαρμογή με δυνατότητα εντοπισμού σφαλμάτων εκθέτει τη μνήμη και την κατάσταση διεργασίας σε οποιονδήποτε έχει πρόσβαση στο ADB. Απορρίπτω.
- <activity android:exported="true"> σε ευαίσθητες δραστηριότητες: επιτρέπει σε άλλες εφαρμογές να εκκινήσουν αυτήν την οθόνη. Για μια εφαρμογή απορρήτου, αυτό συχνά σηματοδοτεί ακατάλληλη κωδικοποίηση.
Επίπεδα προστασίας αδειών: Το φύλλο εξαπάτησης
Το Android εκχωρεί σε κάθε άδεια ένα "επίπεδο προστασίας". Το να γνωρίζετε σε ποιο επίπεδο ανήκει ένα αίτημα, σας λέει πόσο σοβαρά θα το αντιμετωπίσει το λειτουργικό σύστημα.
| Επίπεδο προστασίας | Εμπειρία χρήστη | Παραδείγματα |
|---|---|---|
| κανονικός | Χορηγείται σιωπηλά κατά τον χρόνο εγκατάστασης. Χωρίς προτροπή. | INTERNET, VIBRATE, ACCESS_NETWORK_STATE, WAKE_LOCK |
| επικίνδυνος | Προτροπή χρόνου εκτέλεσης την πρώτη φορά που χρησιμοποιείται η δυνατότητα. Με δυνατότητα ανάκλησης στις Ρυθμίσεις. | CAMERA, RECORD_AUDIO, READ_CONTACTS, ACCESS_FINE_LOCATION |
| υπογραφή | Χορηγείται μόνο σε εφαρμογές που είναι υπογεγραμμένες με το ίδιο πιστοποιητικό με την εφαρμογή παραχώρησης ή το λειτουργικό σύστημα. | BIND_VPN_SERVICE, INSTALL_PACKAGES (μόνο για σύστημα) |
| υπογραφή|προνομιούχος | Διατίθεται μόνο σε προεγκατεστημένες εφαρμογές στον κατάλογο priv-app της εικόνας συστήματος. | MANAGE_USERS, READ_LOGS (δικαιώματα συστήματος) |
| appop / ρόλος | Απαιτείται ξεχωριστή ροή ρυθμίσεων για την ενεργοποίηση. | SYSTEM_ALERT_WINDOW, BIND_ACCESSIBILITY_SERVICE, MANAGE_EXTERNAL_STORAGE (ειδική πρόσβαση) |
Τι σημαίνει στην πραγματικότητα "Κρυμμένα" δικαιώματα
Μια κοινή παρανόηση είναι ότι ορισμένες άδειες είναι μυστικές. Δεν είναι: κάθε άδεια που μπορεί να χρησιμοποιεί μια εφαρμογή πρέπει να δηλώνεται στο AndroidManifest.xml και το λειτουργικό σύστημα αρνείται να χορηγήσει οποιαδήποτε άδεια που δεν αναφέρεται εκεί. Αυτό που συνήθως εννοούν οι άνθρωποι με το "κρυφό" είναι ένα από δύο πράγματα:
- Τα δικαιώματα κανονικού επιπέδου είναι αθόρυβα. Χορηγούνται κατά την εγκατάσταση χωρίς καμία αλληλεπίδραση με τον χρήστη. Η σύνοψη του Play Store δεν εμφανίζει καν μερικά από αυτά. Είναι «κρυμμένα» με την έννοια του «εύκολου να τα παραβλέψεις», όχι με την έννοια του «αφανήτου».
- Οι εφαρμογές Προσαρμοσμένα δικαιώματα που καθορίζονται από την εφαρμογή. μπορούν να δηλώσουν τις δικές τους ετικέτες <permission> και να τις απαιτήσουν σε εσωτερικά στοιχεία. Αυτά υπάρχουν για επικοινωνία μεταξύ εφαρμογών και δεν αποτελούν από μόνα τους ανησυχία για το απόρρητο, αλλά μπορεί να γίνει κατάχρηση εάν μια δημοφιλής εφαρμογή δηλώσει μια προσαρμοσμένη άδεια με λάθος επίπεδο προστασίας και μια άλλη εφαρμογή τη χρησιμοποιήσει ως backdoor.
Είτε έτσι είτε αλλιώς, η απάντηση είναι η ίδια: διαβάστε το μανιφέστο, μην εμπιστεύεστε μια περιγραφή του Play Store από μόνη της.
Παράδειγμα εργασίας: Έλεγχος πραγματικού APK
Ας υποθέσουμε ότι έχετε το example.apk στο φάκελο "Λήψεις". Εδώ είναι η ακριβής ροή εργασίας:
- Ανοίξτε το Εργαλείο πληροφοριών APK στο πρόγραμμα περιήγησής σας.
- Ρίξτε το APK στην περιοχή μεταφόρτωσης. Η επεξεργασία γίνεται τοπικά. το αρχείο δεν φεύγει από τη συσκευή σας.
- Διαβάστε την ενότητα Άδειες. Κάθε καταχώρηση εμφανίζει το όνομα της σταθεράς (android.permission.READ_CONTACTS και μια περιγραφή σε απλή γλώσσα του τι επιτρέπει).
- Συγκρίνετε τη λίστα με την κατηγορία της εφαρμογής. Χονδρικά, να περιμένετε:
- Εφαρμογές κάμερας: CAMERA, RECORD_AUDIO (για βίντεο), STORAGE/MEDIA εγγραφή
- Εφαρμογές ανταλλαγής μηνυμάτων: INTERNET, READ_CONTACTS, SEND_SMS (μόνο εάν βασίζεται σε SMS), RECORD_AUDIO (για φωνητικές σημειώσεις), CAMERA (για αποστολή φωτογραφιών)
- Παιχνίδια: ΔΙΑΔΙΚΤΥΟ, μερικές φορές RECORD_AUDIO (για φωνητική συνομιλία στο παιχνίδι), άδειες που σχετίζονται με τη χρέωση. σπάνια οτιδήποτε άλλο
- Βοηθητικές εφαρμογές (αριθμομηχανή, φακός, καιρός): INTERNET (για διαφημίσεις), ACCESS_NETWORK_STATE, πιθανώς LOCATION (μόνο για τον καιρό). Οτιδήποτε πέρα από αυτό είναι ύποπτο.
- Εάν κάτι στη λίστα δεν ταιριάζει στην κατηγορία, μην το εγκαταστήσετε. Δεν υπάρχει καλός λόγος που μια αριθμομηχανή χρειάζεται πρόσβαση SMS.
Η ίδια λογική ισχύει είτε το αρχείο είναι ένα APK, ένα XAPK (όπου διαβάζουμε το APK εσωτερικής βάσης) είτε ένα πακέτο APKS (όπου διαβάζουμε το μανιφέστο κάθε διαχωρισμού).
Κάνοντάς το από τη γραμμή εντολών
Εάν προτιμάτε την τερματική διαδρομή, το Android SDK αποστέλλει το aapt2, το οποίο απορρίπτει ένα μανιφέστο από οποιοδήποτε APK σε απλό XML:
aapt2 dump badging example.apk | grep "uses-permission"
Ή χρησιμοποιήστε το apksigner για να επαληθεύσετε το πιστοποιητικό υπογραφής ταυτόχρονα:
apksigner verify --print-certs example.apk
Το εργαλείο προγράμματος περιήγησης κάνει το ίδιο πράγμα για χρήστες που προτιμούν να μην εγκαταστήσουν ένα SDK απλώς για να ελέγξουν ένα μεμονωμένο αρχείο.
Συχνές Ερωτήσεις (FAQ)
Μπορώ να αρνηθώ μια άδεια μετά την εγκατάσταση ενός APK;
Ναί. Σε Android 6.0 και νεότερη έκδοση, μπορείτε να μεταβείτε στο Ρυθμίσεις > Εφαρμογές > [Όνομα εφαρμογής] > Δικαιώματα για να ενεργοποιήσετε ή να απενεργοποιήσετε μεμονωμένα επικίνδυνα δικαιώματα.
Τα αρχεία XAPK έχουν διαφορετικά δικαιώματα;
Ένα XAPK περιέχει ένα ή περισσότερα APK. Κάθε APK μέσα έχει το δικό του μανιφέστο. Το εργαλείο μας θα αναλύσει το Κύριο APK μέσα στο πακέτο για να σας δείξει τα σχετικά δικαιώματα.
Γιατί κάθε εφαρμογή ζητά "Πρόσβαση στο δίκτυο";
Σχεδόν όλες οι εφαρμογές χρειάζονται πρόσβαση στο διαδίκτυο για αναλυτικά στοιχεία, αναφορές σφαλμάτων ή διαφημίσεις. Αν και είναι συνηθισμένο, είναι επίσης ο τρόπος με τον οποίο τα κλεμμένα δεδομένα αποστέλλονται στον διακομιστή ενός χάκερ.
Επιθεώρηση των δικαιωμάτων Manifest πριν πατήσετε Install
Δεν μπορείς να κρίνεις αυτό που δεν μπορείς να δεις. Το να ξοδεύετε δέκα δευτερόλεπτα στο δείτε τα δικαιώματα ενός APK πριν από την πλευρική φόρτωση, είναι η διαφορά ανάμεσα στο να γνωρίζετε τι μπορεί να φτάσει μια εφαρμογή και απλά να ελπίζετε ότι συμπεριφέρεται. Διαβάστε πρώτα τη λίστα και μετά εγκαταστήστε.