Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

ASLR Bypass

hacking

Définition

ASLR (Address Space Layout Randomization) est un mécanisme de sécurité qui randomise les adresses de chargement du code exécutable, des bibliothèques partagées, de la pile et du heap à chaque exécution du programme. L'objectif est d'empêcher les attaquants de calculer les adresses des fonctions, gadgets ROP, ou shellcodes nécessaires à l'exploitation. Les techniques de bypass ASLR permettent de contourner cette protection. Les principales techniques de bypass incluent : les information leaks (fuites d'adresses mémoire via des vulnérabilités secondaires révélant des pointeurs, permettant de calculer les offsets ASLR), le brute-force (efficace sur les systèmes 32-bit où seulement 12-16 bits sont randomisés, soit 4096-65536 positions possibles), les spraying techniques (NOP sleds, heap spraying avec un sled géant augmentant la probabilité de succès), et l'exploitation de régions non randomisées (sur les binaires sans PIE, le code principal reste à une adresse fixe). Sur les systèmes Linux 64-bit, ASLR randomise 28-40 bits selon la configuration, rendant le brute-force impraticable. Cependant, plusieurs faiblesses persistent : les fuites partielles d'adresses (révélant les 4-6 octets de poids faible d'une adresse connue, révélant la page de base de la bibliothèque), les fork() loops (le fork préserve l'espace d'adressage, permettant une exploitation déterministe dans les processus fils), et les attaques de type BROP (Blind ROP) qui exploitent sans connaître les adresses exactes. Blind Return-Oriented Programming (BROP) est une technique remarquable d'exploitation sans leak initial : l'attaquant effectue des milliers de tentatives avec des adresses différentes, inferant progressivement des gadgets ROP utilisables depuis les comportements du programme (crash vs. survie). Elle a été démontrée sur OpenSSH et des serveurs web Nginx/Apache. Le partage d'espaces d'adressage entre processus liés (ASLR appliqué au démarrage mais hérité par fork) est exploitable : des serveurs web ou d'applications qui fork sans exec préservent leur espace d'adressage, permettant la réutilisation de leaks entre tentatives.

Fonctionnement

Sur Linux, /proc/sys/kernel/randomize_va_space contrôle ASLR : 0=off, 1=stack/libs, 2=stack/libs/heap/mmap. Un information leak exploite une vulnérabilité (format string, OOB read, UAF révélant un pointeur) pour extraire une adresse mémoire. Connaissant l'offset entre cette adresse et les gadgets nécessaires (calculé offline depuis le binaire ou les libs), l'attaquant calcule les adresses réelles et construit son exploit.

Exploitation offensive

Le workflow 2-stage est standard : 1) exploiter une première vulnérabilité (souvent moins critique) pour obtenir un leak d'adresse, 2) utiliser ce leak pour calculer les adresses ASLR et exploiter une vulnérabilité plus sévère avec un exploit précis. Cette approche est systématiquement utilisée dans les exploitations modernes de navigateurs (Pwn2Own) et de serveurs.

Détection et mitigation

La combinaison ASLR + PIE (Position Independent Executable) + RELRO + Stack Canary + NX crée des couches de protection complémentaires. Sur Linux, la valeur /proc/sys/kernel/randomize_va_space=2 et la compilation de tous les binaires avec -fPIE -pie maximisent l'entropie ASLR. CFI (Control Flow Integrity) limite les gadgets exploitables même avec des adresses connues.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis