Παρόλο που οι χρήστες κινητών τηλεφώνων βλέπουν σιγά σιγά τις επιλογές τους σε λειτουργικά συστήματα να διευρύνονται, το Android και το iOS εξακολουθούν να κατέχουν τη μερίδα του λέοντος στην αγορά και είναι παρόντα στις συσκευές των χρηστών που θέλουν πρόσβαση στην πλειονότητα των εφαρμογών που αναπτύσσονται.
Σύμφωνα με στοιχεία που δημοσιεύθηκαν τον Φεβρουάριο του 2021 από το τμήμα ερευνών Statista, από το δεύτερο τρίμηνο του 2020, το Google Play προσέφερε στους χρήστες Android πρόσβαση σε 2,7 εκατομμύρια εφαρμογές, ενώ το App Store της Apple είχε σχεδόν 1,82 εκατομμύρια εφαρμογές.
Το Android, η ανοικτή πλατφόρμα της Google, είναι αρεστό για την ευελιξία του και τη δυνατότητα προσαρμογής που προσφέρει. Με τις μεγάλες δυνατότητες, ωστόσο, έρχονται και μεγάλοι πονοκέφαλοι, καθώς η ίδια ευελιξία και η πρόσβαση που παρέχεται τόσο στους προγραμματιστές όσο και στους χρήστες, παρέχει ευκαιρίες σε κακόβουλους χάκερ να εκμεταλλευτούν ευπάθειες και να υπονομεύσουν την ασφάλεια περισσότερων από 2,5 δισεκατομμυρίων ενεργών συσκευών (από τον Μάιο του 2019).
Γιατί να σκέφτεστε την ασφάλεια του Android;
Τα smartphones και τα tablet αποτελούν πλέον αναπόσπαστο κομμάτι της ζωής των ανθρώπων, παρέχοντας ένα μέσο πρόσβασης και χρήσης ευαίσθητων πληροφοριών (τραπεζικά και άλλα οικονομικά δεδομένα, προσωπικά έγγραφα, βίντεο, φωτογραφίες, επαφές, PINS και κωδικούς πρόσβασης). Παρόλο που το λειτουργικό σύστημα Android της Google βασίζεται στον πυρήνα του Linux, οι χρήστες συχνά ανησυχούν για το αν η πλατφόρμα είναι πραγματικά ασφαλής.
Πρόσφατα για παράδειγμα, ερευνητές της Checkpoint διαπίστωσαν ότι ένα δισεκατομμύριο smartphones επηρεάστηκαν από ένα σύνολο 400 ελαττωμάτων ασφαλείας σε δοκιμασμένα τσιπ της DSP, τις μονάδες ψηφιακού επεξεργαστή σήματος που κατασκευάζονται από την Qualcomm Technologies και χρησιμοποιούνται σε τηλέφωνα που πωλούνται από εταιρείες όπως η Google, η Samsung, η LG και η Xiaomi, επηρεάζοντας το 40% των τηλεφώνων Android και το 90% της αγοράς των ΗΠΑ. Εξαιτίας αυτού του προβλήματος, κακόβουλοι χάκερ θα μπορούσαν να έχουν πρόσβαση σε φωτογραφίες, δεδομένα θέσης, κλήσεις, βίντεο αλλά και να κάνουν το τηλέφωνο να μην ανταποκρίνεται και να είναι ουσιαστικά άχρηστο.
Δεν αποτελεί έκπληξη, λοιπόν, το γεγονός ότι η Google θέτει ως προτεραιότητα την ενσωμάτωση όλο και περισσότερης ασφάλειας στο λειτουργικό της σύστημα, καθώς και την έγκαιρη κυκλοφορία διορθώσεων ασφαλείας στην τελευταία έκδοση του Android για να διασφαλίσει την αφοσίωση και την εμπιστοσύνη των πελατών.
Προβλήματα στο Android
Βγαίνοντας από το sandbox μιας εφαρμογής
Αυτό είναι δυνατό μόνο αν παραβιαστεί η ασφάλεια του πυρήνα του Linux. Το Android βασίζεται σε προστασίες για την επιβολή του sandbox των εφαρμογών και καταβάλλει προσπάθειες για να αποτρέψει μεμονωμένες ευπάθειες από το να θέσουν σε κίνδυνο το λειτουργικό σύστημα και άλλες εφαρμογές.
Σε κάθε έκδοση του Android έχουν προστεθεί χαρακτηριστικά ασφαλείας. Στο Android 5.0 εισήχθη ο υποχρεωτικός διαχωρισμός ελέγχου πρόσβασης (MAC) SELinux μεταξύ του συστήματος και των εφαρμογών. Περιορισμοί εισήχθησαν στο Android 10, όπου οι εφαρμογές είχαν περιορισμένη ακατέργαστη προβολή του συστήματος αρχείων και καμία άμεση πρόσβαση σε διαδρομές όπως το /sdcard/DCIM.
Ζητήματα ασφάλειας της μνήμης
Αυτό το πρόβλημα αντιπροσωπεύει το 59% όλων των κρίσιμων και υψηλής σοβαρότητας ευπαθειών ασφαλείας του Android και περιλαμβάνει memory corruption και overflows. Μια γρήγορη ματιά στον κατάλογο CVE δείχνει ότι από τις 414 ευπάθειες του Android που εντοπίστηκαν το 2019, οι 150 σχετίζονται με memory corruption και με τη δυνατότητα ενός χάκερ να μπορεί να εκτελέσει κώδικα από απόσταση και να αποκτήσει πρόσβαση σε αρχεία και δεδομένα χωρίς προνόμια.
Το Android παρέχει το Address Space Layout Randomization (ASLR), μια διαδικασία προστασίας της μνήμης για την ελαχιστοποίηση των προβλημάτων και χρησιμοποιεί επίσης “NX, ProPolice, safe_iop, OpenBSD dlmalloc, OpenBSD calloc και Linux mmap_min_addr για να μετριάσει τους κινδύνους που σχετίζονται με κοινά σφάλματα διαχείρισης μνήμης”.
Μία από τις προσπάθειες στις οποίες επικεντρώνεται η Google είναι η προοδευτική μετάβαση σε γλώσσες με ασφάλεια μνήμης, δηλαδή τη Java, τη συμβατή με τη JVM Kotlin και τη Rust. Οι γλώσσες C και C++ χρησιμοποιούνται συχνά χάρη στην ευελιξία τους, ειδικά κατά τη συγγραφή πυρήνων και οδηγών- δυστυχώς, δεν προσφέρουν αξιόπιστη συλλογή σκουπιδιών και η χειροκίνητη διαχείριση μνήμης μπορεί να οδηγήσει σε προβλήματα, όπως buffer overflow και overreads. Η Mozilla Rust αποδεικνύεται ότι είναι “η χρυσή τομή μεταξύ της χαμηλού επιπέδου δύναμης της C και της ασφάλειας μνήμης που υπάρχει σε γλώσσες υψηλότερου επιπέδου όπως η Java”.
Προβλήματα δικαιωμάτων
Τα ζητήματα αυτά αντιστοιχούσαν στο 21% των ζητημάτων που αντιμετώπισαν οι μηχανικοί ασφαλείας της Google το 2019. Το σύστημα δικαιωμάτων Android είναι ένα βασικό στοιχείο που προστατεύει τα δεδομένα και τους χρήστες μέσω μηχανισμών ελέγχου πρόσβασης. Αυτό το σημαντικό μέρος των μέτρων ασφαλείας που έχει επινοήσει η Google αποτελεί συχνά στόχο αλλαγών και βελτιώσεων σε κάθε νέα έκδοση του Android.
Κάθε εφαρμογή που εκτελείται στην πλατφόρμα Android πρέπει να υπογράφεται από τον προγραμματιστή. Από προεπιλογή, καμία εφαρμογή δεν έχει την άδεια να εκτελεί λειτουργίες που θα μπορούσαν να επηρεάσουν αρνητικά άλλες εφαρμογές, το λειτουργικό σύστημα ή τον χρήστη. Αυτό περιλαμβάνει την ανάγνωση ή την εγγραφή των προσωπικών δεδομένων του χρήστη (όπως επαφές ή μηνύματα ηλεκτρονικού ταχυδρομείου), την ανάγνωση ή την εγγραφή αρχείων άλλης εφαρμογής, την εκτέλεση πρόσβασης στο δίκτυο και πολλά άλλα.
Επειδή ο πυρήνας προστατεύει τις εφαρμογές μεταξύ τους, οι εφαρμογές πρέπει να μοιράζονται ρητά πόρους και δεδομένα. Αυτό το κάνουν δηλώνοντας τα δικαιώματα που χρειάζονται και ζητώντας τη συγκατάθεση των χρηστών κατά την εγκατάσταση της εφαρμογής. Ορισμένες εφαρμογές ζητούν περισσότερες άδειες από όσες είναι απαραίτητες για την ορθή λειτουργία τους- ορισμένες είναι απλώς λειτουργίες συλλογής δεδομένων. Δυστυχώς, οι χρήστες συχνά χορηγούν δικαιώματα χωρίς να κατανοούν πραγματικά τις συνέπειες των επιλογών τους.
Η Google ασχολείται διαρκώς με τα ζητήματα αδειών. Για παράδειγμα, ενώ με το Android 10 οι χρήστες μπορούσαν να περιορίσουν την πρόσβαση σε πληροφορίες τοποθεσίας και είχαν τη δυνατότητα να “επιτρέψουν μόνο κατά τη χρήση της εφαρμογής”, το Android 11 προχώρησε παραπέρα, επιτρέποντας στους χρήστες να περιορίσουν την πρόσβαση στην τοποθεσία, τα μικρόφωνα και τις κάμερες επίσης σε προσωρινή βάση, για μία μόνο χρήση. Επιπλέον, οι εφαρμογές που δεν έχουν χρησιμοποιηθεί για μεγάλα χρονικά διαστήματα θα δουν τα δικαιώματά τους να ανακαλούνται. Στο Android 11, μια εφαρμογή θα μπορεί να ζητήσει από έναν χρήστη δικαιώματα μόνο δύο φορές και να απορριφθεί- μετά από αυτό, το λειτουργικό σύστημα αρνείται αυτόματα τα περαιτέρω αιτήματα.
Οι προγραμματιστές μπορούν να κάνουν πολλά για να διασφαλίσουν την ασφαλή πρόσβαση των εφαρμογών στους πόρους του συστήματος, καθώς και για να διασφαλίσουν την παροχή των κατάλληλων δικαιωμάτων σε εφαρμογές τρίτων. Μπορούν να περιορίσουν την αποθήκευση δεδομένων μόνο σε εσωτερικές εφαρμογές ή, εάν μοιράζονται δεδομένα μεταξύ δύο εφαρμογών που ανήκουν στον ίδιο προγραμματιστή, μπορούν να χρησιμοποιήσουν ένα κλειδί υπογραφής. Με τον τρόπο αυτό διασφαλίζεται ότι οι εφαρμογές μπορούν να ελέγχουν αυτόματα τη νόμιμη πρόσβαση χωρίς αλληλεπίδραση του χρήστη και χωρίς πιθανότητες σφαλμάτων.
Επίθεση overlay
Αυτό αποτελούσε πάντα ένα σοβαρό ζήτημα και επέτρεπε τη δυνατότητα απόσπασης διαπιστευτηρίων εξαπατώντας τους χρήστες να τα πληκτρολογήσουν σε ψεύτικες διαδικτυακές υπηρεσίες. Στο Android 11, η επικάλυψη πρέπει να επιτρέπεται από τον χρήστη, ο οποίος δεν οδηγείται απευθείας στην οθόνη ελέγχου ταυτότητας αλλά σε ένα βήμα πριν, όπου μπορεί να επιλέξει να προχωρήσει.
Προβλήματα αποθήκευσης δεδομένων
Η αποθήκευση των δεδομένων αποτελεί πάντοτε μια ανησυχία. Οι χρήστες του Android βλέπουν τα δεδομένα τους να τοποθετούνται σε εσωτερικούς και εξωτερικούς αποθηκευτικούς χώρους καθώς και σε παρόχους περιεχομένου.
Ο εξωτερικός αποθηκευτικός χώρος είναι χρήσιμος για μεγάλα, μη ευαίσθητα αρχεία καθώς και για δεδομένα που προορίζονται για κοινή χρήση με άλλες εφαρμογές. Τα δεδομένα σε εξωτερικό αποθηκευτικό χώρο, όπως οι κάρτες SD, ωστόσο, είναι αφαιρούμενα και μπορούν να προσπελαστούν σε άλλα πλαίσια. Οι ευαίσθητες πληροφορίες θα πρέπει, αντιθέτως, να κρυπτογραφούνται στον εσωτερικό αποθηκευτικό χώρο, ώστε να είναι προσβάσιμες μόνο από την εφαρμογή που δημιούργησε αυτά τα δεδομένα.
Για την κοινή χρήση με άλλες εφαρμογές, αντί να χρησιμοποιείτε λειτουργίες όπως MODE_WORLD_WRITEABLE ή MODE_WORLD_READABLE, οι οποίες δεν παρέχουν κανέναν έλεγχο στην πρόσβαση στα δεδομένα, είναι προτιμότερο να χρησιμοποιείτε παρόχους περιεχομένου με τους οποίους η πρόσβαση μπορεί να χορηγείται ανάλογα με την ανάγκη και τα δικαιώματα μπορούν να αλλάζουν με βάση την πραγματική ανάγκη των εφαρμογών. Η πρόσβαση στα αντικείμενα του παρόχου περιεχομένου θα πρέπει να μην επιτρέπεται αν ένας προγραμματιστής δεν σκοπεύει να μοιραστεί δεδομένα με άλλες εφαρμογές τρίτων.
Φυσικά, είναι επίσης σημαντικό να διασφαλιστεί ότι η αποθήκευση και η μετάδοση ευαίσθητων δεδομένων διατηρείται στο ελάχιστο για λόγους ασφαλείας και συμμόρφωσης. Για να αποτρέψουν την έκθεση δεδομένων, οι προγραμματιστές μπορούν να εξετάσουν πρώτα εναλλακτικές λύσεις (μετάδοση του κατακερματισμού ενός email αντί της πραγματικής διεύθυνσης). Ο προγραμματιστής μπορεί επίσης να διασφαλίσει ότι δεν μεταδίδονται άσκοπα δεδομένα που καλύπτονται από την προστασία της ιδιωτικής ζωής σε διακομιστή, εάν θα μπορούσαν να διεκπεραιωθούν στον υπολογιστή-πελάτη. Τα αρχεία καταγραφής αποτελούν επίσης μια πιθανή πηγή διαρροών με δεδομένα που θα μπορούσαν να αποθηκευτούν εκεί άθελά τους και στη συνέχεια να γίνουν διαθέσιμα σε οποιαδήποτε εφαρμογή με δικαίωμα READ_LOGS.
Ζητήματα που σχετίζονται με τη δυναμική φόρτωση του κώδικα
Ένα από τα ζητήματα που αναφέρονται συχνά αναφέρεται στη δυνατότητα των εφαρμογών να φορτώνουν κώδικα δυναμικά. Πρόκειται για μια διαδικασία που χρησιμοποιείται συχνά για νόμιμους σκοπούς, αλλά που μπορεί να αξιοποιηθεί και από κακόβουλους χάκερ. Το πλεονέκτημα είναι η δυνατότητα να μην χρειάζεται να φορτώνονται όλες οι βιβλιοθήκες αμέσως αλλά μόνο όταν χρειάζεται κατά τη διάρκεια της χρήσης της εφαρμογής. Το μειονέκτημα είναι ότι ένας απομακρυσμένος κώδικας μπορεί εύκολα να αποφύγει να συλληφθεί από τα εργαλεία στατικής ανάλυσης και ενδέχεται να μην εντοπιστεί μέσω της διαδικασίας επαλήθευσης, καθώς στην πραγματικότητα δεν υπάρχει στο δημοσιευμένο πακέτο APK της εφαρμογής αλλά στο DEX.
Rooting
Πρόκειται για μια διαδικασία που χρησιμοποιούν συχνά οι χρήστες για να αποκτήσουν μεγαλύτερο έλεγχο των συσκευών τους και να απαλλαγούν από τους περιορισμούς του λειτουργικού συστήματος. Δυστυχώς, είναι επίσης ένας τρόπος για να καταστήσει αναποτελεσματικά ορισμένα από τα ενσωματωμένα χαρακτηριστικά ασφαλείας του Android με κίνδυνο να εκτεθούν δεδομένα που πριν ήταν αποθηκευμένα με ασφάλεια πίσω από στρώματα προστατευτικών περιορισμών. Το rooting μπορεί να οδηγήσει όχι μόνο σε θέματα ασφάλειας αλλά και σε άλλα προβλήματα, όπως η ασυμβατότητα ορισμένων νόμιμων εφαρμογών και η αδυναμία αναβάθμισης ή ενημέρωσης του Android.
Διατήρηση της ασφάλειας της πλατφόρμας και του οικοσυστήματος Android
Το Android εκμεταλλεύεται την ασφάλεια του πυρήνα Linux και τα χαρακτηριστικά ασφαλείας, συμπεριλαμβανομένου ενός μοντέλου δικαιωμάτων που βασίζεται στον χρήστη, την υπογραφή εφαρμογών και την απομόνωση διεργασιών. Τι άλλο έχει εισαχθεί για να διατηρηθεί αυτό το οικοσύστημα ασφαλές;
Βιομετρικά στοιχεία
Ένα σημαντικό χαρακτηριστικό στο Android 11 είναι η δυνατότητα επιλογής της κατηγορίας βιομετρικών στοιχείων που μπορούν να ζητήσουν οι προγραμματιστές για τη χρήση της εφαρμογής τους. Για την πρόσβαση σε πολύ ευαίσθητα ιατρικά ή οικονομικά δεδομένα, για παράδειγμα, μπορεί να ζητηθεί βιομετρία “ισχυρού” επιπέδου, η οποία θα περιλαμβάνει σάρωση ίριδας ή δακτυλικών αποτυπωμάτων καθώς και 3D ασφαλές ξεκλείδωμα προσώπου. Άλλες επιλογές θα ήταν τα ασθενέστερα βιομετρικά στοιχεία (όπως η κανονική αναγνώριση προσώπου) ή τα διαπιστευτήρια της συσκευής (όπως τα PIN και οι κωδικοί πρόσβασης). Οι προγραμματιστές μπορούν να χρησιμοποιήσουν το API BiometricPrompt για να επιλέξουν τον τύπο βιομετρικών που είναι απαραίτητος για να εγγυηθεί η μέγιστη δυνατή προστασία των δεδομένων των χρηστών.
Αποθήκευση περιορισμένης κλίμακας
Όταν ο περιορισμένος αποθηκευτικός χώρος εισήχθη με το Android 10 για τον περιορισμό της πρόσβασης σε αρχεία και φακέλους ανάλογα με τις ανάγκες, δημιουργήθηκαν προβλήματα για πολλές εφαρμογές. Το Android 11 τελειοποίησε τη λειτουργία και οι εφαρμογές με πρόσβαση στον αποθηκευτικό χώρο θα έχουν μια επιλογή μόνο για ανάγνωση ρυθμισμένη μέχρι ο χρήστης να την αλλάξει χειροκίνητα σε “πρόσβαση σε όλα τα αρχεία”. Η πρόσβαση με εμβέλεια διαχωρίζει περαιτέρω τα αρχεία που ανήκουν σε κάθε εφαρμογή και, αν και καθιστά πιο δύσκολο για τους προγραμματιστές να ρυθμίσουν τη νόμιμη πρόσβαση σε δεδομένα μεταξύ των εφαρμογών, δίνει μεγαλύτερη ασφάλεια και έλεγχο στους χρήστες σχετικά με το τι προσπελαύνεται και τι μοιράζεται.
Συλλογή πληροφοριών ιστορικού
Με το Android 11, οι εφαρμογές δεν επιτρέπεται πλέον να συλλέγουν πληροφορίες στο παρασκήνιο. Η μόνη στιγμή που θα επιτρέπεται σε μια εφαρμογή να συλλέγει πληροφορίες είναι όταν εκτελείται. Αυτό θέτει τους χρήστες στον έλεγχο του πότε μια εφαρμογή μπορεί να συλλέγει δεδομένα και πληροφορίες.
Τα ελαττώματα των Android συσκευών
Πολλά ελαττώματα του λειτουργικού συστήματος εξακολουθούν να αποτελούν κίνδυνο για δυνητικά εκατομμύρια συσκευές Android. Ωστόσο, οι νέες εξελίξεις του Android έχουν προσθέσει σημαντικά χαρακτηριστικά για την ασφάλεια των δεδομένων και των συσκευών των χρηστών.
Οι διορθώσεις για τα δημόσια γνωστά σφάλματα κυκλοφορούν άμεσα από την ομάδα ασφαλείας της Google, η οποία έχει συνεχώς διαθέσιμες εφαρμοστέες επιδιορθώσεις και στα μηνιαία δελτία ασφαλείας του Android. Είναι σημαντικό για τους χρήστες αλλά και τους προγραμματιστές να εκμεταλλεύονται τις τελευταίες ενημερώσεις ασφαλείας για να ελαχιστοποιήσουν τα προβλήματα και να συμβάλουν σε ασφαλέστερα περιβάλλοντα Android.