Google appelle à des normes mesurables de sécurité de la mémoire pour les logiciels : les bogues de sécurité de la mémoire « érodent la confiance dans la technologie et coûtent des milliards »

Dans un récent billet de blog, les chercheurs en sécurité de Google préconisent un cadre normalisé pour définir des normes mesurables de sécurité de la mémoire, afin d'orienter les initiatives politiques et d'encourager l'investissement dans des pratiques logicielles plus sûres dans l'ensemble de l'industrie. En mettant l'accent sur la collaboration avec l'industrie et le monde universitaire, Google souligne la nécessité d'adopter des approches adaptables pour obtenir des résultats solides en matière de sécurité de la mémoire, ce qui témoigne d'une attitude proactive dans la construction d'un environnement numérique sûr pour les générations futures.

Cette initiative intervient à un moment où Google admet que la transition vers des langages à mémoire sécurisée comme Rust prendra plusieurs années. L'entreprise décidant d'appliquer, en attendant, des principes de conception sécurisée à sa base de code C++ existante.

Les bogues de sécurité de la mémoire « érodent la confiance dans la technologie et coûtent des milliards », affirme le nouveau billet sur le blog de sécurité de Google, ajoutant que « les approches traditionnelles, telles que l'audit de code, le fuzzing et l'atténuation des exploits, bien qu'utiles, n'ont pas été suffisantes pour endiguer la marée ».

Le billet de blog appelle ainsi à un « cadre commun » pour « définir des critères spécifiques et mesurables permettant d'atteindre différents niveaux d'assurance de la sécurité de la mémoire ». L'espoir est que cela donne aux décideurs politiques « la base technique pour élaborer des initiatives politiques et des incitations efficaces en faveur de la sécurité de la mémoire », conduisant à « un marché dans lequel les vendeurs sont incités à investir dans la sécurité de la mémoire, [...] et les clients seront habilités à reconnaître, exiger et récompenser la sécurité »).


En janvier, les mêmes chercheurs en sécurité de Google ont participé à la rédaction d'un article notant qu'il existe désormais des « technologies de recherche » solides en matière de sécurité de la mémoire qui sont suffisamment matures : des langages sûrs pour la mémoire (y compris des « sous-ensembles de langages plus sûrs comme Safe Buffers pour C++ »), une vérification formelle mathématiquement rigoureuse, la compartimentation des logiciels, et des protections matérielles et logicielles. Les protections matérielles comprennent des éléments tels que l'extension matérielle MTE (Memory Tagging Extension) d'ARM et l'architecture CHERI (Capability Hardware Enhanced RISC Instructions).

Les chercheurs en sécurité de Google appellent aujourd'hui à l'élaboration d'un « plan directeur pour un avenir sans danger pour la mémoire » - bien qu'il soit important de souligner que l'idée est de « définir les résultats souhaités plutôt que de s'enfermer dans des technologies spécifiques ».

Le billet de blog de Google préconise à nouveau un cadre pratique/actionnable qui soit compris de tous, mais qui soutienne différentes approches et permette de s'adapter à des besoins spécifiques tout en permettant une évaluation objective.

Le contenu du billet de blog de Google est présenté ci-desous :

Citation Envoyé par Google
Depuis des décennies, les vulnérabilités en matière de sécurité de la mémoire sont au centre de divers incidents de sécurité dans l'industrie, érodant la confiance dans la technologie et coûtant des milliards. Les approches traditionnelles, telles que l'audit de code, le fuzzing et l'atténuation des exploits, bien qu'utiles, n'ont pas suffi à endiguer le problème, tout en entraînant des coûts de plus en plus élevés.

Dans cet article de blog, nous appelons à un changement fondamental : un engagement collectif pour enfin éliminer cette catégorie de vulnérabilités, ancré sur des pratiques de conception sécurisée - non seulement pour nous-mêmes, mais aussi pour les générations à venir.

Le changement que nous appelons de nos vœux est renforcé par un récent article de l'ACM appelant à normaliser la sécurité des mémoires, que nous avons contribué à publier avec des partenaires universitaires et industriels. Il s'agit de reconnaître que l'absence de sécurité de la mémoire n'est plus un problème technique de niche, mais un problème de société, qui a des répercussions sur tout, de la sécurité nationale à la protection de la vie privée.

