Qu'est-ce que ASLR et comment protège-t-il votre ordinateur?
La randomisation du format d'espace d'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) offrent une protection ASLR. Mais la semaine dernière, une nouvelle méthode de contournement de l'ASLR a été trouvée. Alors, si vous êtes inquiet?
ASLR peut être déroutant pour ceux qui ne possèdent pas de formation en programmation de bas niveau. 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 qui présente de nombreux avantages, mais elle a été créée principalement pour faciliter la programmation. Imaginez que Google Chrome, Microsoft Word et plusieurs autres programmes s’ouvrent sur un ordinateur doté de 4 Go de RAM. Dans l’ensemble, les programmes de cet ordinateur utilisent bien plus de 4 Go de RAM. Cependant, tous les programmes ne seront pas toujours actifs, ni nécessiteront un accès simultané à cette mémoire vive..
Le système d’exploitation alloue des morceaux de mémoire aux programmes appelés des 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 le plus lent (mais le plus spacieux). Lorsque les pages stockées sont nécessaires, ils commutent les espaces avec moins de pages nécessaires actuellement dans la RAM. Ce processus s'appelle pagination et donne son nom au fichier pagefile.sys sous Windows..
La mémoire virtuelle permet aux programmes de gérer plus facilement leur propre mémoire, mais aussi de la sécuriser. Les programmes n'ont pas besoin de s'inquiéter de l'endroit où d'autres programmes stockent des 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 renvoyer de la mémoire inutilisée) si nécessaire. Tout ce que le programme voit est un seul bloc continu d'adresses de 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 la mémoire (MMU) de la CPU. La MMU effectue la traduction entre les adresses virtuelle et physique et renvoie ces informations au système d'exploitation. A aucun moment le programme n'interagit directement avec la RAM.
Qu'est-ce que l'ASLR??
La randomisation du format d'espace d'adressage (ASLR) est principalement utilisée pour se protéger contre les attaques par dépassement de mémoire tampon. En cas de dépassement de capacité de la mémoire tampon, les attaquants alimentent une fonction avec autant de données indésirables qu’elle peut en gérer, suivie d’une charge 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 constituent une charge utile courante. La célèbre méthode JailbreakMe de jailbreaker iOS 4, par exemple, utilisait une attaque par dépassement de mémoire tampon, invitant Apple à ajouter ASLR à iOS 4.3..
Les débordements de mémoire tampon nécessitent qu'un attaquant sache où chaque partie du programme se trouve en mémoire. Comprendre cela est généralement un processus difficile d’essais et d’erreur. Après avoir déterminé cela, ils doivent créer 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 travaille 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 les versions ultérieures..
Ainsi, ASLR vous protège toujours?
Mardi dernier, des chercheurs de SUNY Binghamton et de l’Université de Californie à Riverside ont présenté un article intitulé «Jump Over ASLR»: «L’attaque des prédicteurs de branches pour contourner l’ASLR». Le document détaille une manière d’attaquer le tampon de cible de branche (BTB). Le BTB fait partie du processeur qui accélère les déclarations en prédisant le résultat. En utilisant la méthode de l'auteur, il est possible de déterminer l'emplacement des instructions de branche connues dans un programme en cours d'exécution. L'attaque en question a été réalisée sur une machine Linux avec un processeur Intel Haswell (publié pour la première fois en 2013), mais pourrait probablement être appliquée à tout système d'exploitation et processeur modernes..
Cela dit, vous ne devriez pas nécessairement désespérer. Le document propose aux développeurs de systèmes d’exploitation et de systèmes d’exploitation plusieurs moyens d’atténuer cette menace. Les nouvelles techniques ASLR à grain fin nécessiteront plus d’efforts de la part de l’attaquant, et une augmentation de la quantité d’entropie (caractère aléatoire) peut rendre l’attaque Jump Over irréalisable. Très probablement, les nouveaux systèmes d'exploitation et processeurs seront à l'abri de cette attaque..
Alors, que reste-t-il pour vous faire? Le contournement Jump Over est nouveau et n'a pas encore été aperçu à l'état sauvage. Lorsque des attaquants l'exploitent, la faille augmente 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 plus tard. Même si ce type d'attaque devient monnaie courante, vous ne serez pas moins bien loti que sous Windows XP.
Gardez à l'esprit que les pirates doivent toujours avoir 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 peu précis et maintenez votre logiciel à jour. En suivant ces étapes et en protégeant les ordinateurs malveillants de votre ordinateur, vous serez aussi en sécurité que vous n’avez jamais été..
Crédit d'image: Steve / Flickr