Περίπου το 21% του νέου μεταγλωττισμένου κώδικα στο Android 13 είναι γραμμένο σε Rust

Οι μηχανικοί της Google συνόψισαν τα πρώτα αποτελέσματα της εισαγωγής υποστήριξης για ανάπτυξη στη γλώσσα Rust στην πλατφόρμα Android. Στο Android 13, περίπου το 21% του νέου μεταγλωττισμένου κώδικα που προστέθηκε είναι γραμμένο σε Rust και το 79% σε C/C++. Το αποθετήριο AOSP (Android Open Source Project), το οποίο αναπτύσσει τον πηγαίο κώδικα της πλατφόρμας Android, περιέχει περίπου 1.5 εκατομμύρια γραμμές κώδικα Rust που σχετίζονται με νέα στοιχεία όπως το Keystore2 cryptographic key store, μια στοίβα για τσιπ UWB (Ultra-Wideband) , υλοποίηση του πρωτοκόλλου DNS-over-HTTP3, το πλαίσιο εικονικοποίησης AVF (Android Virtualization Framework), πειραματικές στοίβες για Bluetooth και Wi-Fi.

Περίπου το 21% του νέου μεταγλωττισμένου κώδικα στο Android 13 είναι γραμμένο σε Rust

Σύμφωνα με την προηγουμένως υιοθετηθείσα στρατηγική για τη μείωση του κινδύνου ευπαθειών που προκαλούνται από σφάλματα κατά την εργασία με τη μνήμη, η γλώσσα Rust χρησιμοποιείται επί του παρόντος κυρίως για την ανάπτυξη νέου κώδικα και για τη σταδιακή ενίσχυση της ασφάλειας των πιο ευάλωτων και ζωτικών στοιχείων λογισμικού. Δεν υπάρχει γενικός στόχος μεταφοράς ολόκληρης της πλατφόρμας στο Rust και ο παλιός κώδικας παραμένει σε C/C++ και η καταπολέμηση σφαλμάτων σε αυτόν πραγματοποιείται με τη χρήση δοκιμών fuzzing, στατικής ανάλυσης και τη χρήση στην ανάπτυξη τεχνικών παρόμοιων με χρησιμοποιώντας τον τύπο MiraclePtr (δέσμευση σε μη επεξεργασμένους δείκτες, εκτέλεση πρόσθετων ελέγχων για πρόσβαση σε περιοχές ελευθερωμένης μνήμης), το σύστημα εκχώρησης μνήμης Scudo (ασφαλής αντικατάσταση για malloc/free) και μηχανισμούς ανίχνευσης σφαλμάτων κατά την εργασία με μνήμη HWAsan (Hardware-assisted AddressSanitizer), GWP-ASAN και KFENCE.

Όσον αφορά τα στατιστικά στοιχεία για τη φύση των τρωτών σημείων στην πλατφόρμα Android, σημειώνεται ότι καθώς μειώνεται ο νέος κώδικας που λειτουργεί επισφαλώς με τη μνήμη, μειώνεται ο αριθμός των τρωτών σημείων που προκαλούνται από σφάλματα κατά την εργασία με τη μνήμη. Για παράδειγμα, το μερίδιο των τρωτών σημείων που προκαλούνται από προβλήματα μνήμης μειώθηκε από 76% το 2019 σε 35% το 2022. Σε απόλυτους αριθμούς, εντοπίστηκαν 2019 ευπάθειες που σχετίζονται με τη μνήμη το 223, 2020 το 150, 2021 το 100 και 2022 το 85 (όλα τα σημειωμένα τρωτά σημεία ήταν στον κώδικα C/C++· στον κώδικα Rust, δεν υπάρχουν παρόμοια προβλήματα μέχρι στιγμής. βρέθηκαν). Το 2022 ήταν η πρώτη χρονιά κατά την οποία οι ευπάθειες που σχετίζονται με τη μνήμη έπαψαν να κυριαρχούν.

Περίπου το 21% του νέου μεταγλωττισμένου κώδικα στο Android 13 είναι γραμμένο σε Rust

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

Περίπου το 21% του νέου μεταγλωττισμένου κώδικα στο Android 13 είναι γραμμένο σε Rust

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

Περίπου το 21% του νέου μεταγλωττισμένου κώδικα στο Android 13 είναι γραμμένο σε Rust


Πηγή: opennet.ru

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