Depuis plus d’un demi-sicle, les ingnieurs en logiciel savent que des acteurs malveillants peuvent exploiter une catgorie de dfauts logiciels appels « vulnrabilits de scurit de la mmoire » pour compromettre des applications et des systmes. Au cours de cette priode, les experts ont maintes reprises mis en garde contre les problmes lis aux failles de scurit de la mmoire. Un code mmoire non scurise a mme entran une panne majeure de l’internet en 1988.
Quelle est l’ampleur du problme de l’inscurit de la mmoire ? Dans un billet de blog, Microsoft indique que « ~70 % des vulnrabilits auxquelles Microsoft attribue chaque anne un CVE [Common Vulnerability and Exposure] continuent d’tre des problmes de scurit de la mmoire« . De mme, Google indique que « le projet Chromium constate qu’environ 70 % de nos bogues de scurit graves sont des problmes de scurit de la mmoire« . Mozilla signale que dans une analyse des vulnrabilits de scurit, « sur les 34 bogues critiques/levs, 32 taient lis la mmoire« .
Ces vulnrabilits ne sont pas thoriques. Les attaquants les utilisent pour commettre des attaques contre des personnes relles. Par exemple, l’quipe Project Zero de Google a analys les vulnrabilits qui ont t utilises dans la nature par des attaquants avant d’tre signales aux fournisseurs de logiciels (galement appeles « zero-day vulnerabilities« ). Elle indique que « sur les 58 [vulnrabilits de ce type] de l’anne, 39, soit 67 %, taient des vulnrabilits lies la corruption de la mmoire« . Citizen Lab a dcouvert des logiciels espions utiliss contre des organisations de la socit civile qui exploitaient des failles dans la scurit de la mmoire.
Dans quel autre secteur le march tolrerait-il pendant des dcennies des dangers aussi graves et bien compris pour les utilisateurs des produits ?
Au fil des ans, les ingnieurs en logiciel ont invent de nombreuses solutions intelligentes, mais finalement insuffisantes, pour attnuer cette catgorie de vulnrabilit, notamment des outils tels que la randomisation de la mmoire et les techniques de sandboxing qui rduisent l’impact, et des outils d’analyse statique et dynamique du code qui rduisent l’occurrence. En plus de ces outils, les organisations ont consacr beaucoup de temps et d’argent la formation de leurs dveloppeurs pour qu’ils vitent les oprations de mmoire dangereuses. Il existe galement plusieurs efforts parallles visant amliorer la scurit de la mmoire du code C/C++ existant. Malgr ces efforts (et les cots associs en termes de complexit, de temps et d’argent), l’inscurit de la mmoire a t le type le plus courant de dfaut de scurit des logiciels pendant des dcennies.
Il existe cependant quelques domaines que tout diteur de logiciels devrait tudier. Tout d’abord, il existe des mesures prometteuses d’attnuation de la scurit de la mmoire au niveau du matriel. Le projet de recherche CHERI (Capability Hardware Enhanced RISC Instructions) utilise des processeurs modifis pour donner aux langages mmoire non scurise comme C et C++ une protection contre de nombreuses vulnrabilits largement exploites. Une autre technologie assiste par le matriel se prsente sous la forme d’extensions de marquage de la mmoire (MTE) disponibles dans certains systmes. Bien que certaines de ces mesures d’attnuation bases sur le matriel soient encore en train de passer de la recherche l’expdition de produits, de nombreux observateurs pensent qu’elles deviendront des lments importants d’une stratgie globale visant liminer les vulnrabilits lies la scurit de la mmoire.
Deuximement, les entreprises devraient se pencher sur les langages de programmation scurit mmoire. La plupart des langages de programmation modernes autres que C/C++ sont dj sans danger pour la mmoire. Ces langages grent la mmoire de l’ordinateur de manire ce que le programmeur ne puisse pas introduire de vulnrabilits en matire de scurit de la mmoire. Contrairement d’autres mesures d’attnuation disponibles qui ncessitent un entretien constant (sous la forme de dveloppement de nouvelles dfenses, d’analyse des vulnrabilits ou de travail humain) aucun travail ne doit tre effectu une fois que le code est crit dans un langage de programmation mmoire scurise pour le maintenir l’abri des failles de la mmoire.
Ce qui manquait jusqu’ il y a quelques annes, c’tait un langage aussi rapide que le C/C++ avec des garanties intgres de scurit de la mmoire. En 2006, un ingnieur logiciel de Mozilla a commenc travailler sur un nouveau langage de programmation appel Rust. La version 1.0 de Rust a t officiellement annonce en 2015. Depuis, plusieurs grands diteurs de logiciels ont commenc l’utiliser dans leurs systmes, notamment Amazon, Facebook, Google, Microsoft, Mozilla et bien d’autres. Il est galement pris en charge dans le dveloppement du noyau Linux.
Diffrents produits ncessiteront des stratgies d’investissement diffrentes pour attnuer les codes dangereux pour la mmoire. L’quilibre entre les mesures d’attnuation C/C++, les mesures d’attnuation matrielles et les langages de programmation sans risque pour la mmoire peut mme varier entre les produits d’une mme entreprise. Aucune approche ne rsoudra tous les problmes pour tous les produits. La seule chose que les fabricants de logiciels ne peuvent pas faire, c’est ignorer le problme. L’industrie du logiciel ne doit pas rester inactive pendant encore une dcennie.
Le livre blanc « Secure by Design » de la CISA prsente trois principes fondamentaux pour les fabricants de logiciels : s’approprier les rsultats en matire de scurit des clients, adopter une transparence radicale et diriger les transformations en matire de scurit depuis le sommet de l’organisation. Les solutions au problme de l’inscurit de la mmoire intgreront ces trois principes.
La CISA invite les fabricants de logiciels faire de la rduction et de l’limination des vulnrabilits de la scurit de la mmoire de leurs gammes de produits un objectif d’entreprise de premier plan. Pour dmontrer cet engagement, les entreprises peuvent publier une « feuille de route sur la scurit de la mmoire » qui comprend des informations sur la manire dont elles modifient leur cycle de dveloppement logiciel (SDLC) pour atteindre cet objectif. Une feuille de route peut inclure des dtails tels que la date partir de laquelle elle construira de nouveaux produits ou composants dans un langage de programmation sans danger pour la mmoire et des plans pour soutenir les initiatives de scurit de la mmoire des bibliothques open source qui font partie de leur chane d’approvisionnement.
L’inscurit de la mmoire est un flau pour l’industrie du logiciel depuis des dcennies et continuera d’tre une source majeure de vulnrabilits et de dommages dans le monde rel jusqu’ ce que les principaux dirigeants des fabricants de logiciels fassent les investissements appropris et s’approprient les rsultats de leurs clients en matire de scurit. l’occasion de la semaine nationale du codage, nous esprons que les participants de l’ensemble de l’industrie du logiciel travailleront ensemble pour crer des logiciels plus srs ds leur conception, et la scurit de la mmoire est la cl pour atteindre cet objectif.
Source : CISA
Et vous ?
Quel est votre avis sur la scurit de la mmoire dans nos logiciels actuels ?
Pensez-vous que l’utilisation d’un langage comme Rust soit la solution ?
Voir aussi :