vendredi 26 janvier 2018

A.S.L.R., mais qu'est-ce donc que cela ?

 
Spectre et Meltdown font depuis quelques semaines les choux gras de la presse spécialisée et même de la presse généraliste, mais ces failles importantes ne doivent pas faire oublier qu'il y a d'autres menaces. Ainsi, quelques mois auparavant, un autre souci avait été mis à jour qui concernait une protection implémentée par Microsoft, nommée l'A.S.L.R. Je n'avais pas jugé utile d'en faire un billet, mais avec le recul je me dis que cela peut servir finalement.

Nous allons cette fois-ci lorgner du côté de la mémoire virtuelle. Pour résumer très simplement disons qu'afin de se prémunir de certains types d'attaques (notamment celles de type buffer overflow – dépassement de tampon), les données qui y sont stockées le sont de manière aléatoire.

Rentrons un peu plus dans le détail en expliquant succinctement le fonctionnement de la mémoire virtuelle. Imaginons que nous soyons équipés d'un PC doté de 4 Go de mémoire vive et que nous lançions plusieurs applications simultanément, c'est un scénario très courant de nos jours. Que se passe-t-il si ces applications n'ont plus suffisamment de mémoire vive pour fonctionner ? Elles utilisent alors ce qui est sous Windows appelé mémoire virtuelle, soit un espace réservé sur le disque dur ou le SSD et qui vient épauler la mémoire vive dès lors qu'elle est saturée. Le fait est que les applications vont toujours aller se loger dans la mémoire virtuelle de la même manière, ce qui peut faciliter la réalisation d'une attaque. L'A.S.L.R. (Address Space Layout Randomization ou distribution aléatoire de l'espace d'adressage) rentre alors en jeu. Comme son nom l'indique, elle fait en sorte de rendre aléatoire le placement des informations dans la mémoire virtuelle.

Cette fonctionnalité existe depuis pas mal de temps, aussi bien sous Linux que sous Open BSD, sous MacOS X mais aussi bien sûr sous Windows, depuis 2007 avec Vista. Aujourd'hui et par défaut l'A.S.L.R. fonctionne mais pas de manière aussi complète que sur les systèmes précédents. Microsoft soutient que ce n'est pas un bug. Nous n'allons pas rentrer dans le débat. Voici un tableau qui montre comment cela fonctionnait avant (sous Windows Vista et Windows 7) et comment cela fonctionne maintenant (sous Windows 8.x et Windows 10) :


Il est heureusement possible de retrouver le fonctionnement initial en apportant une modification dans la base de registres. Et nous allons faire pour cela un fichier *.reg afin d'apporter ladite modification. Dans un premier temps, ouvrons le bloc-notes (<Touche Windows> + <R>, tapons notepad dans la zone de saisie puis validons en appuyant sur <Entrée>). Une fois le bloc-notes ouvert, il va falloir y copier le texte suivant :


Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
"MitigationOptions"=hex:00,01,01,00,00,00,00,00,00,00,00,00,00,00,00,00


Enregistrons ensuite le fichier. Pour cela, aller dans Fichier puis cliquer sur Enregistrer sous... Une fenêtre de l'explorateur s'ouvre et après avoir sélectionné l'endroit où l'on souhaite enregistrer le fichier, il faut prendre soin  de sélectionner l'option Tous les fichiers (*.*) dans la liste déroulante Type :. En effet c'est ce réglage qui permet d'enregistrer un fichier dans un format autre que le format *.txt par défaut. Appelons le fichier ASLR-Fix.reg par exemple (il faut bien spécifier l'extension lors de la saisie).

Il ne reste plus qu'à double-cliquer sur le fichier créé afin de fusionner les informations qu'il contient avec la base de registres.


Sources : ZDNet, HowToGeek

Aucun commentaire:

Enregistrer un commentaire