![](https://www.developpez.com/images/logos/securite2.png)
RÉSUMÉ
La stratégie nationale de cybersécurité du président Biden met en évidence deux changements fondamentaux : la nécessité de rééquilibrer la responsabilité de la défense du cyberespace et de réorienter les incitations pour favoriser les investissements à long terme dans la cybersécurité. Ce rapport démontre que la communauté technique est bien placée pour faire avancer ces deux objectifs stratégiques. Tout d'abord, afin de réduire les vulnérabilités de la sécurité de la mémoire à grande échelle, les créateurs de logiciels et de matériel peuvent mieux sécuriser les éléments constitutifs du cyberespace. Le présent rapport se concentre sur le langage de programmation en tant qu'élément de base et examine l'architecture matérielle et les méthodes formelles en tant qu'approches complémentaires permettant d'obtenir des résultats similaires. Deuxièmement, afin d'établir des mesures précises de la qualité de la cybersécurité, des progrès peuvent être réalisés pour résoudre le problème difficile et complexe de la mesurabilité des logiciels. Le présent rapport étudie la manière dont ces paramètres peuvent modifier les forces du marché afin d'améliorer la qualité de la cybersécurité dans l'ensemble de l'écosystème.
PARTIE I : INTRODUCTION
Les utilisateurs de logiciels et de matériel informatique sont constamment placés dans la position intenable de devoir réagir aux cyber-urgences. La réponse à chaque crise les laisse souvent sur le carreau, et ceux qui sécurisent les systèmes en première ligne ne devraient pas avoir à supporter tout le poids de ce fardeau. L'intense réactivité exigée par le statu quo actuel réduit la capacité des défenseurs à prévoir la prochaine vague d'attaques et à s'y préparer.
Cette attitude découle du fait que l'atténuation des vulnérabilités connues des logiciels est un problème de systèmes complexes et que l'écosystème actuel n'incite pas suffisamment aux investissements nécessaires pour sécuriser les fondations du cyberespace. Depuis 2021, l'administration Biden-Harris a pris des mesures importantes, à commencer par le décret 14028 sur l'amélioration de la cybersécurité de la nation, pour inciter l'écosystème à corriger les catégories de vulnérabilités connues par des pratiques de développement de logiciels sécurisés tout au long de la chaîne d'approvisionnement. Continuer à encourager le gouvernement et le secteur privé à agir de la sorte peut avoir un impact considérable sur l'amélioration de la cybersécurité du pays.
Toutefois, même si toutes les vulnérabilités connues étaient corrigées, la prévalence des vulnérabilités non découvertes dans l'écosystème logiciel présenterait toujours un risque supplémentaire. Une approche proactive qui se concentre sur l'élimination de classes entières de vulnérabilités réduit la surface d'attaque potentielle et se traduit par un code plus fiable, moins de temps d'arrêt et des systèmes plus prévisibles. En fin de compte, cette approche permet aux États-Unis de favoriser la croissance économique, d'accélérer l'innovation technique et de protéger la sécurité nationale. Laisser ces risques non maîtrisés a un coût élevé et peut permettre aux adversaires de l'Amérique de tenter de tirer profit des circonstances.
Pour faire face à cette dynamique, le président Biden a signé en mars 2023 la stratégie nationale de cybersécurité (la stratégie), qui présente une vision positive du cyberespace et imagine une nouvelle approche pour résoudre ces problèmes difficiles et de longue date. La stratégie prévoit deux changements fondamentaux dans la manière dont les États-Unis répartissent les rôles, les responsabilités et les ressources. Tout d'abord, elle appelle à rééquilibrer la responsabilité de la défense du cyberespace en la confiant à ceux qui sont les plus capables et les mieux placés pour réduire les risques pour tous. Deuxièmement, elle souligne la nécessité de réorienter les incitations afin de favoriser les investissements à long terme nécessaires pour rendre le cyberespace plus résilient et plus défendable dans les années à venir. Cette stratégie reconnaît qu'il s'agit d'une occasion unique de réaliser des progrès significatifs sur ces problèmes cybernétiques difficiles au cours de cette décennie décisive.
Depuis sa publication, l'administration Biden-Harris a pris des mesures concrètes pour réaliser ces deux changements fondamentaux. Le plan de mise en œuvre de la stratégie nationale de cybersécurité (National Cybersecurity Strategy Implementation Plan - NCSIP) présente une feuille de route d'initiatives détaillées permettant au gouvernement des États-Unis de mener une action coordonnée. La stratégie nationale de formation et d'emploi dans le domaine de la cybernétique (National Cyber Workforce and Education Strategy - NCWES), qui découle de la stratégie, présente un plan permettant aux employeurs d'accroître leur main-d'œuvre dans le domaine de la cybernétique et aux éducateurs d'élargir l'accès à la formation dans ce domaine. Le présent rapport s'adresse directement à la communauté technique, notamment aux fabricants de technologies et aux chercheurs universitaires, en illustrant deux façons dont leurs actions peuvent apporter des améliorations significatives à la posture de cybersécurité de la nation.
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 capitale 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 numérique partagé. Le présent rapport propose une double approche : premièrement, afin de réduire les vulnérabilités en matière de sécurité de la 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, et explore l'architecture matérielle et les méthodes formelles en tant qu'approches complémentaires pour atteindre des résultats similaires. Deuxièmement, afin d'établir de meilleures mesures de la qualité de la cybersécurité, la communauté des chercheurs peut s'attaquer au problème difficile et complexe de la mesurabilité des logiciels. Le présent rapport étudie la manière dont ces paramètres peuvent influencer les forces du marché afin d'améliorer la qualité de la cybersécurité dans l'ensemble de l'écosystème.
Ce travail ne peut être accompli par la seule action gouvernementale. Ces approches seront des entreprises ambitieuses qui nécessiteront une attention constante et multisectorielle dans les années à venir. Alors que ces efforts cruciaux progressent, il y a lieu d'être optimiste quant à la capacité de surmonter les défis qui nous attendent. Il n'existe pas de "solution miracle" en matière de cybersécurité, mais la puissance vient de l'alignement des ressources d'aujourd'hui sur les aspirations de demain. La prospérité et la sécurité futures de l'écosystème numérique exigent une coopération déterminée avec la communauté technique.
PARTIE II : SÉCURISER LES ÉLÉMENTS CONSTITUTIFS DU CYBERESPACE
Afin de réduire la charge qui pèse actuellement sur les utilisateurs finaux pour qu'ils se protègent contre les menaces de cybersécurité, des efforts doivent être faits pour éliminer de manière proactive des catégories entières de vulnérabilités logicielles. Pour mieux comprendre la prévalence de ces catégories, les fabricants de logiciels devraient envisager de publier en temps utile des données complètes et cohérentes sur les vulnérabilités et expositions communes (CVE), y compris l'énumération des faiblesses communes (CWE). Une analyse antérieure des données CVE a permis d'identifier les bogues de sécurité de la mémoire comme l'une des catégories de vulnérabilités les plus répandues qui ont tourmenté les cyberdéfenseurs pendant des décennies.
Les vulnérabilités liées à la sécurité de la mémoire sont une catégorie de vulnérabilités affectant la manière dont la mémoire peut être accédée, écrite, allouée ou désallouée de manière non intentionnelle. Les experts ont identifié quelques langages de programmation qui ne présentent pas les caractéristiques associées à la sécurité de la mémoire et qui sont également très répandus dans les systèmes critiques, tels que C et C++. Le choix d'utiliser dès le départ des langages de programmation sans risque pour la mémoire, comme le recommande la feuille de route sur la sécurité des logiciels libres de la Cybersecurity and Infrastructure Security Agency (CISA), est un exemple de développement de logiciels selon le principe de la sécurité dès la conception.
Il existe deux grandes catégories de vulnérabilités en matière de sécurité de la mémoire : les vulnérabilités spatiales et les vulnérabilités temporelles. Les problèmes de sécurité de la mémoire spatiale résultent d'accès à la mémoire effectués en dehors des limites "correctes" établies pour les variables et les objets en mémoire. Les problèmes de sécurité temporelle de la mémoire surviennent lorsque l'on accède à la mémoire en dehors du temps ou de l'état, par exemple en accédant aux données d'un objet après que celui-ci a été libéré ou lorsque les accès à la mémoire sont entrelacés de manière inattendue. Un grand nombre des principales vulnérabilités en matière de cybersécurité survenues au cours des dernières décennies ont été facilitées par des failles de sécurité de la mémoire, notamment le ver Morris en 1988, l'attaque par déni de service du ver Slammer en 2003, la vulnérabilité Heartbleed en 2014 et la chaîne d'exploitation BLASTPASS en 2023. Depuis plus de 35 ans, cette même catégorie de vulnérabilités a perturbé l'écosystème numérique.
La méthode la plus efficace pour réduire les vulnérabilités liées à la sécurité de la mémoire consiste à sécuriser l'un des éléments constitutifs du cyberespace : le langage de programmation. L'utilisation de langages de programmation sans danger pour la mémoire peut éliminer la plupart des erreurs de sécurité de la mémoire. Bien que dans certaines situations particulières, l'utilisation d'un langage à mémoire sécurisée puisse ne pas être possible - ce rapport examine les systèmes spatiaux comme un cas particulier et identifie le matériel à mémoire sécurisée et les méthodes formelles comme des moyens complémentaires pour atteindre un résultat similaire - dans la plupart des cas, l'utilisation d'un langage de programmation à mémoire sécurisée est le moyen le plus efficace d'améliorer de manière substantielle la sécurité des logiciels.
Langages de programmation sans risque pour la mémoire
Étant donné que de nombreux problèmes de cybersécurité commencent par une ligne de code, l'un des moyens les plus efficaces d'y remédier est d'examiner le langage de programmation lui-même. Le fait de s'assurer qu'un langage de programmation comporte certaines propriétés, telles que la sécurité de la mémoire ou des types, signifie que les logiciels construits sur cette base héritent automatiquement de la sécurité offerte par ces caractéristiques.
Les solutions de cybersécurité doivent s'appuyer sur les meilleures pratiques d'ingénierie, et les fabricants de logiciels peuvent s'attaquer à ce problème en utilisant systématiquement des blocs de construction sécurisés, notamment en adoptant des langages de programmation sans risque pour la mémoire. Il y a de fortes raisons de penser que le moment est venu de procéder à ces changements. Tout d'abord, des solutions techniques existent déjà ; il y a des dizaines de langages de programmation à mémoire sécurisée qui peuvent - et doivent - être utilisés. Les fabricants de technologies sont déjà en mesure de concevoir et de fabriquer de nouveaux produits dans des langages de programmation sans risque pour la mémoire dès le premier jour. Deuxièmement, le passage à des langages de programmation sans risque pour la mémoire a un effet positif avéré sur la cybersécurité. L'analyse de l'industrie a montré dans certains cas que, malgré des examens rigoureux du code et d'autres contrôles préventifs et de détection, jusqu'à 70 % des vulnérabilités de sécurité dans les langages à mémoire non sécurisée qui ont été corrigées et ont reçu une désignation CVE sont dues à des problèmes de sécurité de la mémoire. Lorsque de grandes bases de code sont migrées vers un langage à mémoire sécurisée, il est prouvé que les vulnérabilités de sécurité de la mémoire sont presque éliminées.
Pour les nouveaux produits, le choix d'un langage de programmation à mémoire sécurisée est une décision d'architecture précoce qui peut apporter des avantages significatifs en matière de sécurité. Même pour les bases de code existantes, où une réécriture complète du code est plus difficile, il existe encore des moyens d'adopter des langages de programmation sans risque pour la mémoire en adoptant une approche hybride. Par exemple, les développeurs de logiciels peuvent identifier les fonctions ou les bibliothèques critiques sur la base de critères de risque et donner la priorité à la réécriture de ces fonctions ou bibliothèques.
La création de nouveaux produits et la migration des codes hérités à fort impact vers des langages de programmation sans risque pour la mémoire peuvent réduire de manière significative la prévalence des vulnérabilités liées à la sécurité de la mémoire dans l'ensemble de l'écosystème numérique. Certes, il n'existe pas de solution unique en matière de cybersécurité, et l'utilisation d'un langage de programmation sans risque pour la mémoire ne peut pas éliminer tous les risques en matière de cybersécurité. Toutefois, il s'agit d'une mesure supplémentaire importante que les fabricants de technologies peuvent prendre pour éliminer de vastes catégories de vulnérabilités logicielles. Un rapport récent rédigé par la CISA, la NSA, le FBI et des agences internationales de cybersécurité, intitulé The Case for Memory Safe Roadmaps, fournit aux fabricants des conseils sur les mesures à prendre pour éliminer les vulnérabilités de leurs produits en matière de sécurité de la mémoire.
Matériel à mémoire sécurisée
En avril 1970, une explosion à bord a fait dérailler la mission Apollo 13 vers la Lune. Deux jours après le début du voyage des astronautes, un fil dénudé a déclenché un incendie et provoqué l'éclatement d'un des deux réservoirs d'oxygène du vaisseau. Le seul espoir de survie des astronautes résidait dans une réaction ingénieuse - et rapide - de la part des scientifiques de la fusée. Utilisant les lois de la physique et les règles des mathématiques, les ingénieurs aérospatiaux ont travaillé rapidement et ont calculé la combustion d'un moteur par le module lunaire afin de placer Apollo 13 sur une trajectoire de retour vers la Terre.
Plus de cinquante ans plus tard, les ingénieurs aérospatiaux et les décideurs politiques n'ont pas laissé l'avenir de la sécurité spatiale au hasard. Grâce en grande partie aux progrès technologiques de l'informatique moderne et de l'ingénierie logicielle, l'automatisation numérique a minimisé le risque d'erreur humaine, transférant le fardeau des astronautes en orbite - et des spécialistes des fusées dans le centre de commandement - et garantissant que le vaisseau spatial est plus sûr de par sa conception et, par conséquent, plus sûr pour son équipage. Dans le cas d'Apollo 13, la quasi-catastrophe a été causée par inadvertance par les lois de la physique, mais aujourd'hui, des adversaires tentent activement de saboter les systèmes spatiaux. Aujourd'hui, alors que le cyberespace continue d'être introduit dans l'espace extra-atmosphérique, le vaisseau spatial doit également être sécurisé de par sa conception. Une catastrophe ne doit pas être le catalyseur de l'action.
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 dans les systèmes spatiaux en ce qui concerne l'utilisation des langages. Premièrement, le langage doit permettre au code d'être proche du noyau afin qu'il puisse interagir étroitement avec le logiciel et le matériel ; deuxièmement, le langage doit supporter le déterminisme afin que le timing des sorties soit cohérent ; et troisièmement, le langage ne doit pas avoir - ou être capable d'outrepasser - 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 permettent de garantir les résultats fiables et prévisibles nécessaires pour les systèmes spatiaux.
Selon les experts, les langages de programmation à mémoire sûre et à mémoire non sûre répondent tous deux à ces exigences. À l'heure actuelle, les langages les plus utilisés qui satisfont à ces trois propriétés sont le C et le C++, qui ne sont pas des langages de programmation sans risque pour la mémoire. Rust, un exemple de langage de programmation sans risque pour la mémoire, possède les trois propriétés requises ci-dessus, mais n'a pas encore fait ses preuves dans les systèmes spatiaux. Des progrès supplémentaires en matière de chaînes d'outils de développement, de formation de la main-d'œuvre et d'études de cas sur le terrain sont nécessaires pour démontrer la viabilité des langages à mémoire sécurisée dans ces cas d'utilisation. Dans l'intervalle, il existe d'autres moyens d'obtenir des résultats à l'échelle en utilisant des blocs de construction sécurisés. Par conséquent, pour réduire les vulnérabilités en matière de sécurité de la mémoire dans l'espace ou dans d'autres systèmes embarqués qui sont confrontés à des contraintes similaires, une approche complémentaire visant à mettre en œuvre la sécurité de la mémoire par le biais du matériel peut être explorée.
La puce, en particulier, est un élément matériel important à prendre en compte. Plusieurs efforts prometteurs sont actuellement en cours pour soutenir les protections de la mémoire par le biais du matériel. Par exemple, un groupe de fabricants a développé une nouvelle extension de marquage de la mémoire (MTE) pour vérifier la validité des pointeurs vers les emplacements de mémoire avant de les utiliser. S'ils ne sont pas valides, le processeur produit une erreur. Cette technique est une méthode efficace pour détecter les bogues de sécurité de la mémoire, mais cette approche ne doit pas être considérée comme une solution complète pour prévenir tous les exploits de sécurité de la mémoire. Un autre exemple de méthode matérielle est le CHERI (Capability Hardware Enhanced RISC Instructions). Cette architecture modifie la façon dont le logiciel accède à la mémoire, dans le but d'éliminer les vulnérabilités présentes dans les langages historiquement peu sûrs pour la mémoire.
Méthodes formelles
Même si les ingénieurs construisent avec des langages de programmation et des puces sans danger pour la mémoire, il faut penser aux vulnérabilités qui persisteront même après que les fabricants de technologie auront pris des mesures pour éliminer les classes les plus répandues. Compte tenu de la complexité du code, les tests sont une étape nécessaire mais insuffisante du processus de développement pour réduire totalement les vulnérabilités à grande échelle. Si l'on définit l'exactitude comme la capacité d'un logiciel à répondre à une exigence de sécurité spécifique, il est possible de démontrer l'exactitude à l'aide de techniques mathématiques appelées méthodes formelles. Ces techniques, souvent utilisées pour prouver une série de résultats logiciels, peuvent également être utilisées dans un contexte de cybersécurité et sont viables même dans des environnements complexes comme l'espace. Bien que les méthodes formelles soient étudiées depuis des décennies, leur déploiement reste limité ; il est essentiel d'innover davantage dans les approches visant à rendre les méthodes formelles largement accessibles afin d'accélérer leur adoption à grande échelle. Ce faisant, les méthodes formelles peuvent servir d'outil puissant supplémentaire pour donner aux développeurs de logiciels une plus grande assurance que des classes entières de vulnérabilités, même au-delà des bogues de sécurité de la mémoire, sont absentes.
Bien qu'il existe plusieurs types de méthodes formelles couvrant un éventail de techniques et d'étapes du processus de développement de logiciels, le présent rapport met l'accent sur quelques exemples spécifiques. L'analyse statique solide examine les propriétés spécifiques du logiciel sans exécuter le code. Cette méthode est efficace parce qu'elle peut être utilisée pour de nombreuses représentations du logiciel, y compris le code source, l'architecture, les exigences et les exécutables. Les vérificateurs de modèles peuvent répondre à des questions sur un certain nombre de propriétés de haut niveau. Ces algorithmes peuvent être utilisés pendant la production ; toutefois, leur utilisation à grande échelle est limitée en raison de leur complexité informatique. Les tests basés sur des assertions sont une déclaration formelle des propriétés présentes dans le code qui peut être utilisée pour vérifier le code pendant les tests ou la production. Ces preuves générées permettent de détecter les défauts beaucoup plus tôt et plus près du code erroné, plutôt que de remonter à des défaillances de systèmes visibles de l'extérieur.
Les ingénieurs en logiciel peuvent utiliser ces techniques de deux manières, à la fois pour les logiciels et le matériel. Premièrement, les méthodes formelles peuvent être incorporées directement dans la chaîne d'outils du développeur. Lorsque le programmeur construit, teste et déploie le logiciel, le compilateur peut automatiser ces preuves mathématiques et vérifier qu'une condition de sécurité est remplie. En outre, le développeur peut utiliser des composants de base formellement vérifiés dans sa chaîne d'approvisionnement en logiciels. En choisissant des bibliothèques logicielles dont la sécurité est prouvée, les développeurs peuvent s'assurer que les composants qu'ils utilisent sont moins susceptibles de contenir des vulnérabilités.
Les méthodes formelles peuvent être intégrées tout au long du processus de développement afin de réduire la prévalence de plusieurs catégories de vulnérabilités. Certaines technologies émergentes sont également bien adaptées à cette technique. Lorsque des questions se posent sur la sécurité ou la fiabilité d'un nouveau produit logiciel, les méthodes formelles peuvent accélérer l'adoption par le marché d'une manière que les méthodes traditionnelles d'essai des logiciels ne peuvent pas faire. Elles permettent de prouver la présence d'une exigence positive, plutôt que de tester l'absence d'une condition négative.
Si le matériel à mémoire sécurisée et les méthodes formelles peuvent constituer d'excellentes approches complémentaires pour atténuer les vulnérabilités non découvertes, l'une des mesures les plus efficaces que peuvent prendre les fabricants de logiciels et de matériel est l'adoption de langages de programmation à mémoire sécurisée. Ils offrent un moyen d'éliminer, et pas seulement d'atténuer, des classes entières de bogues. Il s'agit là d'une opportunité remarquable pour la communauté technique d'améliorer la cybersécurité de l'ensemble de l'écosystème numérique.
PARTIE III : RÉSOUDRE LE PROBLÈME DE LA MESURABILITÉ DES LOGICIELS
Pour progresser dans la sécurisation de l'écosystème numérique, il est nécessaire de réorienter les incitations afin de favoriser les investissements à long terme. Pour que ce réalignement entraîne un changement de comportement à l'échelle de l'écosystème, il est essentiel de mettre au point des mesures empiriques permettant d'évaluer la qualité des logiciels en matière de cybersécurité. Cela permettra d'éclairer les décisions des producteurs et des consommateurs, ainsi que les efforts d'élaboration des politiques publiques. Les travaux en cours visant à améliorer la compréhension de la qualité et de la sécurité des logiciels, y compris la divulgation coordonnée des vulnérabilités, les programmes de réponse et les enregistrements CVE en temps utile, contribuent à la prise de décisions essentielles dans l'ensemble de l'écosystème. Néanmoins, des progrès supplémentaires sont nécessaires pour développer des mesures empiriques permettant d'évaluer efficacement le code.
La mesurabilité des logiciels est l'un des problèmes de recherche ouverte les plus difficiles à résoudre ; en fait, les experts en cybersécurité sont aux prises avec ce problème depuis des décennies. Ce problème nécessite non seulement d'affiner les mesures ou les outils existants, mais aussi d'ouvrir une nouvelle frontière dans le domaine de l'ingénierie logicielle et de la recherche en cybersécurité. En améliorant les capacités de mesure et d'évaluation de la sécurité des logiciels, il est possible d'anticiper davantage de vulnérabilités et de les atténuer avant la mise sur le marché des logiciels. Les paramètres élaborés à partir de ces mesures éclaireront également la prise de décision d'un large éventail de parties prenantes, améliorant ainsi la sécurité de l'écosystème numérique et encourageant les investissements à long terme dans le développement de logiciels sécurisés.
Les défis de la mesurabilité des logiciels
En 2016, le groupe chargé de la qualité des logiciels au National Institute of Standards and Technology (NIST) des États-Unis a organisé un atelier pour étudier les améliorations à apporter aux mesures et aux paramètres des logiciels, dans le but de réduire considérablement les vulnérabilités des logiciels. Les conclusions de cet atelier ont souligné la nature multidimensionnelle du problème de la mesurabilité des logiciels et ont identifié trois défis fondamentaux : la métrologie des logiciels, le comportement des logiciels et l'analyse des logiciels.
Premièrement, le défi inhérent à la métrologie des logiciels - la science de la mesure des logiciels - découle du fait que les logiciels ne sont pas seulement une construction technique, mais aussi une forme d'expression humaine. Contrairement aux produits d'ingénierie physique, la plupart des logiciels n'ont pas de structure ou de composition uniforme. Cette hétérogénéité dans la conception et l'architecture rend la définition de la qualité de la cybersécurité très subjective et dépendante du contexte, ce qui complique l'établissement de mesures universelles.
Deuxièmement, le comportement des logiciels dans diverses conditions peut ne pas être entièrement déterministe. Si certains intrants et processus peuvent conduire de manière prévisible à des résultats spécifiques, le comportement global des systèmes logiciels complexes échappe souvent à cette prévisibilité. En outre, les logiciels ne se conforment pas nécessairement à des distributions probabilistes, ce qui rend difficile l'application de modèles statistiques ou de prédictions couramment utilisés dans d'autres domaines. Cette imprévisibilité entrave la capacité à mesurer de manière fiable et cohérente la performance et la sécurité des logiciels.
Troisièmement, la difficulté d'analyser les logiciels aggrave le problème. L'analyse des logiciels pour évaluer leur qualité en matière de cybersécurité est limitée par ce qui peut être quantifié. Les méthodes traditionnelles, comme le comptage des vulnérabilités connues, sont insuffisantes et ne donnent pas nécessairement une idée des menaces ou des vecteurs d'attaque futurs. La nature dynamique et évolutive du développement des logiciels et des cybermenaces signifie que ce qui est mesuré aujourd'hui ne sera peut-être plus pertinent demain, ce qui fait de l'élaboration de mesures prospectives et prédictives une tâche ardue.
Ces défis sont considérables, mais la communauté des chercheurs devrait se pencher à nouveau sur ce problème difficile. Le plan stratégique fédéral de recherche et de développement en matière de cybersécurité, récemment publié, souligne également que la mesurabilité des logiciels est une priorité de recherche pour l'administration Biden-Harris. Le fait d'attirer davantage l'attention de la communauté des chercheurs sur cette question jettera les bases de l'identification et du développement de mesures de la qualité des logiciels en matière de cybersécurité. Cela pourrait permettre de créer des mesures précieuses qui combleraient un manque d'information important. Si ces mesures sont utiles pour les développeurs de logiciels qui cherchent à sécuriser leur code, elles ont également des implications considérables pour l'ensemble de l'écosystème de la cybersécurité.
Applications des mesures de la qualité de la cybersécurité
En décembre 2021, la découverte d'une vulnérabilité dans Log4j, une bibliothèque open-source de journalisation Java omniprésente, a mis en évidence une faiblesse critique par laquelle des acteurs malveillants pouvaient compromettre des systèmes informatiques dans le monde entier. Les gouvernements, les entreprises multinationales et les opérateurs d'infrastructures critiques se sont précipités pour évaluer l'étendue de leur exposition. Cette vulnérabilité a mis en évidence la nécessité d'assurer la sécurité de l'écosystème des logiciels open-source, qui favorise l'innovation dans le monde entier. Connue sous le nom de "Log4Shell", elle a mis en lumière une vérité malheureuse en matière de cybersécurité : mesurer à titre préventif la qualité des logiciels en matière de cybersécurité reste une tâche herculéenne.
L'écosystème des logiciels open-source offre une toile de fond unique pour l'examen de la mesure des logiciels. Les logiciels open-source sont omniprésents dans le matériel et les logiciels de presque tous les secteurs économiques, ce qui pose toute une série de problèmes de sécurité. La nature accessible et transparente des logiciels open-source en fait également un excellent environnement pour l'application de la mesure des logiciels et le développement de mesures de la qualité de la cybersécurité qui en découle.
Si elles sont mises au point, des mesures robustes des logiciels pourraient améliorer la capacité à évaluer la qualité de la cybersécurité. En quantifiant ce qui était auparavant qualitatif, la précision et l'objectivité de l'évaluation des logiciels sont améliorées. Cela permet de comprendre de manière plus nuancée où et comment la cybersécurité peut être améliorée.
Avec une mesure efficace de la qualité, le prochain progrès réside dans le contrôle continu de cette métrique. Au lieu d'évaluations ponctuelles de la cybersécurité, les logiciels peuvent être évalués de manière dynamique. Cette avancée permettrait de suivre le rythme d'un environnement où les menaces émergent et évoluent constamment, et où les logiciels eux-mêmes sont dans un état de développement et de perfectionnement perpétuel.
L'évaluation de la sécurité des logiciels peut se faire à l'aide de métriques dans un récit visuel de la sécurité des logiciels. Le pouvoir de la visualisation pour transmettre des données complexes est bien connu et, dans le contexte de la cybersécurité, il s'avère inestimable. Avec un graphique de qualité, les tendances et les modèles qui auraient pu rester obscurs dans des tableaux de données deviendraient plus compréhensibles.
Enfin, la visualisation des tendances en matière de qualité et l'utilisation d'une fonction mathématique appropriée pour ajuster les données permettent d'obtenir des mesures supplémentaires. Un dérivé potentiel - le taux de réponse - montre le taux de variation de l'indicateur de qualité de la cybersécurité. Ce type de mesure dérivée permet de mieux comprendre le profil de sécurité du logiciel. Par exemple, un taux de réponse rapide aux vulnérabilités émergentes indiquerait que l'éditeur du logiciel est proactif et digne de confiance.
L'application de mesures de la qualité de la cybersécurité marque un changement dans la manière d'aborder et de comprendre la sécurité des logiciels. Il s'agit de passer d'une évaluation subjective à une précision objective, d'instantanés statiques à des tendances dynamiques, et de données diffuses à des informations exploitables. Lorsqu'ils sont appliqués à l'écosystème des logiciels open-source, il est facile d'imaginer l'impact qui en résultera, comme l'utilisation de ces mesures pour identifier une bibliothèque open-source dont la qualité de cybersécurité est médiocre et décider d'utiliser un composant plus sûr à la place.
Modifier les forces du marché pour améliorer la qualité de la cybersécurité
Recadrer le débat sur la cybersécurité en passant d'une approche réactive à une approche proactive permet de déplacer l'attention des défenseurs de première ligne vers le large éventail d'individus qui ont un rôle important à jouer dans la sécurisation de l'écosystème numérique. Pendant trop longtemps, la responsabilité première de la cybersécurité d'une organisation a incombé au responsable de la sécurité de l'information (RSSI) de l'entreprise qui utilisait le logiciel. Il ne peut être la seule partie prenante responsable des résultats en matière de cybersécurité ; il est également essentiel, par exemple, que le directeur des systèmes d'information (DSI) qui achète les logiciels et le directeur des technologies (CTO) des fabricants qui conçoivent les logiciels partagent cette responsabilité. Une mesure de la qualité de la cybersécurité pourrait améliorer la prise de décision en collaboration entre toutes les parties.
En naviguant dans le paysage complexe de la recherche sur la mesurabilité des logiciels, il y a trois dimensions fondamentales au risque que les logiciels posent à la cybersécurité d'une organisation : le processus de développement, l'analyse et le test des logiciels, et l'environnement d'exécution. En ce qui concerne le développement d'une mesure de la qualité, les deux premières dimensions reflètent fondamentalement le logiciel lui-même et sont celles où les choix architecturaux et de conception jouent le rôle le plus important dans l'amélioration de la sécurité. Ce sont également les dimensions qui resteront statiques à travers tous les déploiements d'une version du logiciel. La compréhension de ces trois dimensions peut éclairer la manière dont les mesures de la qualité de la cybersécurité peuvent être utilisées dans l'ensemble de l'écosystème.
Les directeurs techniques des fabricants de logiciels et les directeurs informatiques des utilisateurs de logiciels sont les mieux placés pour prendre des décisions sur la qualité intrinsèque des logiciels et sont donc probablement les plus intéressés par les deux premières dimensions du risque de cybersécurité. Dans la première dimension, le processus de développement du logiciel, la qualité de l'équipe de développement joue un rôle crucial. Les équipes bien formées et expérimentées, dotées d'exigences claires et ayant l'habitude de créer des logiciels robustes présentant un minimum de vulnérabilités, suscitent une plus grande confiance dans les logiciels qu'elles produisent. Les compétences et les antécédents de l'équipe de développement sont des gages de fiabilité, ce qui donne à penser que les logiciels conçus grâce à leur expertise ont plus de chances d'être sûrs et moins sujets à des vulnérabilités. Un directeur technique peut prendre des décisions sur la manière de recruter ou de structurer des équipes de développement internes afin d'améliorer les paramètres de qualité de la cybersécurité associés aux produits développés par l'organisation, et un DSI peut prendre des décisions en matière d'achats en fonction de sa confiance dans les pratiques de développement d'un fournisseur.
La deuxième dimension que les directeurs techniques et les directeurs informatiques pourraient prendre en compte est l'analyse du produit logiciel. Avec de meilleures mesures, les directeurs techniques pourraient utiliser une série de méthodes d'analyse rigoureuses - telles que les revues de code, les tests d'acceptation et les méthodes formelles - pour s'assurer que les vulnérabilités d'un logiciel seront rares. Un DSI pourrait fonder sa décision d'achat en grande partie sur les résultats d'un produit logiciel en termes de qualité, persuadé que son adoption présentera moins de risques pour l'organisation.
Le RSSI d'une organisation se concentre principalement sur la sécurité des systèmes d'information et de technologie de l'organisation. Bien que cette personne soit intéressée par les trois dimensions du risque de cybersécurité des logiciels, elle a moins de contrôle direct sur les logiciels utilisés dans son environnement. C'est pourquoi les RSSI s'intéressent surtout à la troisième dimension : un environnement d'exécution résilient. En exécutant le logiciel dans un environnement contrôlé et restreint, tel qu'un conteneur avec des privilèges système limités, ou en utilisant l'intégrité du flux de contrôle pour surveiller un programme en cours d'exécution afin de détecter les écarts par rapport au comportement normal, il est possible de limiter considérablement les dommages potentiels causés par les vulnérabilités exploitées. Cette méthode n'élimine pas les vulnérabilités mais atténue plutôt leur impact, servant de filet de sécurité potentiel en cas d'exploitation. Étant donné que le RSSI ne peut pas toujours décider des technologies et des capacités de sécurité avec lesquelles il travaille, cette dimension pourrait influencer la priorité accordée par un RSSI aux mesures d'atténuation des risques pour un logiciel dont la qualité en matière de cybersécurité pose problème.
Bien que l'administration Biden-Harris ait pris des mesures importantes pour inciter le marché à corriger les vulnérabilités connues, notamment le décret 14028, les utilisateurs sont toujours confrontés à des risques de cybersécurité liés à leurs logiciels en raison du manque d'informations susceptibles de réduire les vulnérabilités futures - en les empêchant de se produire, en les détectant avant qu'elles ne soient exploitées ou en réduisant leur impact. Les fabricants de logiciels ne sont pas suffisamment incités à consacrer des ressources appropriées à des pratiques de développement sûres, et leurs clients n'exigent pas des logiciels de meilleure qualité parce qu'ils ne savent pas comment la mesurer. Sur le plan opérationnel, les organisations ne prennent pas suffisamment de mesures pour atténuer le risque lié aux logiciels de mauvaise qualité parce qu'elles ne sont pas conscientes de ce risque et qu'elles n'ont souvent pas les moyens de l'atténuer même si elles en sont conscientes.
De meilleures mesures de la qualité de la cybersécurité changent l'équation car elles permettent de prendre des décisions fondées sur des données tout au long de la chaîne d'approvisionnement. Si les responsables techniques, tels que le directeur technique, le directeur des systèmes d'information et le responsable de la sécurité informatique, jouent un rôle déterminant dans la mise en œuvre de cette vision, la qualité de la cybersécurité doit également être considérée comme un impératif commercial dont le directeur général et le conseil d'administration sont responsables en dernier ressort. La résolution du problème de la mesurabilité des logiciels permettrait de réaliser pleinement l'utilité de cette mesure, en comblant une lacune vitale en matière d'information et en encourageant les investissements à long terme dans la sécurité des logiciels. Cela permettrait à tous les acteurs de l'écosystème de voir leur retour sur investissement ou de comprendre clairement le risque d'un produit de moindre qualité.
PARTIE IV : CONCLUSION
L'élimination de classes entières de vulnérabilités logicielles est un problème urgent et complexe. À l'avenir, de nouvelles approches doivent être adoptées pour atténuer ce risque. Cela permettra aux États-Unis de continuer à progresser vers la vision affirmée du président Biden d'un cyberespace sûr et résilient.
La communauté technique est essentielle à ce progrès. En adoptant des langages de programmation à mémoire sécurisée, les créateurs de logiciels et de matériel peuvent mieux sécuriser les éléments constitutifs du cyberespace et éliminer de manière proactive des catégories entières de bogues. En se ralliant au problème difficile et complexe de la mesurabilité des logiciels, la communauté des chercheurs peut mettre au point de meilleures mesures de la qualité de la cybersécurité afin d'inciter les consommateurs, les fabricants et les décideurs à prendre de meilleures décisions dans l'ensemble de l'écosystème. Ces efforts seront audacieux et de longue haleine et nécessiteront une attention soutenue et l'établissement de priorités. Le moment est venu de commencer ce travail.
Pour parvenir à cette vision, il faut reconnaître que la nation donne le meilleur d'elle-même lorsque les Américains travaillent ensemble. C'est une voie qui nécessite la convergence des initiatives gouvernementales, de l'innovation du secteur privé et de la recherche universitaire de pointe. Travailler ensemble pour éliminer de manière proactive les vulnérabilités des logiciels allège le fardeau de ceux qui sont le moins à même de le supporter et permet aux cyberdéfenseurs de première ligne de se tourner vers l'avenir. La définition d'une cybersécurité de qualité permet de réaligner les incitations et de donner confiance dans ce que le cyberespace peut être. Ensemble, ces forces collaboratives continueront à nous propulser vers un avenir où le cyberespace sera sûr, résilient et digne de confiance, incarnant les valeurs américaines fondamentales et ne cédant pas à l'animosité de nos adversaires. Comme le dit souvent le président Biden, "nous sommes les États-Unis d'Amérique et il n'y a rien, rien qui dépasse notre capacité si nous le faisons ensemble".
Source : Back to the Building Blocks: A Path Toward Secure and Measurable Software
Et vous ?
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
Voir aussi :
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)