Le développement du système UNIX a débuté en 1969 et son code a fait l’objet de réécriture en langage C en 1972. Ça fait donc des années que ce langage fait ses preuves : c’est un niveau de performances proche de celui de l’assembleur, ce, tout offrant flexibilité et productivité. Pourtant, de plus en plus de gros acteurs de la filière technologique lui préfèrent le Rust. Motif : le langage de Mozilla offrirait en plus de meilleurs gages pour la sécurisation des logiciels. Qu’est-ce qu’il en est ?
Le tableau langage C délaissé pour le Rust en raison de ses gages de sécurisation des logiciels prend un coup de neuf avec des développements en lien au projet Tor. L’équipe de projet envisage de remplacer sa base de code C par du Rust dans le cadre du projet Arti – une implémentation de l’ensemble des protocoles Tor en Rust.
Elle explique à cet effet que : « Tor est disponible pour être utilisé, bien établi et bien analysé aujourd'hui et fonctionne avec la plupart des protocoles qui s’appuient sur TCP. Les performances et l'évolutivité de notre réseau se sont améliorées au fil du temps et nous disposons d'un écosystème d'outils pour contourner les différents régimes de censure dans le monde. Mais l'implémentation actuelle de Tor porte les signes de son âge. Tor est implémenté en C comme proxy réseau autonome. (Cela avait du sens en 2002, lorsque les langages multiplateformes performants étaient moins courants sur le terrain). Parce que Tor est un proxy autonome, il est difficile pour les tiers de l'intégrer : nous avons un "mode bibliothèque", mais le mode bibliothèque fait juste tourner le proxy dans un ensemble séparé de threads. Et parce que Tor est écrit en C, il est difficile d'avoir la même confiance dans la sécurité de sa mémoire que ce qui serait possible avec un langage qui offre de meilleurs gages de sécurisation de la mémoire. En outre, parce que le C est peu sûr et sujet aux erreurs, notre développement nécessite plus de temps et d'énergie qu'il ne le devrait. »
À date, Arti est un simple proxy SOCKS. L’équipe de développement du projet travaille à établir une parité avec l’implémentation C en termes de fonctionnalités. L’objectif devrait être atteint dans deux ans avec trois développeurs à temps plein.
Le langage C est-il adapté à la mise sur pied d’applications sécurisées ?
Ces dernières années, des chercheurs en sécurité ne cessent de mettre le doigt sur ce qui serait l’une des plus grosses tares que le langage C traîne : 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. D’après les chiffres du dictionnaire Common Vulnerabilities and Exposure (CVE), 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. Ces chiffres prennent un coup de neuf avec un plus récent état des lieux des vulnérabilités de l’utilitaire ligne de commande Curl utile pour récupérer le contenu d'une ressource accessible par un réseau informatique. De récents décomptes font état de ce qu’un peu plus de la moitié des failles de sécurité de Curl sont la résultante d’erreurs de programmation en langage C. En fait, la part cumulée de toutes les vulnérabilités de sécurité dues aux erreurs C au fil du temps (ligne bleue) était sous la barre des 50 % en 2012 pour repasser au-dessus en 2018. Depuis lors, elle y est demeurée.
C’est la raison pour laquelle de plus en plus de grands acteurs de la filière technologique lui préfèrent le langage Rust de Mozilla. Dans le cadre d’une présentation de la conférence virtuelle AllThingsOpen à mi-parcours de l’année précédente, Ryan Levick – développeur qui travaille sur l’infrastructure cloud du géant technologique (Microsoft) – revient sur ces détails 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. » En 2019, 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. 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 des langages C et C++ vers la sécurité dans leur 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.
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, Rust 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.
Sources : forum zcash, zomg
Et vous ?
Le langage C est-il adapté à la mise sur pied d’applications sécurisées ?
Êtes-vous en accord avec les griefs portés à l'endroit du langage 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 projet Tor envisage de remplacer sa base de code C « complexe et fragile » par du Rust dans le cadre du projet Arti :
Le langage C est-il adapté à la création d'applications sécurisées ?
Le projet Tor envisage de remplacer sa base de code C « complexe et fragile » par du Rust dans le cadre du projet Arti :
Le langage C est-il adapté à la création d'applications sécurisées ?
Le , par Patrick Ruiz
Une erreur dans cette actualité ? Signalez-nous-la !