Google intègre du code écrit dans le langage de programmation Rust dans son système d’exploitation Android depuis 2019 et ses efforts ont porté leurs fruits sous la forme de moins de vulnérabilités.
Bogues de sécurité de la mémoire – comme hors limites lire et écrire ou Utilisation après la gratuité – représentent plus de 65 % des vulnérabilités de bogues de gravité élevée ou critique dans Chrome et Android, et Les chiffres sont similaires dans les logiciels d’autres fournisseurs. Ces failles dégradent la sécurité et augmenter le coût du développement logiciel lorsqu’il n’est pas détecté tôt.
Mais après quatre ans au cours desquels Android a collecté des morceaux de Rust, ce chiffre a diminué.
« De 2019 à 2022, le nombre annuel de vulnérabilités de sécurité de la mémoire est passé de 223 à 85 », a déclaré Jeffrey Vander Stoep, ingénieur en sécurité Android. Article de blog.
Vander Stoep dit que le déclin coïncide avec les efforts pour s’éloigner des langages de programmation dangereux de la mémoire, par lesquels il entend C / C ++ – un langage qui ne garantit pas la sécurité de la mémoire mais peut la prendre en charge.
À partir d’Android 12 l’année dernière, Rust est devenu un langage de plate-forme Android. Et maintenant, dans Android 13, dit Vander Stoep, la majorité du nouveau code ajouté à la version a été écrite dans un langage de mémoire sécurisée – Rust, Java ou Kotlin.
Avec moins de code non sécurisé de la mémoire entrant dans Android, les failles de sécurité de la mémoire sont passées de 76% des vulnérabilités Android en 2019 à 35% en 2022 – la première année pour laquelle les bogues de sécurité de la mémoire ne représentent pas la majorité des vulnérabilités.
D’autres vulnérabilités sont restées stables au fil du temps, apparaissant à un rythme d’environ 20 par mois au cours des quatre dernières années. Étant donné que les failles de sécurité de la mémoire représentaient la plupart des problèmes critiques, les vulnérabilités qui ont fait surface se sont avérées moins graves.
Google n’est pas la seule grande entreprise technologique à reconnaître les avantages du code sécurisé pour la mémoire. Meta a exprimé son appréciation de Rust. Il y a plusieurs mois, Mark Russinovich, directeur technique de Microsoft, déclaré que C/C++ ne devrait plus être utilisé pour démarrer de nouveaux projets et que Rust devrait être déployé là où un langage sans garbage collection est requis.
À l’époque, Bjarne Stroustrup, créateur de C++, a contesté les conseils de Russinovich en soulignant que Le type et la sécurité de la mémoire peuvent être obtenus dans la norme ISO C++, appliquée par une analyse statique. Selon Stroustrup, aider C++ à évoluer a plus de sens que de déprécier le langage et de laisser le code dangereux sans surveillance.
Google, dit Vander Stoep, continue d’investir dans des outils pour écrire du code C / C ++ plus sûr, soulignant l’allocateur renforcé Scodo, HWASAN, GWP-ASAN et KFENCE sur les appareils Android. Et il dit que Google a augmenté son utilisation du fuzzing. Mais bien que de telles mesures aient contribué à la diminution des bogues de sécurité de la mémoire, il soutient que la majeure partie de la réduction de la vulnérabilité devrait être attribuée à la transition vers des langages sécurisés pour la mémoire.
Dans Android 13, environ 21% du nouveau code natif est écrit en Rust. Cela inclut environ 1,5 million de lignes de code Rust dans le projet Android Open Source (AOSP), composé de composants tels que Keystore2, la nouvelle pile Ultra-large bande (UWB) et DNS-over-HTTP3 qui, les années précédentes, auraient été écrits en C++.
Et jusqu’à présent, Rust a tenu ses promesses. « À ce jour, aucune vulnérabilité de sécurité de la mémoire n’a été découverte dans le code Rust d’Android », a déclaré Vander Stoep, qui a sagement admis que ce ne sera probablement pas le cas pour toujours.
« La combinaison de vitesse et de sécurité de la mémoire de Rust en fait un excellent choix pour un large éventail de projets », a déclaré Rebecca Rumbul, directrice exécutive et PDG de la Rust Foundation, dans un courriel à Le Registre. « Il n’est pas surprenant de voir Rust de plus en plus intégré dans les projets et produits existants, et Le blog récent de Google discuter de Rust dans Android met vraiment en évidence ses avantages en matière de sécurité.
Rumbul a ajouté : « Ces avantages en matière de sécurité sont également reconnus par les décideurs politiques du monde entier, les gouvernements d’Europe et d’Amérique du Nord reconnaissant Rust comme une solution à certains des problèmes de sécurité rencontrés dans le passé. »
La National Security Agency des États-Unis a récemment observé que si des langages comme C ++ peuvent offrir beaucoup de flexibilité, ils comptent sur le programmeur pour fournir les vérifications de référence de mémoire nécessaires.
« Les outils d’analyse logicielle peuvent détecter de nombreux cas de problèmes de gestion de la mémoire et d’opérer.Les options d’environnement peuvent également fournir une certaine protection, mais les protections inhérentes offertes par les langages logiciels sécurisés pour la mémoire peuvent prévenir ou atténuer la plupart des problèmes de gestion de la mémoire », a déclaré l’agence dans direction [PDF] publié le mois dernier. « La NSA recommande d’utiliser un langage sûr pour la mémoire lorsque cela est possible. » ®