Éliminer à la source les vulnérabilités de sûreté mémoire
Un résultat paradoxal
- Quand une base de code écrite dans des langages non sûrs en mémoire continue de croître, le fait de basculer les nouvelles fonctionnalités vers des langages sûrs en mémoire réduit fortement les vulnérabilités de sûreté mémoire
- Cela s’explique par le fait que les vulnérabilités diminuent de manière exponentielle avec le temps
Explication mathématique
- La durée de vie des vulnérabilités suit une distribution exponentielle
- Les vulnérabilités apparaissent principalement dans le nouveau code, puis le code devient plus sûr avec le temps
- La densité de vulnérabilités dans un code âgé de 5 ans est de 3,4 à 7,4 fois plus faible que dans un nouveau code
Cas concret sur Android
- Depuis 2019, l’équipe Android a commencé à faire évoluer les nouveaux développements vers des langages sûrs en mémoire
- En 2024, la part des vulnérabilités de sûreté mémoire est passée de 76 % à 24 %
- À mesure que les vulnérabilités de sûreté mémoire diminuent, le risque de sécurité global baisse également
Évolution de la stratégie de sûreté mémoire
- 1re génération : correctifs réactifs — découvrir les vulnérabilités et les corriger
- 2e génération : atténuation proactive — rendre l’exploitation des vulnérabilités plus difficile
- 3e génération : détection proactive des vulnérabilités — les identifier à l’avance
- 4e génération : prévention à haute confiance — prévenir l’apparition même des vulnérabilités en migrant vers des langages sûrs en mémoire
Les avantages de la prévention à haute confiance
- Met fin à la compétition sans fin entre défenseurs et attaquants
- Renforce la sécurité tout en réduisant les coûts grâce aux langages sûrs en mémoire
- Améliore la justesse du code et la productivité des développeurs
Des enseignements à la pratique
- Il n’est pas nécessaire d’abandonner ou de réécrire tout le code existant non sûr en mémoire
- L’amélioration de l’interopérabilité accélère la transition vers des langages sûrs en mémoire
- Développement d’outils pour améliorer l’interopérabilité entre Rust et C++, ainsi qu’entre Rust et Kotlin
Le rôle des générations précédentes
- Utilisation sélective de l’atténuation proactive et de la détection
- À mesure que la transition vers du code sûr en mémoire progresse, le besoin d’atténuation et de détection diminue
Conclusion
- L’utilisation de langages sûrs en mémoire pour le nouveau code entraîne une baisse exponentielle des vulnérabilités
- Plus de 6 ans de résultats cohérents sur Android prouvent l’efficacité de cette approche
Le résumé de GN⁺
- Il est important de migrer vers des langages sûrs en mémoire pour réduire les vulnérabilités de sûreté mémoire
- Le cas de l’équipe Android montre une forte diminution des vulnérabilités de sûreté mémoire
- Améliorer l’interopérabilité est plus pragmatique qu’une réécriture complète du code existant
- Utiliser des langages sûrs en mémoire comme Rust peut améliorer à la fois la sécurité et la productivité
1 commentaires
Commentaires sur Hacker News