Cherchant à éviter les bogues de mémoire, le projet de développement de Google consacré à Android prend désormais en charge le langage Rust. Dans un billet de blog du 6 avril, les membres de l'équipe en charge de l'OS mobile ont souligné que l'exactitude du code dans Android était une priorité absolue pour la sécurité, la stabilité et la qualité. Les bogues de sécurité de la mémoire contribuent aux problèmes de stabilité et représentent environ 70% des vulnérabilités de sécurité élevé. Sachant que ceux dont le code est écrit en C et C ++ restent les plus difficiles à résoudre. A l'inverse, Rust fournit des garanties de sécurité de la mémoire en tirant parti des vérifications au moment de la compilation pour garantir que les accès à la mémoire sont valides. Le tout avec un niveau de performance équivalente à C et C ++.
Rust rejoint une liste de langages sûrs utilisés pour développer Android aux côtés également de Java et Kotlin. Alors que cet OS utilise largement Java pour se protéger en grande partie contre les bogues de haut niveau concernant la mémoire, ni Java ni Kotlin ne sont une option pour les couches inférieures du système d'exploitation. Ces couches nécessitent des langages tels que C, C ++ et Rust, qui offrent des performances prévisibles dans des environnements à ressources limitées. Mais avec C et C ++, les développeurs doivent gérer eux-mêmes les cycles de vie de la mémoire, ce qui est sujet aux erreurs, en particulier lorsqu'ils travaillent avec des bases de code complexes et multithread. Rust gère à l'inverse automatiquement l'utilisation de la mémoire, gage indéniable de fiabilité.
Pas les mêmes garanties de sécurité mémoire pour C et C ++
C et C ++ n'ont aussi pas les mêmes garanties de sécurité de mémoire que Rust et nécessitent une isolation robuste. Tous les processus Android sont mis en bac à sable pour sécuriser le code pour les entrées non fiables. Toutefois cela présente des limites en particulier parce que le sandboxing coûte cher et induit de la latence sans éliminer les vulnérabilités de code. Or les langages sécurisés en mémoire comme Rust surmontent ces limitations en réduisant la densité de bogues dans le code et en permettant l'introduction de nouvelles fonctionnalités plus sûres et plus légères.
Les efforts réalisés en termes de sécurité mémoire de l’équipe Android s'appuieront sur de récents développements plutôt que sur de la réécriture de code C / C ++. Les membres de l'équipe ont également averti que l'ajout d'un langage à la plateforme Android constitue un vaste chantier, avec la nécessité de maintenir des chaînes d'outils et de dépendances, tout comme de maintenir à jour l'infrastructure de test. Ce qui n'aura pas un impact faible sur les équipes avec à la clé des actions de formation à prévoir.