Le langage Rust s’installe sur la version open source d’Android

Spread the love
Le langage Rust s'installe sur la version open source d'Android

La version open source d’Android s’ouvre enfin au langage Rust ! Dans le but de réduire les bugs liés à la sécurité de la mémoire, Google vient en effet d’annoncer que cette version permettra de construire des parties du système d’exploitation en Rust. Si les applications Android peuvent être écrites avec des langages gérés comme Java et Kotlin, ils n’ont en effet pas le « contrôle et la prévisibilité » des langages de niveau inférieur comme C et C++ utilisés pour construire le système d’exploitation Android, explique le géant américain.

« Ils sont légers en ressources et ont des caractéristiques de performance plus prévisibles. Pour C et C++, le développeur est responsable de la gestion de la durée de vie de la mémoire. Malheureusement, il est facile de faire des erreurs en faisant cela, surtout dans les bases de code complexes et multithreadées », fait valoir l’équipe d’Android dans un billet de blog.

De son côté, « Rust fournit des garanties de sécurité de la mémoire en utilisant une combinaison de contrôles à la compilation pour faire respecter la durée de vie/propriété des objets et des contrôles à l’exécution pour s’assurer que les accès à la mémoire sont valides. Cette sécurité est obtenue tout en proposant des performances équivalentes à celles du C et du C++ », relève celle-ci.

publicité

Un processus coûteux jusqu’à maintenant

Dans l’état actuel d’Android, si un processus écrit en C/C++ traite une entrée non fiable, il s’exécute dans un bac à sable, ce qui, selon Google, est coûteux et laisse toujours la possibilité aux attaquants d’enchaîner les failles de sécurité pour exploiter les systèmes.

En outre, Google fait valoir que la moitié de ses bugs de mémoire se trouvent dans du code datant de moins d’un an, et qu’il est donc logique de cibler Rust sur le nouveau code, plutôt que de réécrire le système d’exploitation en Rust. « Même si nous réorientons les efforts de chaque ingénieur logiciel de l’équipe Android, la réécriture de dizaines de millions de lignes de code n’est tout simplement pas réalisable », affirme l’équipe d’Android.

« La rareté relative des anciens bugs de mémoire peut surprendre certains, mais nous avons constaté que ce n’est pas dans les vieux codes qu’il est le plus urgent d’apporter des améliorations. Les bugs logiciels sont découverts et corrigés au fil du temps, donc nous nous attendons à ce que le nombre de vulnérabilités dans le code qui est maintenu mais pas activement développé diminue avec le temps. » L’un des systèmes qui bénéficiera du traitement Rust est Gabeldorsche, présenté comme le successeur du bluetooth.

Un langage aux multiples avantages

L’équipe d’Android a également abordé la question de la détection et de la reproduction des bugs de mémoire afin de pouvoir les corriger. « Pour les bases de code C/C++ complexes, il n’y a souvent qu’une poignée de personnes capables de développer et de réviser la correction, et même avec une quantité élevée d’efforts consacrés à la correction des bugs, parfois les corrections sont incorrectes », écrit-elle.

« La détection des bugs est plus efficace lorsqu’ils sont relativement rares et que les bugs dangereux peuvent recevoir l’urgence et la priorité qu’ils méritent. Notre capacité à récolter les avantages des améliorations dans ce domaine exige que nous donnions la priorité à la prévention de l’introduction de nouveaux bugs. »

L’un des avantages de l’utilisation de Rust réside dans les contraintes et vérifications supplémentaires inhérentes au langage, comme le fait de forcer l’initialisation des variables, ce qui pourrait prévenir la cause première de jusqu’à 5 % des vulnérabilités de sécurité dans Android, indique Google.

Une entreprise de fond

« L’ajout d’un nouveau langage à la plateforme Android est une entreprise de grande envergure. Il y a des chaînes d’outils et des dépendances qui doivent être maintenues, une infrastructure et des outils de test qui doivent être mis à jour, et des développeurs qui doivent être formés », précise l’équipe d’Android. « Au cours des 18 derniers mois, nous avons ajouté la prise en charge de Rust au projet Android Open Source, et nous avons quelques projets d’adoption précoce que nous partagerons dans les mois à venir. »

Plus tôt cette année, Rust est sorti de Mozilla et a rejoint sa propre fondation. Pour rappel, Mozilla a utilisé Rust pour construire son moteur de navigateur Servo et remplacer 160 000vlignes de C++ par 85 000 lignes de Rust. La fondation Mozilla a récemment lancé ThreadSanitizer sur Firefox pour éliminer toute course aux données dans le C/C++ restant dans le code du navigateur. Avec cette base de code mixte, Mozilla craignait que les courses soient obscurcies en passant par le code Rust, mais a néanmoins détecté deux courses purement Rust.

« Globalement, Rust semble remplir l’un de ses objectifs de conception initiaux : nous permettre d’écrire plus de code concurrent en toute sécurité », affirme la fondation. « WebRender et Stylo sont tous deux très volumineux et omniprésents et multithreadés, mais les problèmes de threading ont été minimes. Les problèmes que nous avons trouvés étaient des erreurs dans l’implémentation d’abstractions de multithreading de bas niveau et explicitement non sécurisées – et ces erreurs étaient simples à corriger. »

Source : ZDNet.com

Leave a Reply