aslr_cpu

La randomisation de la mise en page de l’espace adresse (ASLR) est une technique de sécurité utilisée dans les systèmes d’exploitation, mise en œuvre pour la première fois en 2001. Les versions actuelles de tous les principaux systèmes d’exploitation (iOS, Android, Windows, macOS et Linux) disposent d’une protection ASLR. Mais la semaine dernière, une nouvelle méthode de contournement de l’ASLR a été trouvée. Alors, devriez-vous vous inquiéter?

Pour ceux qui n’ont pas d’expérience en programmation de bas niveau, ASLR peut être source de confusion. Pour le comprendre, vous devez d’abord comprendre la mémoire virtuelle.

Qu’est-ce que la mémoire virtuelle?

La mémoire virtuelle est une technique de gestion de la mémoire avec de nombreux avantages, mais elle a été principalement créée pour faciliter la programmation. Imaginez que vous ayez Google Chrome, Microsoft Word et plusieurs autres programmes ouverts sur un ordinateur avec 4 Go de RAM. Dans l’ensemble, les programmes de cet ordinateur utilisent beaucoup plus de 4 Go de RAM. Cependant, tous les programmes ne seront pas actifs à tout moment ou n’auront pas besoin d’un accès simultané à cette RAM.

Le système d’exploitation alloue des morceaux de mémoire aux programmes appelés pages. S’il n’y a pas assez de RAM pour stocker toutes les pages à la fois, les pages les moins susceptibles d’être nécessaires sont stockées sur le disque dur plus lent (mais plus spacieux). Lorsque les pages stockées sont nécessaires, elles changent d’espace avec les pages moins nécessaires actuellement dans la RAM. Ce processus est appelé pagination et prête son nom au fichier pagefile.sys sous Windows.

La mémoire virtuelle permet aux programmes de gérer plus facilement leur propre mémoire et les sécurise également. Les programmes n’ont pas besoin de se soucier de l’endroit où les autres programmes stockent les données, ni de la quantité de RAM restante. Ils peuvent simplement demander au système d’exploitation de la mémoire supplémentaire (ou retourner la mémoire inutilisée) si nécessaire. Tout ce que le programme voit est un seul bloc continu d’adresses mémoire pour son usage exclusif, appelé adresses virtuelles. Le programme n’est pas autorisé à consulter la mémoire d’un autre programme.

Lorsqu’un programme doit accéder à la mémoire, il donne au système d’exploitation une adresse virtuelle. Le système d’exploitation contacte l’unité de gestion de mémoire (MMU) du CPU. La MMU se traduit par des adresses virtuelles et physiques, renvoyant ces informations au système d’exploitation. À aucun moment le programme n’interagit directement avec la RAM.

Qu’est-ce que l’ASLR?

La randomisation de la mise en page de l’espace d’adressage (ASLR) est principalement utilisée pour se protéger contre les attaques par dépassement de tampon. Dans un débordement de tampon, les attaquants alimentent une fonction autant de données indésirables qu’elle peut gérer, suivies d’une charge utile malveillante. La charge utile écrasera les données auxquelles le programme a l’intention d’accéder. Les instructions pour passer à un autre point du code sont une charge utile courante. La célèbre méthode JailbreakMe de jailbreaking iOS 4, par exemple, a utilisé une attaque par dépassement de tampon, ce qui a incité Apple à ajouter ASLR à iOS 4.3.

Les débordements de tampon nécessitent qu’un attaquant sache où se trouve chaque partie du programme en mémoire. Comprendre cela est généralement un processus difficile d’essais et d’erreurs. Après avoir déterminé cela, ils doivent fabriquer une charge utile et trouver un endroit approprié pour l’injecter. Si l’attaquant ne sait pas où se trouve son code cible, il peut être difficile voire impossible de l’exploiter.

ASLR fonctionne aux côtés de la gestion de la mémoire virtuelle pour randomiser les emplacements des différentes parties du programme en mémoire. Chaque fois que le programme est exécuté, les composants (y compris la pile, le tas et les bibliothèques) sont déplacés vers une adresse différente dans la mémoire virtuelle. Les attaquants ne peuvent plus savoir où se trouve leur cible par essais et erreurs, car l’adresse sera différente à chaque fois. Généralement, les applications doivent être compilées avec le support ASLR, mais cela devient la valeur par défaut, et est même requis sur Android 5.0 et versions ultérieures.

L’ASLR vous protège-t-il toujours?

Mardi dernier, des chercheurs de SUNY Binghamton et de l’Université de Californie à Riverside ont présenté un article intitulé Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR. Le document détaille un moyen d’attaquer le tampon cible de branche (BTB). Le BTB fait partie du processeur qui accélère les instructions if en prédisant le résultat. En utilisant la méthode des auteurs, il est possible de déterminer les emplacements des instructions de branche connues dans un programme en cours d’exécution. L’attaque en question a été effectuée sur une machine Linux avec un processeur Intel Haswell (sorti pour la première fois en 2013), mais pourrait probablement être appliquée à n’importe quel système d’exploitation et processeur moderne.

Cela dit, vous ne devez pas nécessairement désespérer. Le document proposait plusieurs façons aux développeurs de matériel et de systèmes d’exploitation d’atténuer cette menace. Les nouvelles techniques ASLR à grain fin nécessiteraient plus d’efforts de la part de l’attaquant, et l’augmentation de la quantité d’entropie (caractère aléatoire) peut rendre l’attaque de saut par-dessus impossible. Très probablement, les nouveaux systèmes d’exploitation et processeurs seront à l’abri de cette attaque.

Alors qu’est-ce qui reste vous faire? Le contournement de Jump Over est nouveau et n’a pas encore été repéré dans la nature. Lorsque des attaquants l’exploitent, la faille augmentera les dommages potentiels qu’un attaquant peut causer sur votre appareil. Ce niveau d’accès n’est pas sans précédent; Microsoft et Apple ont uniquement implémenté ASLR dans leurs systèmes d’exploitation publiés en 2007 et versions ultérieures. Même si ce style d’attaque devient courant, vous ne serez pas plus mal loti que vous ne l’étiez à l’époque de Windows XP.

Gardez à l’esprit que les attaquants doivent toujours obtenir leur code sur votre appareil pour faire du mal. Cette faille ne leur fournit aucun moyen supplémentaire de vous infecter. Comme toujours, vous devez suivre les meilleures pratiques de sécurité. Utilisez un antivirus, éloignez-vous des sites Web et des programmes sommaires et gardez votre logiciel à jour. En suivant ces étapes et en gardant les acteurs malveillants hors de votre ordinateur, vous serez aussi en sécurité que jamais.

Crédit d’image: Steve / Flickr

LAISSER UN COMMENTAIRE

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