Consumer Reports publie un rapport détaillé encourageant l'adoption généralisée de langages sûrs pour la mémoire tels que Rust
et sensibilise sur les risques liés à la sécurité de la mémoire

Consumer Reports, une organisation à but non lucratif spécialisée dans les tests de produit, a publié un rapport sur la sécurité de la mémoire qui plaide pour que les entreprises abandonnent des langages tels que C et C++ au profit de langages de programmation sûrs pour la mémoire tels que Rust. Le rapport avance que la sécurité de la mémoire a toujours été une source persistante de défauts dans l'industrie du logiciel, mais que de nouveaux langages permettent désormais de se mettre à l'abri de ces bogues dès la phase de conception. Consumer Reports met une fois encore le langage Rust en avant après le plaidoyer de la NSA en novembre.

La sécurité de la mémoire est devenue un sujet de premier plan au cours de ces dernières années, les experts estimant que les erreurs de sécurité de la mémoire sont à l'origine de 65 % de tous les bogues. La sécurité de la mémoire fait référence au fait que les langages empêchent certains types d'erreurs liées à la mémoire, telles que les débordements de mémoire tampon, les références de pointeur null et les erreurs d'utilisation après libération de la mémoire, qui peuvent entraîner des pannes, la corruption de données et des failles de sécurité. Au moins deux grandes agences américaines de cybersécurité ont mis en garde récemment contre ses risques.

Voici le problème fondamental : la mémoire doit être allouée pour que le code informatique puisse exécuter des instructions, et certains anciens langages, comme les langages C et C++ vieux de plusieurs décennies, permettent aux développeurs de déplacer cette mémoire manuellement. Cependant, cette liberté crée également un risque, en permettant une variété de bogues. Ces problèmes, appelés erreurs de sécurité de la mémoire, peuvent résulter de simples fautes de frappe et de lignes de code oubliées ou de structures de mémoire complexes et d'interactions imprévues. Ces différents risques ont été pris en compte dans les langages plus récents.



Selon des experts en technologie et des défenseurs des consommateurs, les entreprises devraient utiliser des langages ayant une gestion sécurisée de la mémoire afin de ne pas s'exposer à ces vulnérabilités. Par exemple, Andrew Cornwall, analyste pour le cabinet de recherche et d'étude de marché Forrester Research, a déclaré que dans le cas d'une attaque par débordement de mémoire tampon, un attaquant pourrait, en insérant astucieusement de mauvaises données, prendre le contrôle d'un programme et le réécrire à la volée pour réaliser des actions néfastes. Il estime qu'il s'agit d'une source de vulnérabilités que l'on devrait prendre très au sérieux.

Les langages de programmation plus récents - comme Python, Java et Rust - allouent la mémoire automatiquement. Beaucoup d'entre eux éliminent pratiquement les erreurs de sécurité de la mémoire ou sont conçus pour les rendre impossibles. C'est la raison pour laquelle les experts en cybersécurité demandent aux programmeurs de passer aux langages de programmation plus récents et sûrs pour la mémoire. Les participants à la récente conférence Usenix Enigma 2023, dont des représentants de Consumer Reports et de l'Internet Security Research Group (ISRG), ont approfondi le sujet de la réduction des vulnérabilités liées à la sécurité de la mémoire.

Le rapport de l'événement encourage l'adoption généralisée de langages sûrs pour la mémoire et met en garde contre les risques liés à la sécurité de la mémoire. Josh Aas, cofondateur et directeur exécutif de l'ISRG, a déclaré que les conséquences peuvent être graves telles que des pertes financières et des vols d'identité. « C'est un problème énorme. Lorsque les systèmes hospitaliers ou les services publics sont fermés, et que les gens doivent attendre pour obtenir des soins ou des services, que ce soit à cause d'attaques de logiciels malveillants ou quelque chose comme ça, la sécurité de la mémoire en est souvent la raison », a-t-il déclaré.

Les partisans des langages sûrs pour la mémoire privilégient le l langage Rust. En effet, la plupart des logiciels de base de l'industrie technologique sont écrits en C ou C++. Selon Aas, jusqu'au développement de Rust, il n'existait pas d'alternative viable au C/C++. « Nous en sommes maintenant à à un point où nous avons au moins une bonne option, Rust, où nous pouvons obtenir la sécurité sans sacrifier les performances », a déclaré Aas. Outre Rust et Swift, les langages à mémoire sécurisée comprennent Go, Python et JavaScript. Mais Aas a déclaré que Rust est particulièrement adapté au noyau Linux en raison de ses performances et de sa sécurité.

« Il n'y a pas d'autre langage sûr pour la mémoire qui puisse offrir au noyau Linux de bonnes performances et les fonctionnalités modernes dont il a besoin. La première étape vers la sécurité de la mémoire consiste à écrire de nouveaux modules et programmes dans des langages plus sûrs pour la mémoire. Les développeurs devraient commencer par les modules les plus critiques en matière de sécurité. Si vous disposez de données sur les vulnérabilités en matière de sécurité de la mémoire, vous pouvez commencer par consulter les données sur les vulnérabilités passées et voir où ces choses se sont produites », conseille Aas aux développeurs.

