IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Retour aux éléments de base : un chemin vers des logiciels sûrs et mesurables
Un rapport de la Maison Blanche sur la sécurité de la mémoire et sur la qualité de la cybersécurité

Le , par Jade Emy

412PARTAGES

9  0 
L'Office of the National Cyber Director (ONCD) de la Maison Blanche a publié un rapport appelant la communauté technique à réduire de manière proactive la surface d'attaque dans le cyberespace. Le rapport s'intitule "Back to the Building Blocks: A Path Toward Secure and Measurable Software".


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...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !