La Maison Blanche invite à préférer Rust à C++
jeu, 29/02/2024 - 15:39
Il y a un an, la NSA avait déjà déjà publié un document recommandant l'usage de langages de programmation qu'elle considère comme sûrs au niveau de la gestion de la mémoire, comme C#, Go, Java, Ruby, Rust, and Swift, au détriment de C et de C++. Cette semaine, la Maison Blanche a publié un communiqué indiquant que le directeur de son bureau national du cyberespace a produit un rapport appelant la communauté technique à réduire de manière proactive la surface d'attaque dans le cyberespace. Ce document est intitulé 'Back to the Building Blocks: A Path Toward Secure and Measurable Software.' Il rappelle que la sécurité informatique est considérée comme un problème de sécurité nationale par l'administration Biden-Harris.
Ce document s'intéresse à la sécurité logicielle y compris dans l'espace. Le document encourage les programmeurs à utiliser les 'douzaines de langages' sûrs en ce qui concerne la gestion de la mémoire, et plus particulièrement recommande, lorsque les performances sont en jeu, d'éviter C et C++, au profit de Rust. Même si des tests reste à faire avec Rust avant de l'utiliser dans les technologies spatiales. On peut lire de ce document de 19 pages :
"Les programmeurs qui écrivent des lignes de code ne le font pas sans conséquence ; la façon dont ils font leur travail est d’une importance cruciale pour l’intérêt national. Ce passage de la réaction à la préparation stratégique souligne l'énorme influence que la communauté technique peut avoir sur la sécurité d'un écosystème digital partagé. Ce rapport articule une double approche : premièrement, afin de réduire les vulnérabilités mémoire à grande échelle, les créateurs de logiciels et de matériel peuvent sécuriser les éléments constitutifs du cyberespace. Ce rapport se concentre sur le langage de programmation en tant qu'élément de base principal, et explore l'architecture matérielle et les méthodes formelles comme approches complémentaires […] Les vulnérabilités de sécurité dues à la gestion de la mémoire sont une classe de vulnérabilité affectant la façon dont la mémoire est accessible, écrite, allouée ou désallouée de manière involontaire. Les experts ont identifié quelques langages de programmation qui manquent de traits associés à la sécurité de la mémoire et qui ont également une forte prolifération sur des systèmes critiques, tels que C et C++. Choisir d'utiliser des langages de programmation à gestion de mémoire sécurisée dès le départ, comme le recommande la Cybersecurity and Infrastructure Security Agency (CISA) est une bonne pratique de développement de logiciels sécurisés dès la conception. […] L'écosystème spatial n'est pas à l'abri des vulnérabilités en matière de sécurité de la mémoire, mais il existe plusieurs contraintes des systèmes spatiaux en ce qui concerne l’utilisation du langage. Premièrement, le langage doit permettre au code d'être proche du noyau afin qu'il puisse interagir étroitement avec les logiciels et le matériel. Deuxièmement, le langage doit prendre en charge le déterminisme afin que le timing des sorties soit cohérent, et troisièmement, le langage ne doit pas avoir – ni pouvoir supplanter – le « garbage collector », une fonction qui récupère automatiquement la mémoire allouée par le programme informatique qui n'est plus utilisée. Ces exigences contribuent à garantir les résultats fiables et prévisibles nécessaires aux systèmes spatiaux. Selon les experts, les langages de programmation avec une gestion de la mémoire sûre ou non répondent à ces critères. À l’heure actuelle, les langages les plus utilisés répondant aux trois propriétés sont C et C++, qui ne sont pas des langages de programmation à gestion de mémoire sécurisée. Rust, un exemple de de langage à gestion de mémoire sécurisée, possède les trois propriétés requises ci-dessus, mais n'a pas encore été prouvé dans systèmes spatiaux. Des progrès sur les chaînes d'outils de développement, la formation de la main-d'œuvre et des cas d'étude sur le terrain sont nécessaires pour démontrer la viabilité des langages sécurisés en mémoire dans ces cas d’utilisation. […]"
Le rapport complet de la Maison Blanche peut être lu ici.
L'année dernière Bjarne Stroustrup, le créateur du langage C++, avait écrit un document pour répondre à celui de la NSA. Il est probable qu'il ne fera pas le même travail cette fois, car d'une certaine façon ce travail est déjà fait.
Bjarne Stroustrup nous a en effet signalé l'existence de 4 documents en cours d'élaboration, en ajoutant que d'autres viendront les compléter. Ces documents, à l'origine destinés au comité de standardisation de C++, peuvent intéresser tout programmeur qui a une bonne compréhension de C++. Ces documents ont été écrits par Bjarne Stroustrup lui-même ou en collaboration avec d'autes gourous du C++, dont, notamment, Gabriel Dos Reis, ingénieur chez Microsoft, connu pour être un des développeurs principaux du compilateur C++ de GCC.
Ces documents sont :
- B. Stroustrup, G. Dos Reis: Safety Profiles: Type-and-resource Safe programming in ISO Standard C++. P2816R0. 2023-02-16.
- H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, M. Wong: DG opinion on safety for ISO C++. P2759R0. 2023-01-15.
- Bjarne Stroustrup: A call to action: Think seriously about "safety"; then do something sensible about it. P2739R0. 2022-12-6.
- B. Stroustrup and G. Dos Reis: Design Alternatives for Type-and-Resource Safe C++. P2687R0. 2022-10-15.
Bjarne Stroustrup suggèrent également cette vidéo à ceux que cette question intéresse :