Chrome : 70 % des failles viennent de problèmes de gestion de la mémoire

Spread the love

Environ 70 % des failles de sécurité graves dans la base de code de Chrome sont liés à la gestion de la mémoire ont déclaré récemment les ingénieurs de Google.

La moitié de ces 70 % sont des vulnérabilités de type “use-after-free”, un type de problème de sécurité qui résulte d’une gestion incorrecte des pointeurs mémoire (memory pointers), laissant les portes grandes ouvertes aux pirates pour attaquer les composants internes de Chrome.

chrome-memory-bugs.png

Image : Google

Ce pourcentage a été compilé après que les ingénieurs de Google aient analysé 912 bugs de sécurité corrigés dans la branche stable de Chrome depuis 2015, des bugs qui avaient des niveaux de gravité qualifiés de “élevé” ou “critique”.

Le nombre est identique aux statistiques partagées par Microsoft. Lors d’une conférence sur la sécurité en février 2019, les ingénieurs de Microsoft ont déclaré qu’au cours des 12 dernières années, environ 70 % de toutes les mises à jour de sécurité pour les produits Microsoft ont traité des vulnérabilités de sécurité de la mémoire.

publicité

Le problème sans fin de la gestion de la mémoire

Les deux sociétés sont confrontées au même problème, à savoir que le C et le C++, les deux langages de programmation prédominants dans leurs bases de code, sont des langages “peu sûrs”.

Il s’agit d’outils de programmation anciens, créés il y a plusieurs décennies, à une époque où les cyber-attaques ne constituaient pas une menace pertinent étaient loin d’être présentes à l’esprit de la plupart des premiers développeurs de logiciels.

Par conséquent, le C et le C++ permettent aux programmeurs de contrôler entièrement la manière dont ils gèrent les pointeurs mémoire (adresses) d’une application et ne sont pas assortis de restrictions ou d’avertissements pour stopper ou alerter les développeurs lorsqu’ils commettent des erreurs de gestion de la mémoire.

Ces premières erreurs de codage entraînent l’introduction de vulnérabilités dans la gestion de la mémoire des applications. Et cela inclut des vulnérabilités de type use-after-free, buffer overflow, race conditions, double free, wild pointers, et bien d’autres.

Ces vulnérabilités de gestion de la mémoire sont les failles les plus recherchées par les pirates, car elles peuvent leur accorder la possibilité d’implanter du code dans la mémoire d’un appareil et de le faire exécuter par l’application victime (navigateur, serveur, OS, etc.).

Dans un classement publié au début de l’année, la MITRE Corporation, l’organisation qui gère la base de données des vulnérabilités du gouvernement américain, a classé le dépassement de tampon (buffer overflow) comme la vulnérabilité la plus dangereuse, avec deux autres problèmes liés à la gestion de la mémoire également classés dans le top 10 (out-of-bound read en position numéro 5 et use-after-free en position numéro 7).

Au fur et à mesure que le génie logiciel a progressé, les développeurs se sont améliorés afin d’éliminer la plupart des failles de sécurité et d’ajouter des protections de sécurité. Mais pas pour les vulnérabilités de la gestion de la mémoire.

Google va chercher à résoudre les bogues de mémoire de Chrome

Google affirme que depuis mars 2019, 125 des 130 vulnérabilités de Chrome ayant un niveau de gravité “critique” sont des problèmes liés à la corruption de la mémoire, ce qui montre que malgré les progrès réalisés dans la correction d’autres classes de bugs, la gestion de la mémoire reste un problème.

Le problème des bugs de gestion de la mémoire est tellement important chez Google que les ingénieurs de Chrome doivent maintenant suivre “La règle du 2“.

Selon cette règle, chaque fois que les ingénieurs écrivent une nouvelle fonctionnalité pour Chrome, leur code ne doit pas enfreindre plus de deux des conditions suivantes :

  • Le code traite les entrées non fiables
  • Le code fonctionne sans bac à sable
  • Le code est écrit dans un langage de programmation dangereux (C/C++)

rule-of-two.png

Image : Google

De nombreux éditeurs de logiciels ont essayé de résoudre les problèmes de gestion de la mémoire en C et C++. Mais c’est Mozilla qui a fait une percée en parrainant, promouvant et adoptant massivement le langage de programmation Rust dans Firefox.

Aujourd’hui, Rust est considéré comme l’un des langages de programmation les plus sûrs, et un remplacement idéal du C et du C++, principalement grâce aux efforts de Mozilla. Mais Mozilla n’est pas la seule organisation à en avoir assez de traiter du code C et C++ sujet aux bugs.

Microsoft investit également beaucoup dans l’exploration d’alternatives à C et C++. Depuis son projet Checked C, la société expérimente maintenant Rust, et construit également son propre langage de programmation “sûr” semblable à Rust (qui fait partie du Projet secret Verona).

Lors de la conférence virtuelle Build la semaine dernière, Microsoft a déclaré que ces deux efforts sont couronnés de succès, et la société s’est redéployée pour adopter un langage de programmation sûr à l’avenir.

Mais cette semaine, Google a également annoncé des plans similaires. L’entreprise a déclaré qu’elle envisageait également de “s’attaquer au problème de l’insécurité de la mémoire” pour Chrome, le navigateur web le plus populaire aujourd’hui, utilisé par près de 70 % des internautes.

Chrome a donné son maximum

Jusqu’à aujourd’hui, les ingénieurs de Google ont été d’ardents défenseurs de l’approche “bac à sable” dans Chrome. Ils ont isolé des dizaines de processus dans leur propre sand box, et ont récemment déployé Site Isolation, une fonctionnalité qui permet de mettre les ressources de chaque site dans son propre processus de bac à sable.

Cependant, les ingénieurs de Google affirment que leur approche sand box des composants de Chrome a atteint son maximum d’avantages en tenant compte des performances, et que l’entreprise doit maintenant se tourner vers de nouvelles approches.

À l’avenir, Google prévoit de développer des bibliothèques C++ personnalisées à utiliser avec la base de code de Chrome, des bibliothèques qui offrent une meilleure protection contre les bugs liés à la mémoire.

Le fabricant du navigateur explore également le projet MiraclePtr, qui vise à transformer “les bugs use-after-free exploitables en crash sans impact sur la sécurité avec des performances, une mémoire, une taille de binaire et un impact sur la stabilité acceptables”.

Enfin, Google a également déclaré envisager d’utiliser des langages “sûrs” dans la mesure du possible. Parmi les candidats figurent Rust, Swift, JavaScript, Kotlin et Java.

Leave a Reply