ASLR Bypass
hackingDé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
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés. 2.1.7
Un projet cybersécurité ?
Expert dispo · Réponse 24h