La société Google a fait le bilan de son initiative visant à intégrer des méthodes de développement sécurisé (Safe Coding) dans Android, telles que l'utilisation de langages de programmation garantissant une gestion sécurisée de la mémoire, l'application d'analyses statiques et la conception d'API en prenant en compte la sécurité. Ces changements ont permis de réduire la proportion de vulnérabilités liées à la mémoire dans Android, passant de 76 % en 2019 à 24 % en 2024, un chiffre bien inférieur à la moyenne de l'industrie, qui est de 70 %.
Les ingénieurs de Google ont également tiré la conclusion que la principale source de problèmes de sécurité est le nouveau code, et qu'il convient donc de concentrer les efforts sur la modernisation des méthodes de développement de ce dernier. Le code existant devient plus fiable et sécurisé au fil du temps (une dépendance exponentielle de la sécurité par rapport au temps est observée), ce qui rend les investissements dans des projets de réécriture du code existant moins avantageux. Par exemple, un code de 5 ans présente en moyenne une densité de vulnérabilités 3,4 fois inférieure à celle du nouveau code. Pour les projets Android et Chromium, grâce à l'application de méthodes de gestion sécurisée de la mémoire, cette différence est de 7,4 fois.

Ainsi, si l'on parvient à prévenir les erreurs de gestion de la mémoire dans le nouveau code, les erreurs similaires dans le code ancien seront de moins en moins fréquentes au fil du temps. En résumé, Google recommande de ne pas réécrire le code ancien, mais de se concentrer sur l'écriture de nouveau code dans des langages qui gèrent la mémoire de manière sécurisée et d'assurer la portabilité entre le nouveau et l'ancien code.
En plus de réduire le nombre de vulnérabilités, l'utilisation de méthodes de programmation sécurisées améliore la productivité du développement, permet d'atteindre une qualité de code supérieure et a un impact positif sur la performance. Par exemple, la réécriture dans Chromium du code pour la génération de QR codes en Rust a permis d'augmenter sa performance de 95 % grâce à l'élimination des frais généraux causés par la nécessité d'appliquer une isolation sandbox supplémentaire.
La vitesse et la qualité du développement s'améliorent grâce à la simplification des tests et à l'anticipation de la détection des erreurs à un stade précoce du développement, où les erreurs deviennent visibles avant même que le développeur n'entame la vérification du code. En exemple, on cite les taux de retour de modifications : pour le code en Rust, le nombre de retours à la modification en raison de l'identification d'erreurs imprévues est deux fois inférieur à celui du code en C++.
De manière générale, l'application de méthodes de programmation sécurisées est présentée comme la paradigme de développement la plus efficace à ce jour, remplaçant les trois approches précédemment utilisées :
- Correction des vulnérabilités après leur découverte. Coûteux, cela nécessite une publication fréquente de mises à jour et leur diffusion rapide aux utilisateurs.
- Protection préventive, axée sur l'utilisation de techniques compliquant l'exploitation des vulnérabilités. Le prix de cette protection était une diminution des performances et un jeu constant de chat et souris avec les attaquants.
- Détection précoce des vulnérabilités par l'utilisation de tests de fuzzing et d'outils tels qu'AddressSanitizer et MemorySanitizer. Cette méthode ne faisait qu'éliminer les symptômes, sans s'attaquer à la cause du problème, et nécessitait un travail constant.


Source : opennet.ru