L'opportunité de la normalisation

Au cours de la dernière décennie, une confluence d'avancées en matière de sécurité de conception a mûri au point de permettre un déploiement pratique et généralisé. Il s'agit notamment de langages à mémoire sécurisée, y compris des langages à haute performance tels que Rust, ainsi que des sous-ensembles de langages plus sûrs tels que Safe Buffers pour C++.

Ces outils s'avèrent déjà efficaces. Dans Android, par exemple, l'adoption croissante de langages à mémoire sécurisée comme Kotlin et Rust dans le nouveau code a entraîné une réduction significative des vulnérabilités.

Pour ce qui est de l'avenir, nous assistons également à des développements passionnants et prometteurs dans le domaine du matériel. Des technologies telles que l'extension matérielle MTE (Memory Tagging Extension) d'ARM et l'architecture CHERI (Capability Hardware Enhanced RISC Instructions) offrent une défense complémentaire, en particulier pour le code existant.

Bien que ces progrès soient encourageants, la sécurité de la mémoire dans l'ensemble de l'industrie du logiciel exige plus que des progrès technologiques individuels : nous devons créer l'environnement et la responsabilité nécessaires à leur adoption généralisée. La normalisation est essentielle à cet égard.

Pour faciliter la normalisation, nous suggérons d'établir un cadre commun pour spécifier et évaluer objectivement les garanties de sécurité de la mémoire ; ce faisant, nous jetterons les bases de la création d'un marché dans lequel les fournisseurs seront incités à investir dans la sécurité de la mémoire. Les clients auront la possibilité de reconnaître, d'exiger et de récompenser la sécurité. Ce cadre fournira aux gouvernements et aux entreprises la clarté nécessaire pour spécifier les exigences en matière de sécurité de la mémoire, ce qui favorisera l'acquisition de systèmes plus sûrs.

Le cadre que nous proposons compléterait les efforts existants en définissant des critères spécifiques et mesurables pour atteindre différents niveaux d'assurance de la sécurité de la mémoire dans l'ensemble de l'industrie. De cette manière, les décideurs politiques disposeront de la base technique nécessaire pour élaborer des initiatives politiques et des mesures incitatives efficaces en faveur de la sécurité de la mémoire.

Un plan d'action pour un avenir sans danger pour la mémoire

Nous savons qu'il existe plusieurs façons de résoudre ce problème et nous investissons dans plusieurs d'entre elles. Il est important de noter que notre vision de la sécurité de la mémoire par la normalisation se concentre sur la définition des résultats souhaités plutôt que sur l'adoption de technologies spécifiques.

Pour traduire cette vision en une norme efficace, nous avons besoin d'un cadre qui permette de :

Favoriser l'innovation et soutenir diverses approches : La norme devrait se concentrer sur les propriétés de sécurité que nous voulons atteindre (par exemple, l'absence de violations de la sécurité spatiale et temporelle) plutôt que d'imposer des détails de mise en œuvre spécifiques. Le cadre doit donc être neutre sur le plan technologique et permettre aux fournisseurs de choisir la meilleure approche pour leurs produits et leurs exigences. Cela encourage l'innovation et permet aux fabricants de logiciels et de matériel d'adopter les meilleures solutions au fur et à mesure qu'elles apparaissent.

Adapter les exigences de sécurité de la mémoire en fonction des besoins : Le cadre devrait établir différents niveaux d'assurance de la sécurité, semblables aux niveaux SLSA, en reconnaissant que des applications différentes ont des besoins de sécurité et des contraintes de coût différents. De même, nous avons probablement besoin d'orientations distinctes pour le développement de nouveaux systèmes et l'amélioration des bases de code existantes. Par exemple, nous n'avons probablement pas besoin que chaque morceau de code soit formellement prouvé. Cela permet d'adapter la sécurité, en garantissant des niveaux appropriés de sécurité de la mémoire pour différents contextes.

Permettre une évaluation objective : Le cadre devrait définir des critères clairs et éventuellement des mesures pour évaluer la sécurité de la mémoire et le respect d'un niveau d'assurance donné. L'objectif serait de comparer objectivement l'assurance de la sécurité de la mémoire de différents composants logiciels ou systèmes, de la même manière que nous évaluons aujourd'hui l'efficacité énergétique. Cela nous permettra de dépasser les affirmations subjectives et d'obtenir des propriétés de sécurité objectives et comparables d'un produit à l'autre.