« Les développeurs qui ne disposent pas de ce type de données peuvent examiner les composants situés à l'intérieur des limites du réseau, comme ceux qui envoient ou reçoivent des données sur le réseau. C'est là que se trouvent les vulnérabilités les plus graves. Mais les développeurs peuvent également s'intéresser aux logiciels qui chevauchent ou gèrent une frontière de privilèges avec authentification. En résumé, le C et le C++ ne sont pas des langages sûrs, et les développeurs doivent s'en éloigner », a-t-il ajouté. Le langage C, qui est à la base du noyau Linux, présente depuis longtemps des vulnérabilités en matière de sécurité de la mémoire.



En outre, Aas a déclaré : « ils [le C et le C++] seront encore là pendant longtemps, car il n'y a pas un futur dans lequel nous nous débarrasserons de tout ce code de sitôt. Mais nous devons commencer le processus d'élimination ». Les plaidoyers pour l'adoption de Rust se multiplient. Le projet de loi de crédits du Congrès américain du mois dernier comprenait une disposition exigeant du directeur national de la cybernétique qu'il enquête sur la sécurité de la mémoire au sein du gouvernement. Le même mois, Google a lancé Android 13, la première version d'Android où la majorité du nouveau code est dans un langage sûr la mémoire, notamment Rust.

De plus, le noyau Linux 6.1, qui inclut le support initial de Rust, est devenu disponible pour une utilisation générale. Entre-temps, en novembre 2022, la National Security Agency (NSA) des États-Unis a recommandé aux développeurs de s'éloigner stratégiquement des langages C et C++. Enfin, selon les données fournies par Consumer Reports dans le rapport, environ 60 à 70 % des vulnérabilités des navigateurs et des noyaux - ainsi que des bogues de sécurité trouvés dans les bases de code C/C++ - sont dus à un manque de sécurité de la mémoire, dont beaucoup peuvent être résolus par l'utilisation de langages à sécurité mémoire.

« Les développeurs qui utilisent des langages non sécurisés en mémoire peuvent tenter d'éviter tous les pièges de ces langages, mais c'est une bataille perdue d'avance, car l'expérience a montré que l'expertise individuelle ne peut rien contre un problème systémique. Même lorsque les organisations consacrent des efforts et des ressources considérables à la détection, à la correction et à l'atténuation de cette catégorie de bogues, l'utilisation non sécurisée de la mémoire continue de représenter la majorité des vulnérabilités de sécurité et des problèmes de stabilité de haute gravité », indique Consumer Reports.

Consumer Reports ajoute : « il est important de travailler non seulement à l'amélioration de la détection des bogues de mémoire, mais aussi d'intensifier les efforts pour les prévenir dès le départ ». Par ailleurs, il est important de noter que face aux multiples rapports qui critiquent les problèmes de sécurité de la mémoire des langages C et C++, Bjarne Stroustrup, le créateur du C++, a déclaré que "la sécurisation des logiciels via le langage Rust n'est pas supérieure à celle offerte par le C++". La réponse de Stroustrup fait suite aux récents propos de la NSA sur le sujet et à ses arguments pour passer aux langages plus sûrs pour la mémoire.

« Il n'y a pas qu'une seule définition de la notion de sécurité et nous pouvons réaliser une variété de types de sécurité par une combinaison de styles de programmation, de bibliothèques de support et grâce à la mise à profit de l'analyse statique », a déclaré Stroustrup. Il suggère ainsi que ce qu’il est possible d’obtenir du C++ en matière de sécurisation des logiciels dépend entre autres du développeur et notamment de la connaissance des outils que lui offre le langage, de sa maîtrise du compilateur, etc. Bien que beaucoup pensent que Rust acte la mise au rebut du C/C++, il est clair que ces derniers seront encore là pour longtemps.

Source : Consumer Reports (PDF)

Et vous ?

Quel est votre avis sur le sujet ?

Voir aussi

« La sécurisation des logiciels via le langage Rust n'est pas supérieure à celle offerte par le C++ », d'après Bjarne Stroustrup, contre une sortie de la NSA qui exclut le C++ des langages sécurisés

La NSA exhorte les organisations à passer à des langages de programmation sécurisés dans la gestion de la mémoire pour éliminer un vecteur d'attaque souvent exploité par les cybercriminels

Linus Torvalds annonce la disponibilité de Linux 6.1 : après 31 ans, un deuxième langage est admis pour le développement du noyau, c'est le Rust, considéré comme candidat à la mise au rebut du C

Google fait état d'une baisse des vulnérabilités liées à la sécurité de la mémoire sur Android à mesure que l'utilisation de Rust augmente, elles seraient passées de 223 en 2019 à 85 en 2022