La documentation du randomize_va_space
sysctl le réglage est en Documentation/sysctl/kernel.txt
dans l'arborescence des sources du noyau. En gros,
0 - Désactivez la randomisation de l'espace d'adressage du processus.
1 - Rendre aléatoires les adresses de la base mmap, de la pile et de la page VDSO.
2 - Activez également la randomisation du tas.
La meilleure façon de désactiver localement l'ASLR sur un système basé sur Linux consiste à utiliser des indicateurs de personnalité de processus. La commande pour manipuler les drapeaux de personnalité est setarch
avec
-R
,--addr-no-randomize
Désactive la randomisation de l'espace d'adressage virtuel (active ADDR_NO_RANDOMIZE).
Voici comment procéder :
$> setarch $(uname -m) -R /bin/bash
Cette commande exécute un shell dans lequel l'ASLR a été désactivé. Tous les descendants de ce processus hériteront des drapeaux de personnalité du père et auront donc un ASLR désactivé. La seule façon de casser l'héritage des drapeaux serait d'appeler un programme setuid (ce serait une faille de sécurité de prendre en charge une telle fonctionnalité).
Notez que le uname -m
est là pour ne pas coder en dur l'architecture de votre plateforme et rendre cette commande portable.