Memory Safety : une interview sur Rust et l’avenir du développement logiciel sécurisé, partie 2
La première partie a examiné la problématique des vulnérabilités liées à la sécurité de la mémoire et les solutions possibles. Le langage de programmation Rust est considéré comme une voie prometteuse vers des logiciels plus sûrs. Dans cette interview, l’expert en sécurité matérielle Pascal Mainini (BFH TI) explique pourquoi Rust mérite d’être considéré, où se situent les plus grands obstacles pour les entreprises et dans quels domaines le langage gagne déjà en importance aujourd’hui.
[Herren] : Vous enseignez le module Introduction to Rust and Embedded Systems et vous vous occupez intensivement de Rust. Comment êtes-vous entré en contact avec ce langage pour la première fois, et qu’est-ce qui a spécifiquement suscité votre intérêt pour Rust ?
[Mainini] : J’avais déjà entendu parler de ce langage de programmation, mais je n’avais pas encore d’expérience personnelle. Lors d’une conférence de département, le responsable de l’informatique de l’époque a demandé si quelqu’un connaissait un système d’exploitation appelé « Tock » ; celui-ci est écrit en Rust et possède d’autres propriétés intéressantes. J’ai alors fait preuve d’un peu de courage et je me suis porté volontaire – même si je ne le connaissais pas. C’est ainsi que j’ai commencé ce module à option, que j’enseigne maintenant pour la sixième fois.
[Herren] : Pourquoi quelqu’un devrait-il opter pour Rust de votre point de vue ? Pourquoi ne pas, par exemple, rester avec le langage établi C++, qui se concentre également de plus en plus sur la sécurité de la mémoire ?
[Mainini] : La question est justifiée. Comparé à l’époque où j’ai commencé avec Rust, il y a effectivement eu un changement de mentalité avec d’autres langages également. C’est aussi un peu une question de philosophie : je peux également écrire des programmes sûrs en mémoire en C, par exemple, mais la prudence nécessaire et l’effort sont simplement beaucoup plus importants. Ne vaudrait-il pas mieux choisir directement un langage qui a déjà intégré fondamentalement les principes correspondants ?
D’un autre côté, je peux également écrire des programmes non sûrs en mémoire avec Rust, mais le langage m’oblige à marquer explicitement les parties dangereuses. De mon point de vue, c’est un grand avantage et c’est mieux que l’approche inverse. Il existe également depuis quelque temps des compilateurs certifiés, qui permettent par exemple d’utiliser le langage dans des domaines critiques pour la sécurité, tels que les composants automobile.
[Herren] : Comment voyez-vous l’avenir de Rust ? Les entreprises vont-elles de plus en plus passer à Rust ?
[Mainini] : Comme toujours, il y a les early adopters, mais aussi ceux qui sont déjà pleinement engagés. Entre les deux, il y a un grand nombre qui observe et développe peut-être une seule application en Rust pour tester. Lors des conférences, on voit cependant aussi de grands noms qui misent pleinement sur Rust, et il y a maintenant pas mal d’offres dans le secteur du conseil aussi. Je pense que le sujet est définitivement arrivé dans l’industrie.
[Herren] : Dans quelles branches ou domaines Rust va-t-il gagner en importance ?
[Mainini] : Rust est fondamentalement un langage universellement applicable, mais il y a des domaines où l’adoption est déjà plus avancée. D’une part, bien sûr, la programmation proche du matériel, mais aussi, par exemple, le secteur du cloud. Comme Rust est un langage très efficace, il contribue également à l’efficacité énergétique lorsque des applications s’exécutent sur des milliers de serveurs. Finalement, Rust est également le seul langage qui peut désormais être utilisé à côté de C pour développer des pilotes pour le noyau Linux.
[Herren] : Quels sont les plus grands obstacles pour les entreprises qui souhaitent miser davantage sur Rust ?
[Mainini] : Je prends certainement en compte la situation du personnel : on peut trouver sur le marché des programmeurs et des programmeuses expérimenté·es en C++ depuis 20 ans– ce n’est pas encore le cas pour Rust. Il faut également considérer les coûts potentiels qui apparaissent chaque fois que des processus établis doivent être ajustés. Enfin, il existe une certaine incertitude concernant le développement futur de Rust, même si, à mon avis, celle-ci tend à diminuer.
[Herren] : Pensez-vous que si Rust gagne en importance à l’avenir, les vulnérabilités de sécurité liées à la sécurité de la mémoire diminueront ?
[Mainini] : Absolument. C’est l’objectif de l’industrie, mais aussi de la politique. Des déclarations en ce sens ont même été faites jusqu’au niveau de la Maison Blanche. Il ne s’agit pas principalement de Rust, mais de la sécurité de la mémoire – je partage cet objectif !
[Herren] : Y a-t-il des développements où vous êtes curieux de voir comment Rust évoluera à l’avenir ?
[Mainini] : Oui, d’une part, il y a les développements dans le noyau Linux –beaucoup de discussions controversées, même si le sujet est désormais bien établi. Je suis également curieux du secteur embarqué : les choses évoluent généralement un peu plus lentement ici. Il s’agit d’entreprises présentes sur le marché depuis longtemps, avec des processus et des systèmes établis.
[Herren] : Que conseilleriez-vous maintenant aux futurs développeurs ? Vaut-il la peine d’examiner Rust de plus près ?
[Mainini] : Il vaut définitivement la peine d’examiner Rust de plus près. Même si l’on ne finit pas par programmer en Rust, cela sensibilise énormément. Je pense généralement que c’est une bonne idée d’étudier différents langages, et Rust est un langage avec des concepts intéressants.
Qu’est-ce que la Memory Safety ?
La sécurité de la mémoire (memory safety) désigne la manière dont un logiciel gère de manière sûre et correctel’utilisation l’allocation et la libération de la mémoire vive (RAM). Celle-ci stocke à la fois le code du programme (les instructions exécutées par l’ordinateur) et les données (telles que les données utilisateur ou les résultats de calculs). Des accès incorrects à la mémoire peuvent être exploités par des attaquants pour exécuter du code malveillant ou pour lire des données confidentielles, par exemple. Malgré des années de recherche, les problèmes liés à la sécurité de la mémoire reste l’une des principales causes de vulnérabilités dans les logiciels modernes.
Où rencontre-t-on des vulnérabilités de sécurité de la mémoire dans la pratique ?
Une analyse des données de la National Vulnerability Database (NVD) montre qu’environ 15 à 20 % des vulnérabilités publiées dans l’ensemble du paysage informatique sont régulièrement liées à la sécurité de la mémoire. De telles vulnérabilités apparaissent également dans des systèmes courants de types divers.
Quelles sont les approches permettent d’améliorer la sécurité de la mémoire ?
Pour éviter les vulnérabilités liées à la sécurité de la mémoire, il est recommandé d’écrire autant que possible le code dans des langages memory safe. Des langages comme Python, Java et C# y parviennent grâce à une gestion automatique de la mémoire (par exemple avec un garbage collector). Rust, en revanche, repose sur des règles strictes de gestion de la mémoire qui garantissent la sécurité de la mémoire dès la phase de développement, sans récourir à un garbage collector supplémentaire.
Intéressé·e ?
Pour en savoir plus sur la sécurité de la mémoire, lisez l’article complet ici.
Create PDF


Contributions en tant que RSS
Laisser un commentaire
Rejoindre la discussion?N’hésitez pas à contribuer !