Rust de Mozilla Research est le type de langage de programmation auquel ceux qui écrivent du code pour des systèmes d’entrée/sortie de base (BIOS), des chargeurs d’amorce, des systèmes d’exploitation, etc. portent un intérêt. De façon graduelle, Microsoft migre vers ce dernier au détriment de la paire C/C++ que l’entreprise ne juge plus acceptable pour la mise sur pied d’applications dites système. Motif : Rust offre de meilleures garanties en matière de sécurisation des logiciels que le couple C/C++.
C’est un avis formulé il y a peu par Ryan Levick, développeur qui travaille sur l’infrastructure cloud du géant technologique (Microsoft), lors de la conférence virtuelle AllThingsOpen.
Le noyau Linux par exemple est le produit de développements en langages C et assembleur. Dans la filière de la mise au point de drivers pour le système d’exploitation open source, c’est encore ce tandem qui règne en maître. Les développeurs engagés sur cet axe le plébiscitent pour les énormes possibilités qu’il offre en matière de manipulation des ressources matérielles d’un système informatique. Dans le jargon du milieu, on parle de « proximité avec le hardware. »
Seulement, de plus en plus de voix s’élèvent pour appeler au passage au langage Rust – l’un de ceux pressentis comme remplaçant du C sur le terrain du contrôle du matériel. Il y a seulement que les rapports de chercheurs en sécurité s’enchaînent et ne cessent de mettre le doigt sur l’une des plus grosses tares que les langages C et C++ traînent : les problèmes liés à la gestion de la mémoire – dépassements de mémoire tampon, allocations non libérées, accès à des zones mémoire invalides ou libérées, etc. Les chiffres du dictionnaire Common Vulnerabilities and Exposure (CVE) abondent dans le même sens : 15,9 % des 2288 vulnérabilités qui ont affecté le noyau Linux en 20 ans sont liées à des dépassements de mémoire tampon.
Ryan Levick revient sur ces détails dans le cadre de sa présentation et coupe court : « Quels que soient les investissements que les entreprises de la filière du développement de logiciels peuvent mettre sur pied, le fait est que C++ [C] n’est pas par essence un langage fait pour la mise sur pied d’applications sécurisées. » L’an dernier, Alex Gaynor – un ex contributeur de l’équipe sécurité du navigateur Firefox – émettait un avis similaire : « Le C++ moderne ne nous sauvera pas, car il est moins sécurisé que les nouveaux langages [Rust, Swift]). »
L’une des approches envisageables est de multiplier les formations des programmeurs à l’écriture d’applications sécurisées en langage C/C++. Une autre est de faire recours à l’analyse statique. Enfin, la piste des vérifications lors de l’exécution reste valable. Mais l’ingénieur de Microsoft est d’avis qu’aucune de ces solutions n’apporte une solution entière à l’absence d’orientation du langage C++ vers la sécurité dans sa conception. C’est pour cet ensemble de raisons que ce dernier estime que le langage Rust est la meilleure chance offerte à l’industrie informatique pour la mise sur pied d’applications sécurisées.
Les initiatives allant dans le sens de faire un usage plus extensif du langage se multiplient donc chez la firme de Redmond. L’une des plus récentes et remarquées est Rust/WinRT – une projection du langage Rust pour les API Windows Runtime. De façon ramassée, l’annonce signifie que les développeurs peuvent créer des composants pour Windows en utilisant Rust. En parallèle, Microsoft pilote l’effort « Safe Systems Programming Languages » au travers duquel l’entreprise apporte plus d’éclaircissements sur son intérêt pour des langages de programmation comme Rust.
Sur cinq années consécutives, Rsut a obtenu la reconnaissance de « plus aimé » des développeurs habitués de la plateforme de questions-réponses sur des sujets liés à l’informatique – StackOverflow. Toutefois, ce dernier reste très utilisé dans le cadre de projets personnels. Les entreprises ne s’en servent pas. En toile de fond, on a un lot de raisons techniques susceptibles de justifier le positionnement des entreprises qui ne s’appuient pas sur Rust pour leurs projets : manque de bibliothèques, absence de prise en charge de plus d’ environnements de développement intégré, manque de documentation, etc. En effet, le manque de bibliothèques est l’une des raisons que certains développeurs soulignent comme un frein à la productivité.
Après, Rust a désormais l’un des plus grands de l’histoire de l’informatique pour le pousser. Ce sont des ressources supplémentaires qui peuvent être allouées à l'amélioration et au développement du langage lui-même : du temps d'ingénierie, probablement des propositions et pistes d'amélioration. En sus, l’appui de Microsoft apparaît comme une étiquette qualité pour le langage de programmation. Cela devrait permettre de rehausser son niveau d’adoption en entreprise.
Et vous ?
Êtes-vous en accord avec les griefs portés à l'endroit de C/C++ en matière de sécurité ? Le problème n'est-il pas plutôt celui de la qualité des développeurs ?
Voyez-vous aussi la présence de Microsoft derrière ce langage comme une force ?
Votre entreprise a-t-elle adopté le langage Rust ? Si oui, sur des projets de quelle taille ?
Quels sont les ingrédients susceptibles de conduire à une adoption plus importante de Rust, mais qui lui font encore défaut de votre point de vue ?
Voir aussi :
L'équipe Microsoft Security Response Center recommande l'utilisation de Rust comme approche proactive pour un code plus sécurisé
Quel langage pourrait remplacer C ? Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D
C2Rust : un outil qui permet de faire la traduction et la refactorisation de votre code écrit en langage C vers le langage Rust
Le langage Rust est la meilleure chance offerte à l'industrie informatique pour la mise sur pied d'applications système sécurisées
D'après Microsoft
Le langage Rust est la meilleure chance offerte à l'industrie informatique pour la mise sur pied d'applications système sécurisées
D'après Microsoft
Le , par Patrick Ruiz
Une erreur dans cette actualité ? Signalez-nous-la !