Être pratique et réalisable : Parallèlement au cadre neutre sur le plan technologique, nous avons besoin de meilleures pratiques pour les technologies existantes. Le cadre devrait fournir des orientations sur la manière d'exploiter efficacement des technologies spécifiques pour respecter les normes. Il s'agit notamment de répondre à des questions telles que : quand et dans quelle mesure un code non sûr est acceptable au sein de systèmes logiciels plus vastes, et des lignes directrices sur la structuration de ces dépendances non sûres pour soutenir le raisonnement compositionnel sur la sécurité.

L'engagement de Google

Chez Google, nous ne nous contentons pas de plaider en faveur de la normalisation et d'un avenir sans danger pour la mémoire, nous travaillons activement à sa construction.

Nous collaborons avec des partenaires industriels et universitaires pour élaborer des normes potentielles, et notre participation à la rédaction du récent appel à l'action de la CACM marque une première étape importante dans ce processus. En outre, comme indiqué dans notre livre blanc « Secure by Design » et dans notre stratégie de sécurité de la mémoire, nous sommes profondément engagés à intégrer la sécurité dans les fondements de nos produits et services.

Cet engagement se reflète également dans nos efforts internes. Nous donnons la priorité aux langages à mémoire sécurisée et avons déjà constaté des réductions significatives des vulnérabilités en adoptant des langages tels que Rust en combinaison avec l'utilisation existante et largement répandue de Java, Kotlin et Go lorsque les contraintes de performance le permettent. Nous reconnaissons qu'une transition complète vers ces langages prendra du temps. C'est pourquoi nous investissons également dans des techniques visant à améliorer la sécurité de notre base de code C++ existante, comme le déploiement de libc++ renforcé.

Construisons ensemble un avenir sans danger pour la mémoire

Il ne s'agit pas de désigner des gagnants ou de dicter des solutions. Il s'agit de créer des conditions équitables, de permettre une prise de décision éclairée et d'instaurer un cycle vertueux d'amélioration de la sécurité. Il s'agit d'ouvrir la voie à un avenir où :

  • Les développeurs et les fournisseurs peuvent en toute confiance créer des systèmes plus sûrs, sachant que leurs efforts peuvent être évalués de manière objective.
  • Les entreprises peuvent acheter des produits à mémoire sécurisée avec assurance, réduisant ainsi les risques et protégeant leurs clients.
  • Les gouvernements peuvent protéger efficacement les infrastructures critiques et encourager l'adoption de pratiques sécurisées dès la conception.
  • Les consommateurs peuvent prendre des décisions sur les services dont ils dépendent et les appareils qu'ils utilisent en toute confiance, sachant que la sécurité de chaque option a été évaluée par rapport à un cadre commun.

Le chemin vers la sécurité de la mémoire exige un engagement collectif en faveur de la normalisation. Nous devons construire un avenir où la sécurité de la mémoire n'est pas une réflexion après coup mais un principe fondamental, un avenir où la prochaine génération héritera d'un monde numérique sécurisé dès sa conception.
Dans le cadre d'une campagne plus large en faveur d'une meilleure sécurité de la mémoire, la National Security Agency (NSA) a également exhorté les organisations à adopter des langages de programmation sécurisés dans la gestion de la mémoire afin d'atténuer les vulnérabilités fréquemment exploitées par les cybercriminels. Dans un document d'orientation datant de 2022, l'agence a souligné qu'une mauvaise gestion de la mémoire peut permettre l'exécution de codes non autorisés et la violation de données. Neal Ziring, responsable de la cybersécurité à la NSA, a insisté sur la nécessité d'utiliser systématiquement des pratiques de codage sécurisées pour éliminer ces menaces persistantes.

Source : Google

Et vous ?

Quel est votre avis sur le sujet ?
Trouvez-vous cette initiative de Google crédible ou pertinente ?

Voir aussi :

Sécuriser par la conception : compléter la transition vers des langages à mémoire sûre par des améliorations de la sécurité du code C++ existant, selon Google

Il est urgent de renforcer la sécurité de la mémoire dans les produits logiciels, selon la CISA, l'utilisation d'un langage de programmation à sécurité mémoire comme Rust serait une solution