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 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