Les langages de programmation sécurisés pour la mémoire peuvent-ils éliminer 70 % des bugs de sécurité ?

Un homme assis devant un ordinateur

Le Bureau du directeur national de la cybersécurité (ONCD) a récemment publié un nouveau rapport intitulé « Retour aux éléments constitutifs : une voie vers des logiciels sécurisés et mesurables ». Le rapport est l'une des premières annonces importantes du nouveau directeur de l'ONCD, Harry Coker, et plaide fortement en faveur de l'adoption de langages de programmation à mémoire sécurisée.

Cette nouvelle orientation découle de l'objectif de rééquilibrer la responsabilité de la cybersécurité et de réaligner les incitations en faveur des investissements à long terme dans la cybersécurité. Les langages de programmation à sécurité mémoire ont également été inclus dans les objectifs de l'Open-Source Software Security Initiative (OS3I), qui a récemment publié un nouveau rapport.

Que sont les langages de programmation à sécurité mémoire ?

Les bogues de mémoire surviennent lorsqu'un programmeur écrit un code qui provoque un problème lié à l'accès à la mémoire. Des bogues courants se produisent avec des dépassements de tampon et des pointeurs pendants. En utilisant un langage de programmation sûr de la mémoire tel que Rust, Go, Java, Swift et Python, les développeurs ne peuvent pas créer de code qui provoque un bug de mémoire car le langage inclut des propriétés spécifiques telles que la mémoire ou la sécurité des types. Lorsque les développeurs écrivent du code dans des langages non protégés par la mémoire, tels que C et C++, ils peuvent, par inadvertance, écrire du code susceptible de provoquer des erreurs d'accès à la mémoire. Au lieu de détecter les erreurs lors de la compilation et de l'exécution, comme c' est le cas avec les langages à sécurité mémoire, les bogues se retrouvent dans la version finale et causent des problèmes de sécurité.

Si la cybersécurité se concentre souvent sur la réaction aux menaces, la réduction des risques commence par la mise en place de pratiques qui réduisent les erreurs de code susceptibles de créer des problèmes de sécurité. Google Il a été rapporté que 70 % des failles de sécurité graves sont en réalité des problèmes de sécurité de la mémoire. Les langages de programmation largement utilisés, tels que C et C++, sont souvent à l'origine de nombreux problèmes, notamment en raison d'erreurs de pointeur.

L'utilisation d'un langage à sécurité mémoire réduit considérablement, voire élimine totalement, les vulnérabilités liées à la sécurité mémoire. Cela réduit à son tour le risque lié à la cybersécurité du code final. Outre l'amélioration de la sécurité, les langages à mémoire sécurisée réduisent également les pannes et permettent aux développeurs d'accroître leur productivité car ils n'ont pas à se préoccuper des problèmes de gestion de la mémoire.

Les dernières actualités technologiques, étayées par des avis d’experts

Restez au fait des tendances les plus étonnantes du secteur dans le domaine de l’IA, de l’automatisation, des données et bien d’autres avec la newsletter Think. Consultez la Déclaration de confidentialité d’IBM.

Merci ! Vous êtes abonné(e).

Vous recevrez votre abonnement en anglais. Vous trouverez un lien de désabonnement dans chaque newsletter. Vous pouvez gérer vos abonnements ou vous désabonner ici. Consultez la Déclaration de confidentialité d’IBM pour plus d’informations.

Le rapport de l'ONCD présente deux objectifs liés aux langages à mémoire sécurisée

La réduction des bogues de mémoire est une question complexe qui nécessite une approche à plusieurs volets. Le rapport vise à inciter les entreprises à se concentrer sur deux domaines spécifiques liés aux langages sécurisés par la mémoire. Par ailleurs, le gouvernement souhaite privilégier la création de partenariats avec la communauté technique, notamment les ingénieurs et les développeurs, afin de collaborer à cette transition essentielle.

Voici les deux principaux objectifs décrits dans la fiche d'information publiée avec le rapport :

1. Réduction de la surface d’attaque dans le cyberespace

Une zone d'attaque plus petite réduit les risques. Chaque ligne de code qui crée des vulnérabilités élargit considérablement la surface d'attaque. Une seule erreur provoquant une erreur de sécurité de la mémoire peut créer un grand nombre de vulnérabilités. Le rapport recommande l'utilisation d'un langage de programmation sans risque pour la mémoire comme l'un des moyens les plus efficaces de réduire la surface d'attaque. Avec ces langages, les programmeurs ne peuvent pas commettre les erreurs qui permettent d'augmenter la surface d'attaque en raison de bugs de mémoire.

2. Anticiper le risque de sécurité systémique

De nombreuses entreprises ne sont pas en mesure d'évaluer avec précision les risques liés à leurs logiciels, car il est extrêmement difficile d'utiliser des indicateurs sur des logiciels en constante évolution. Bien que la mesurabilité des logiciels soit un défi complexe, il convient de passer d’une approche réactive à une approche proactive. En développant de meilleurs diagnostics de cybersécurité, les Entreprises peuvent identifier avec plus de précision les risques et y remédier de manière proactive.

Mixture of Experts | 12 décembre, épisode 85

Décryptage de l’IA : Tour d’horizon hebdomadaire

Rejoignez notre panel d’ingénieurs, de chercheurs, de chefs de produits et autres spécialistes de premier plan pour connaître l’essentiel de l’actualité et des dernières tendances dans le domaine de l’IA.

La réalité de la transition vers la sécurité en mémoire

S’il est facile de dire aux organisations qu’elles doivent utiliser des langages sécurisés par la mémoire, la réalité est que cette transition est compliquée. De nombreux logiciels et bibliothèques sont basés sur des langages non sûrs pour la mémoire, et la réécriture complète de l'ensemble du code n'est souvent pas possible.

Dans la mesure du possible, lancer un nouveau projet avec un langage de programmation sécurisé en mémoire est le moyen le plus simple d’entamer la transition. Les organisations peuvent également réduire la surface d’attaque sans réécriture totale en ne réécrivant que les fonctions et bibliothèquescritiques les plus exposées à des bugs sûrs en mémoire, ce qui inclut souvent des zones avec des débordements de tampons et des pointeurs suspendus. Certains langages sans protection en mémoire, comme Rust et Swift, sont interopérables avec C et C++, rendant cette approche réalisable. En adoptant cette approche, les organisations doivent intégrer les systèmes de construction et créer des abstractions dans le nouveau langage pour les objets et les données partagés.

Toutefois, cette transition nécessite des ressources de développement adéquates. Les organisations doivent commencer par évaluer leur équipe de développeurs actuelle pour déterminer leur expertise en matière de langages sécurisés pour la mémoire. L'étape suivante consiste à former les développeurs actuels et à s'assurer que les nouveaux développeurs maîtrisent les langages à mémoire sécurisée.

Aller de l’avant avec des langages de programmation sécurisés pour la mémoire

Avec l'attention accrue portée à la cybersécurité, de nombreuses Entreprises réalisent que l'étape la plus importante consiste à passer d'une approche réactive à une approche proactive. En reprenant les choses depuis le début et en se concentrant sur la création d'un code sécurisé, les entreprises peuvent réduire considérablement leurs risques. Bien qu'il ne s'agisse pas d'un processus simple ou rapide, les avantages de ce changement sont significatifs et durables.