Déjà taclés par la NSA, les langages C et C++ n’ont plus la cotes auprès des plus hautes instances américaines. En effet, la Maison-Blanche souhaite que les développeurs se servent de langages sécurisés pour la mémoire. Dans un rapport publié lundi, l'Office of the National Cyber Director (ONCD) de la Maison-Blanche invite les développeurs à réduire le risque de cyberattaques en utilisant des langages sans risque de vulnérabilités pour la mémoire. Les entreprises IT « peuvent empêcher l’introduction de multiples vulnérabilités dans l'écosystème numérique en adoptant des langages sécurisés », a déclaré la présidence dans un communiqué. Elle fait référence à ceux qui sont protégés contre les débordements de mémoire tampon, les lectures hors-limites (out-of-bounds reads ) et les fuites de mémoire.
Rust cité en exemple
Des études récentes de Microsoft et de Google ont montré qu'environ 70 % de toutes les failles de sécurité sont dues à des problèmes de sécurité de la mémoire. « En tant que nation, nous avons la capacité et la responsabilité de réduire la surface d'attaque dans le cyberespace et d'empêcher des catégories entières de bogues de sécurité d'entrer dans l'écosystème numérique, mais pour cela, nous devons nous attaquer au difficile problème de l’adoption de langages de programmation sans risque pour la mémoire », a déclaré Harry Coker, le directeur de l'Office of the National Cyber Director. Dans un billet de blog publié en septembre, la CISA (Cybersecurity and Infrastructure Security Agency), a donné le même conseil aux développeurs.
Dans son rapport de 19 pages, l'ONCD cite le C et le C++ comme deux exemples de langages présentant des vulnérabilités en matière de sécurité de la mémoire, et qualifie Rust comme sûr. Par ailleurs, une fiche d'information de la NSA sur la cybersécurité datant de novembre 2022 mentionne, en plus de Rust, les langages C#, Go, Java, Ruby et Swift, comme sécurisés. Selon Statista, en 2023, environ 22 % de tous les développeurs utilisaient le C++ et 19 % le C, ce qui les rend moins populaires que JavaScript, Python, Java et quelques autres. Cependant, l'indice Tiobe classe Python comme le plus populaire, suivi de C, C++ et Java.
Transfert de responsabilité
L'un des objectifs du rapport de l’ONCD est de transférer la responsabilité de la cybersécurité des particuliers et des petites entreprises vers les grands groupes, les entreprises IT et le gouvernement américain, qui sont « plus à même de gérer une menace en constante évolution », selon le communiqué de presse de la Maison-Blanche. L'ONCD a travaillé avec le secteur privé, y compris les sociétés IT, la communauté universitaire et d'autres organisations, pour élaborer ses recommandations.
L’organisme a lancé un appel à contribution publique sur le sujet en août. Il a également recueilli les commentaires de plusieurs firmes, dont Hewlett Packard Enterprise, Accenture et Palantir, qui soutiennent l'initiative. D'autres experts en sécurité des logiciels ont aussi fait l'éloge du rapport. Selon Dan Grossman, professeur en informatique fondamentale à l'université de Washington, le rapport de l'ONCD est utile et arrive à point nommé. Même si les « dangers du C et du C++ sont connus depuis des décennies », c'est le bon moment pour la Maison-Blanche de faire pression en faveur de la sécurité de la mémoire, « car des alternatives pratiques et matures sont désormais disponibles », a-t-il déclaré.
Un changement qui prendra du temps
Ces changements s’imposent aussi du fait de « la sophistication des menaces des adversaires qui exploitent les violations de la sécurité de la mémoire », a ajouté le professeur. « Des discussions sur la sécurité de la mémoire impliquant le gouvernement, l'industrie et les universitaires peuvent conduire à des changements significatifs », a-t-il estimé. « Naturellement, beaucoup de directions du gouvernement fédéral sont des créateurs et des vendeurs clés de logiciels et ils peuvent utiliser cette perspective pour décider de leur priorité pour les changements à venir dans les systèmes ou les nouveaux systèmes. Cependant, l'abandon du C et du C++ ne se fera pas du jour au lendemain, en particulier dans les systèmes embarqués », a reconnu Dan Grossman. « Mais l'utilisation d'autres langages pour les logiciels de systèmes, notamment Rust, a déjà augmenté de manière significative, et beaucoup prévoient une accélération de cette évolution plutôt qu'un arrêt pur et simple du développement du C et du C++, ce qui semble encore inimaginable dans son intégralité ».
L'abandon du C et du C++ sera « long et difficile », a aussi estimé Josh Aas, directeur exécutif et cofondateur de l’Internet Security Research Group. « Il faut un effort soutenu pour amener les gens à penser autrement, et des communications comme celle-ci contribuent à rappeler l’importance de la sécurité. Pour que le changement se produise, le gouvernement et le secteur privé doivent travailler ensemble pour faire du code sécurisé une priorité », a ajouté le dirigeant. « Il est clair que nous devons écrire et déployer de nouveaux codes, mais pour y parvenir, nous avons besoin de ressources et que des dirigeants à tous les niveaux, du gouvernement au secteur privé, en fassent une priorité », a-t-il insisté. « Les dirigeants concernés doivent être sensibilisés à ce problème et savoir qu'ils seront soutenus s'ils cherchent à le résoudre ».
Une étude de Google et Microsoft… désintéressée forcément l’étude.
Signaler un abusPersonne ne parle d'ADA, justement créé suivant un cahier des charges du DOD pour être sécurisé...
Signaler un abusQuestion, tous les langages dont on parle, ne sont pas tous issus du c++ et donc du c ? Je veux dire, pour java par exemple, toutes les bibliothèques natives ont été d'abord étaient écrites en c++, elles mêmes issues du c et lui même issu de l'assembleur... Bref, on veut se débarrasser de la sources, mais quand on devra modifier le coeur, qui saura encore faire si on n'utilise plus ces langages ?
Signaler un abusJ'attends avec impatience de voir un firmware écrit en rust ou en java XD
Signaler un abusOn ne choisi pas un langage comme ca !
Signaler un abusEt c est une science exacte : on ne se base pas sur des stats pour dire c est la faute a un langage!
Toute les librairies dessous rust java etc… sont en c/cpp/asm et y a une raison … on veux justement la gestion de la ram .. sinon ca ne marche pas ! C est pas magique! Ces gens sont aussi expert que ma mere !
Entrainer une IA pour qu'elle trouve ces bugs...
Signaler un abusFranchement, je suis 🤣. C'est pourtant pas compliqué de gérer la mémoire, il y a des fonctions telles que malloc, calloc, realloc et surtout free. A moins que les informaticiens soient devenu teubés. A l'époque, il n'y avait que l'Assembler et on savait ce qu'était un pointeur. On peut pas dire que les politiques s'améliorent ...
Signaler un abusIl serait temps. Le C a été inventé par deux frustré qui s'était fait virer de Multix, qui ont récupéré un Dec et écrit un truc infâme Unix. Sur Unix, il aura fallut attendre Hat pour avoir un système correct. Bref plus de 50 ans d'histoire. A noter que la DOD est à l'origine de beaucoup de langages.
Signaler un abus