Το Rust περιλαμβάνεται στις κύριες γλώσσες για την ανάπτυξη πλατφόρμας Android

Η Google ανακοίνωσε τη συμπερίληψη της γλώσσας προγραμματισμού Rust μεταξύ των γλωσσών που επιτρέπονται για την ανάπτυξη της πλατφόρμας Android. Ο μεταγλωττιστής γλώσσας Rust συμπεριλήφθηκε στο δέντρο προέλευσης Android το 2019, αλλά η υποστήριξη για αυτήν τη γλώσσα παρέμεινε πειραματική. Μερικά από τα πρώτα στοιχεία Rust που έχουν προγραμματιστεί για το Android περιλαμβάνουν νέες υλοποιήσεις του μηχανισμού επικοινωνίας διαδικασιών Binder και της στοίβας Bluetooth.

Η εισαγωγή του Rust πραγματοποιήθηκε ως μέρος ενός έργου για την ενίσχυση της ασφάλειας, την προώθηση ασφαλών τεχνικών προγραμματισμού και την αύξηση της αποτελεσματικότητας του εντοπισμού προβλημάτων κατά την εργασία με μνήμη στο Android. Σημειώνεται ότι περίπου το 70% όλων των επικίνδυνων τρωτών σημείων που εντοπίζονται στο Android προκαλούνται από σφάλματα κατά την εργασία με τη μνήμη. Η χρήση του Rust, το οποίο εστιάζει στην ασφάλεια της μνήμης και την αυτόματη διαχείριση της μνήμης, θα μειώσει τον κίνδυνο ευπάθειας που προκαλείται από σφάλματα μνήμης, όπως η μετά την ελεύθερη πρόσβαση και οι υπερβάσεις buffer.

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

Στο Android, η ασφάλεια της μνήμης παρέχεται στις ήδη υποστηριζόμενες γλώσσες Kotlin και Java, αλλά δεν είναι κατάλληλες για την ανάπτυξη στοιχείων συστήματος λόγω υψηλών επιβαρύνσεων. Το Rust καθιστά δυνατή την επίτευξη απόδοσης κοντά στις γλώσσες C και C++, γεγονός που επιτρέπει τη χρήση του για την ανάπτυξη τμημάτων χαμηλού επιπέδου της πλατφόρμας και εξαρτημάτων για αλληλεπίδραση με το υλικό.

Για να διασφαλίσει την ασφάλεια του κώδικα C και C++, το Android χρησιμοποιεί απομόνωση sandbox, στατική ανάλυση και δοκιμές fuzzing. Οι δυνατότητες απομόνωσης του sandbox είναι περιορισμένες και έχουν φτάσει στο όριο των δυνατοτήτων τους (ο περαιτέρω κατακερματισμός σε διαδικασίες δεν είναι πρακτικός από την άποψη της κατανάλωσης πόρων). Οι περιορισμοί στη χρήση του sandbox περιλαμβάνουν μεγάλα γενικά έξοδα και αυξημένη κατανάλωση μνήμης που προκαλείται από την ανάγκη δημιουργίας νέων διεργασιών, καθώς και πρόσθετες καθυστερήσεις που σχετίζονται με τη χρήση του IPC.

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

Για τις διαδικασίες συστήματος στο Android, η Google τηρεί τον "κανόνα των δύο", σύμφωνα με τον οποίο οποιοσδήποτε προστιθέμενος κώδικας δεν πρέπει να πληροί περισσότερες από δύο από τις τρεις προϋποθέσεις: εργασία με μη επικυρωμένα δεδομένα εισόδου, χρήση μη ασφαλούς γλώσσας προγραμματισμού (C/C++) και τρέχει χωρίς αυστηρή απομόνωση sandbox (με αυξημένα προνόμια). Αυτός ο κανόνας υπονοεί ότι ο κώδικας για την επεξεργασία εξωτερικών δεδομένων πρέπει είτε να μειωθεί σε ελάχιστα προνόμια (απομονωμένος) είτε να γραφτεί σε μια ασφαλή γλώσσα προγραμματισμού.

Η Google δεν στοχεύει να ξαναγράψει τον υπάρχοντα κώδικα C/C++ στο Rust, αλλά σχεδιάζει να χρησιμοποιήσει αυτήν τη γλώσσα για την ανάπτυξη νέου κώδικα. Είναι λογικό να χρησιμοποιείτε το Rust για νέο κώδικα επειδή, στατιστικά, τα περισσότερα σφάλματα εμφανίζονται σε νέο ή πρόσφατα αλλαγμένο κώδικα. Συγκεκριμένα, περίπου το 50% των σφαλμάτων μνήμης που εντοπίστηκαν στο Android εντοπίζονται σε κώδικα που γράφτηκε πριν από λιγότερο από ένα χρόνο.

Το Rust περιλαμβάνεται στις κύριες γλώσσες για την ανάπτυξη πλατφόρμας Android


Πηγή: opennet.ru

Προσθέστε ένα σχόλιο