LPCC

L'Agence américaine de cybersécurité et de sécurité des infrastructures (CISA) a publié une étude examinant 172 projets open source clés et s'ils sont sensibles aux failles de mémoire.

Le rapport, cosigné par la CISA, le Federal Bureau of Investigation (FBI), ainsi que par des organisations australiennes (ASD, ACSC) et canadiennes (CCCS), fait suite au 'Plaidoyer en faveur de feuilles de route pour une mémoire sécurisée' publié en décembre 2023, visant à sensibiliser à l'importance d'un code sécurisé en mémoire.

Sécurité de la mémoire

Les langages sécurisés en mémoire sont des langages de programmation conçus pour éviter les erreurs courantes liées à la mémoire, telles que les débordements de mémoire tampon, l'utilisation après libération et d'autres types de corruption de la mémoire.

Publicité

Ils y parviennent en gérant automatiquement la mémoire au lieu de compter sur le programmeur pour mettre en œuvre des mécanismes sécurisés d’allocation et de désallocation de mémoire.

Un exemple moderne de système linguistique sûr est le vérificateur d'emprunt de Rust, qui élimine les courses aux données. D'autres langages comme Golang, Java, C# et Python gèrent la mémoire via le garbage collection, récupérant automatiquement la mémoire libérée pour empêcher toute exploitation.

Les langages présentant un risque de mémoire sont ceux qui ne fournissent pas de mécanismes de gestion de mémoire intégrés, ce qui impose au développeur cette responsabilité et augmente le risque d'erreurs. Des exemples de tels cas sont C, C++, Objective-C, Assembly, Cython et D.

Code open source largement utilisé et dangereux

Le rapport présente des recherches examinant 172 projets open source largement déployés, révélant que plus de la moitié contiennent du code dangereux pour la mémoire.

Les principales conclusions présentées dans le rapport sont résumées comme suit :

  • 52 % des projets open source critiques analysés contiennent du code écrit dans des langages peu sécurisés en termes de mémoire.
  • 55 % du total des lignes de code (LoC) de ces projets sont écrites dans des langages non sécurisés en termes de mémoire.
  • Les projets les plus importants sont écrits de manière disproportionnée dans des langages peu sécurisés en termes de mémoire.
  • Sur les dix plus grands projets en termes de LoC totale, chacun a une proportion de LoC non sécurisée pour la mémoire supérieure à 26 %.
  • La proportion médiane de LoC à mémoire non sécurisée dans ces grands projets est de 62,5 %, avec quatre projets dépassant 94 %.
  • Même les projets écrits dans des langages à mémoire non sécurisée dépendent souvent de composants écrits dans des langages à mémoire non sécurisée.

Quelques exemples notables de l'ensemble examiné sont Linux (taux de code non sécurisé 95 %), Tor (taux de code non sécurisé 93 %), Chromium (taux de code non sécurisé 51 %), MySQL Server (taux de code non sécurisé 84 %), glibc (ratio 85 %). Redis (ratio 85 %), SystemD (65 %) et Electron (47 %).

Résumé des conclusions
Résumé des conclusions Source : CISA

La CISA explique que les développeurs de logiciels sont confrontés à de multiples défis qui les obligent souvent à utiliser des langages non sécurisés en termes de mémoire, tels que les contraintes de ressources et les exigences de performances.

Cela est particulièrement vrai lors de la mise en œuvre de fonctionnalités de bas niveau telles que les fonctions de réseau, de cryptographie et de système d'exploitation.

« Nous avons observé que de nombreux projets open source critiques sont partiellement écrits dans des langages à mémoire non sécurisée et une analyse limitée des dépendances indique que les projets héritent du code écrit dans des langages à mémoire non sécurisée via des dépendances. » explique CISA dans le rapport.

« Lorsque les contraintes de performances et de ressources sont des facteurs critiques, nous avons constaté et prévoyons l'utilisation continue de langages non sécurisés en termes de mémoire. »

L'agence souligne également le problème des développeurs qui désactivent les fonctionnalités de sécurité de la mémoire, soit par erreur, soit volontairement, pour répondre à des exigences spécifiques, ce qui entraîne des risques même en utilisant des éléments de base théoriquement plus sûrs.

En fin de compte, CISA recommande aux développeurs de logiciels d'écrire du nouveau code dans des langages sécurisés en mémoire tels que Rust, Java et GO et de transférer les projets existants, en particulier les composants critiques, vers ces langages.

En outre, il est recommandé de suivre des pratiques de codage sûres, de gérer et d'auditer soigneusement les dépendances et d'effectuer des tests continus, notamment une analyse statique, une analyse dynamique et des tests fuzz, pour détecter et résoudre les problèmes de sécurité de la mémoire.

5/5 - (137 votes)
Publicité
Article précédentFrore dévoile l'AirJet Mini Sport étanche pour smartphones
Article suivantQui a créé Fortnite, quelle est la valeur nette de Tim Sweeney et combien d'argent Battle Royale rapporte-t-il ? – Le Soleil américain
Avatar
Violette Laurent est une blogueuse tech nantaise diplômée en communication de masse et douée pour l'écriture. Elle est la rédactrice en chef de fr.techtribune.net. Les sujets de prédilection de Violette sont la technologie et la cryptographie. Elle est également une grande fan d'Anime et de Manga.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici