Microsoft: voici comment nous éliminons une classe de bogues de sécurité de la mémoire dans Windows 10

  • Sep 07, 2023

Microsoft détaille une nouvelle fonctionnalité de sécurité de Windows 10 qui fait planter les PC exécutant des jeux utilisant un logiciel anti-triche.

Microsoft a détaillé comment il a modifié Windows 10 pour éliminer une classe de bogues de mémoire appelés non initialisés vulnérabilités de mémoire utilisant une nouvelle fonctionnalité de sécurité qui a tourmenté les utilisateurs de jeux utilisant un anti-triche logiciel.

Microsoft a j'ai expérimenté avec Rust pour certains composants Windows écrits en C et C++ afin d'éliminer les bogues liés à la mémoire, qui représentent environ 70 % de tous les correctifs livrés par Microsoft au cours de la dernière décennie.

Windows 10

  • Windows 10 est-il trop populaire pour son propre bien?
  • Comparaison des meilleurs ordinateurs portables Windows
  • Comment récupérer des fichiers supprimés sous Windows 10 ou 11
  • Voici comment vous pouvez toujours obtenir une mise à niveau gratuite de Windows 10
  • Configuration de Windows 11: quel type de compte utilisateur choisir?
  • Comment exécuter une application Windows sur Linux avec Wine

Un type de bug de mémoire concerne les vulnérabilités de mémoire non initialisées qui, selon Microsoft, ont été tendance à la hausse ces dernières années et représentait environ 5 à 10 % de toutes les failles Windows corrigées entre 2017 et 2018.

Le Vulnérabilité au cœur brisé dans la bibliothèque de logiciels OpenSSL pour les serveurs Web HTTPS était un exemple de ce type de bug, qui provoquait clés de chiffrement privées à stocker dans une mémoire non initialisée et permettait donc à un attaquant de les récupérer.

Pour remédier aux vulnérabilités de la mémoire non initialisée dans Windows, Microsoft a lancé un projet appelé InitAll, qui est désormais activé pour tout le code en mode noyau, le code Hyper-V et le mode utilisateur lié au réseau prestations de service. InitAll a été livré pour la première fois avec Windows 10 version 1903 au printemps 2019.

Ce type de bug de mémoire pose un défi pour les produits dotés de bases de code volumineuses, en partie à cause de la conception du C et du C++.

Joe Bialek, ingénieur en sécurité au Microsoft Security Response Center (MSRC), noté dans une récente conférence il est "extrêmement difficile" d'exclure qu'un bug de mémoire non initialisé n'ait pas d'impact sur la sécurité.

Ce type de bug de mémoire peut être détecté à l'aide de processus couramment utilisés, mais Bialek affirme que l'analyse statique ne peut pas trouver tout, le fuzzing ne peut pas identifier tous les bogues de ce type, et la révision manuelle du code n'est pas évolutive et est sujette à erreur.

InitAll de Microsoft initialise automatiquement les variables de pile à zéro pour résoudre les problèmes causés par C et C++.

Comme Bialek explique dans un nouveau billet de blog, la conception du C et du C++ n'empêche pas les développeurs d'utiliser de manière incorrecte des variables non initialisées, ce qui peut introduire des vulnérabilités de divulgation de mémoire non initialisée et une utilisation de la mémoire non initialisée.

"Les langages de programmation C et C++ ont été conçus en gardant à l'esprit les performances et le contrôle des développeurs. Dans ce cadre, le langage n’a aucune application autour de l’initialisation des variables. L'utilisation de variables non initialisées est un comportement indéfini. Les développeurs doivent initialiser les variables avant de les utiliser et c'est à eux de bien faire les choses", explique-t-il.

Microsoft a d'abord ciblé InitAll en mode noyau en raison du grand nombre de mémoire noyau non initialisée. vulnérabilités qui l'affectent, tandis que le code Hyper-V a été priorisé en raison de la récente divulgation d'informations sur la pile insectes.

Il n'a pas encore déployé la fonctionnalité dans tout le code Windows en raison du risque de provoquer des problèmes de performances dans Windows 10, mais il commence maintenant à l'appliquer plus largement.

"La raison pour laquelle nous n'avons pas immédiatement déployé InitAll pour tout le code était de garantir que nous pourrions réussir à faire quelque chose plutôt que d'échouer en essayant de tout faire", a-t-il noté.

"Maintenant que nous avons déployé avec succès la technologie vers les cibles les plus prioritaires, nous pouvons nous concentrer sur le reste de notre code."

Il est intéressant de noter que les problèmes de longue date que pose le les dernières versions de Windows 10 ont eu un logiciel anti-triche provient d'InitAll.

"Peu de temps après avoir activé InitAll dans Windows, nous avons reçu des plaintes selon lesquelles certains logiciels anti-triche provoquaient des plantages du noyau", explique Bialek.

"Les enquêtes ont révélé que ces solutions anti-triche incluaient des pilotes en mode noyau. Ces pilotes analysaient l'image du noyau NT en mémoire et recherchaient des modèles d'octets pour localiser les fonctions non documentées. La façon dont ces modèles fonctionnent consiste à rechercher des modèles d'octets spécifiques indiquant le début de la fonction.

"Lorsque InitAll a été activé, des initialisations supplémentaires (qui ne pouvaient pas être prouvées) ont été ajoutées au début de ces fonctions, ce qui a effectivement modifié leur signature. Nous avons contacté ces sociétés anti-triche et elles ont mis à jour leurs pilotes pour arrêter de provoquer des plantages du noyau. »

Plus de Microsoft

Windows 10 est-il trop populaire pour son propre bien?
Les meilleurs modèles d'ordinateurs portables Windows: comparaison de Dell, Samsung, Lenovo et plus
Voici pourquoi les PC Windows vont devenir encore plus ennuyeux
Comment passer de Windows 11 à Windows 10 (il y a un problème)
  • Windows 10 est-il trop populaire pour son propre bien?
  • Les meilleurs modèles d'ordinateurs portables Windows: comparaison de Dell, Samsung, Lenovo et plus
  • Voici pourquoi les PC Windows vont devenir encore plus ennuyeux
  • Comment passer de Windows 11 à Windows 10 (il y a un problème)