ASLR
Qu'est-ce que ASLR ?
ASLRLa randomisation de l'espace d'adressage place aléatoirement en mémoire le code, les piles, les tas et les bibliothèques afin qu'un attaquant ne puisse pas prédire de façon fiable les adresses cibles de ses exploits.
ASLR est une mitigation défensive qui randomise les adresses de base des régions clés d'un processus — l'exécutable, les bibliothèques partagées, le tas, la pile et la zone mmap — à chaque exécution d'un programme. Elle a été mise au point par le projet PaX en 2001, intégrée à la branche principale du noyau Linux en 2005 (2.6.12), et équipe désormais Windows (depuis Vista), macOS, iOS et Android. En rendant la disposition mémoire imprévisible, ASLR force l'attaquant à fuir d'abord une adresse avant de monter des attaques de réutilisation de code comme ROP ou ret2libc.
Sa robustesse dépend de l'entropie : les systèmes 32 bits n'exposent que ~8–16 bits, une valeur si faible que l'étude de Shacham en 2004 a pu casser par force brute les processus enfants d'Apache en quelques minutes, alors que Linux 64 bits offre plus de 28 bits d'entropie sur mmap. La couverture compte tout autant : une seule bibliothèque non-PIE, ou un binaire exécuté avec une pile illimitée (ADDR_NO_RANDOMIZE, durci via CVE-2016-3672), laisse un point d'ancrage fixe. En 2014, l'attaque offset2lib de Marco-Gisbert et Ripoll a montré que GNU/Linux mappait l'exécutable PIE adjacent à ses bibliothèques, de sorte qu'une seule adresse applicative fuitée dé-randomisait toutes les bibliothèques à un offset constant — mettant en échec l'ASLR complet, NX et les canaris de pile en moins d'une seconde. Le correctif a séparé la base de l'exécutable de mmap_base.
ASLR n'est jamais autonome : associez-le à DEP/NX, aux canaris de pile et à l'intégrité du flux de contrôle (CFI), et rappelez-vous que toute primitive fiable de fuite d'information le fait s'effondrer entièrement.
flowchart TD
E[exec / chargement du programme] --> R{ASLR active?}
R -->|No| F[Adresses fixes et previsibles]
R -->|Yes| RND[Randomiser la base de pile, tas, mmap, PIE, bibliotheques]
RND --> ENT{Entropie suffisante et couverture complete?}
ENT -->|No| BF[Force brute / ancrage non-PIE]
ENT -->|Yes| LEAK{L'attaquant a une fuite d'info?}
LEAK -->|Yes| BYP[Recalculer les adresses reelles p. ex. offset2lib]
LEAK -->|No| BLOCK[ROP / ret2libc peu fiables]
F --> EXP[L'exploit reussit]
BF --> EXP
BYP --> EXP● Exemples
- 01
Linux randomise la base de la pile, du tas et du binaire PIE à chaque exec.
- 02
L'ASLR de Windows rebase kernel32.dll et ntdll.dll à chaque démarrage.
● Questions fréquentes
Qu'est-ce que ASLR ?
La randomisation de l'espace d'adressage place aléatoirement en mémoire le code, les piles, les tas et les bibliothèques afin qu'un attaquant ne puisse pas prédire de façon fiable les adresses cibles de ses exploits. Cette notion relève de la catégorie Sécurité applicative en cybersécurité.
Que signifie ASLR ?
La randomisation de l'espace d'adressage place aléatoirement en mémoire le code, les piles, les tas et les bibliothèques afin qu'un attaquant ne puisse pas prédire de façon fiable les adresses cibles de ses exploits.
Comment se défendre contre ASLR ?
Les défenses contre ASLR combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de ASLR ?
Noms alternatifs courants : Randomisation de l'espace d'adressage, PIE.