Cinq chercheurs de l'Université de Vrije aux Pays-Bas ont mis en place une attaque via JavaScript capable de contourner la protection ASLR sur au moins 22 microarchitectures de processeur de fournisseurs tels que Intel, AMD, ARM, Allwinner, Nvidia et bien d'autres.
L’Address Space Layout Randomization (ASLR) ou distribution aléatoire de l'espace d'adressage est un mécanisme de protection de la mémoire déployé avec tous les principaux systèmes d'exploitation. Il s'agit en quelque sorte d'une première ligne de défense contre les attaquants ciblant les internautes. L'ASLR rend en effet aléatoire l'emplacement du code et des données d'une application dans l'espace d'adressage virtuel afin de rendre plus difficile pour les attaquants de voler ou manipuler les données ou réutiliser le code afin de compromettre l'application.
L'attaque mise au point par les chercheurs, baptisée ASLR⊕Cache ou AnC, se concentre sur l'unité de gestion de mémoire (MMU pour memory management unit), un composant de nombreuses microarchitectures de CPU, chargé d'améliorer les performances des opérations de gestion de cache.
Une unité de gestion mémoire permet de contrôler les accès d'un processeur à la mémoire de l'ordinateur dans lequel elle est placée. Son utilisation la plus courante et connue est la protection de plages mémoire. Un programme donné ne doit pas pouvoir accéder (en lecture ou écriture) à la mémoire utilisée par un autre programme, voire par le système d'exploitation lui-même. D'une manière simple, chaque programme exécuté par le système d'exploitation se voit attribuer une zone mémoire protégée, dans laquelle aucun autre programme ne peut écrire. Ce principe de protection mémoire est la caractéristique la plus cruciale pour bénéficier d'un système d'exploitation stable.
« L'unité de gestion de mémoire (MMU) des processeurs modernes utilise la hiérarchie de cache du processeur afin d'améliorer la performance des déplacements de tables de pages. Ceci est fondamental pour l'exécution efficace du code dans les processeurs modernes », expliquent les chercheurs. « Malheureusement, cette hiérarchie de cache est également partagée par des applications non fiables, telles que du code JavaScript exécuté dans le navigateur », ajoutent-ils. Cela signifie qu'il est possible pour des attaquants d'envoyer du code JavaScript malveillant ciblant spécifiquement cet espace mémoire partagé et tenter de lire son contenu. C'est d'ailleurs ce qu'ont fait les chercheurs en mettant au point une attaque par canal auxiliaire, et plus précisément, une attaque de cache EVICT+TIME.
Dans le domaine de la sécurité informatique, une attaque par canal auxiliaire (Side channel attack) désigne une attaque informatique qui, sans remettre en cause la robustesse théorique des méthodes et procédures de sécurité, recherche et exploite des failles dans leur implémentation, logicielle ou matérielle. La technique de l’EVICT+TIME fait partie des méthodes d'attaque par canal auxiliaire, en particulier, celles qui visent les caches L1 et L2 et qui se basent que sur la mesure de leur activité.
Cette attaque AnC peut contourner la protection ASLR et permettre à l'attaquant de lire des portions de la mémoire de l'ordinateur, qu'il pourrait ensuite utiliser pour lancer des exploits plus complexes et augmenter l'accès à l'ensemble du système d'exploitation. En contournant ce mécanisme de protection, un attaquant va savoir où le code s'exécute et préparer une attaque qui cible la même zone de la mémoire, pour voler des informations sensibles stockées dans la mémoire du PC.
Les chercheurs ont testé avec succès les attaques JavaScript AnC via Chrome et Firefox sur 22 modèles de processeurs et microarchitectures, même en dépit de plusieurs protections intégrées à ces navigateurs.
Il faut préciser que d'autres microarchitectures pourraient également être vulnérables, car toutes n'ont pas été testées. Les chercheurs s'inquiètent encore du fait que ces attaques AnC peuvent être utilisées pour redonner vie à des attaques de cache que les fournisseurs pensaient avoir atténuées. La seule façon pour les utilisateurs de se protéger contre ces attaques AnC est d'utiliser des extensions comme NoScript qui empêchent l'exécution de code JavaScript non approuvé dans le navigateur.
Sources : VUSec, ASLR on the Line: Practical Cache Attacks on the MMU, Reverse Engineering Hardware Page Table Caches Using Side-Channel Attacks on the MMU
Et vous ?
Qu’en pensez-vous ?
Une attaque JavaScript ciblant les unités de gestion de mémoire permet de contourner la protection ASLR
Sur au moins 22 microarchitectures de CPU
Une attaque JavaScript ciblant les unités de gestion de mémoire permet de contourner la protection ASLR
Sur au moins 22 microarchitectures de CPU
Le , par Michael Guilloux
Une erreur dans cette actualité ? Signalez-nous-la !