J'utilise Ubuntu 12.04 32 bits maintenant pour certains tests. Je dois désactiver ASLR. Comment puis-je faire cela? et ensuite que dois-je faire pour réactiver ASLR?
Qu'est-ce que la "randomisation complète"? Est-ce que cela inclut l'exécutable lui-même? Et c'est quoi brk()?
Shuzheng
26
L' /proc/sys/kernel/randomize_va_spaceinterface contrôle l'ensemble du système ASLR.
Si vous ne souhaitez pas modifier le système, utilisez la ADDR_NO_RANDOMIZEpersonnalité pour désactiver temporairement ASLR. Le contrôle de cet indicateur de personnalité peut être effectué avec setarchet son -Roption ( page de manuel), en ajoutant une commande.
Je trouve très pratique d'ouvrir un shell complètement nouveau en utilisant:
setarch `uname -m` -R /bin/bash
Cela ouvrira un nouveau shell Bash pour vous avec ASLR désactivé, y compris tous les processus enfants (programmes exécutés à partir de ce shell).
Juste exitla coquille une fois que vous avez terminé.
Par ailleurs, sur i386, ulimit -s unlimitedpeut "désactiver" ASLR.
EDIT (avril 2016): Le fichier aulimit -s unlimited été corrigé et attribué à CVE-2016-3672 .
Détail mineur dans l'esprit de util-linux: au lieu d' uname -mun, vous pouvez également utiliser archun binaire qui fait essentiellement la même chose.
drumfire
1
@drumfire archn'est pas disponible en tant
qu'applet
+1 pour revenir deux ans plus tard et ajouter les informations concernant CVE.
Multisync
3
Les moyens les plus permanents de désactiver ASLR doivent être conservés dans une machine virtuelle pour des raisons évidentes.
pour tester la possibilité d'écraser les adresses de retour de trame de pile, etc., vous devrez compiler sans canaris de pile -fno-stack-protector, tout en vous permettant d'exécuter du code sur la pile avec laquelle vous devez compiler -z execstack, en faisant
Réponses:
Selon un article Quelle est l'efficacité de ASLR sur les systèmes Linux? , vous pouvez configurer ASLR sous Linux à l’aide de l’
/proc/sys/kernel/randomize_va_space
interface.Alors, pour le désactiver, lancez
et pour le réactiver, lancez
Cela ne survivra pas à un redémarrage, vous devrez donc configurer ceci dans
sysctl
. Ajouter un fichier/etc/sysctl.d/01-disable-aslr.conf
contenant:devrait désactiver définitivement ceci.
la source
brk()
?L'
/proc/sys/kernel/randomize_va_space
interface contrôle l'ensemble du système ASLR.Si vous ne souhaitez pas modifier le système, utilisez la
ADDR_NO_RANDOMIZE
personnalité pour désactiver temporairement ASLR. Le contrôle de cet indicateur de personnalité peut être effectué avecsetarch
et son-R
option ( page de manuel), en ajoutant une commande.Je trouve très pratique d'ouvrir un shell complètement nouveau en utilisant:
Cela ouvrira un nouveau shell Bash pour vous avec ASLR désactivé, y compris tous les processus enfants (programmes exécutés à partir de ce shell).
Juste
exit
la coquille une fois que vous avez terminé.Par ailleurs, sur i386,
ulimit -s unlimited
peut "désactiver" ASLR.EDIT (avril 2016): Le fichier a
ulimit -s unlimited
été corrigé et attribué à CVE-2016-3672 .la source
uname -m
un, vous pouvez également utiliserarch
un binaire qui fait essentiellement la même chose.arch
n'est pas disponible en tantLes moyens les plus permanents de désactiver ASLR doivent être conservés dans une machine virtuelle pour des raisons évidentes.
pour tester la possibilité d'écraser les adresses de retour de trame de pile, etc., vous devrez compiler sans canaris de pile
-fno-stack-protector
, tout en vous permettant d'exécuter du code sur la pile avec laquelle vous devez compiler-z execstack
, en faisantla source
Vous pouvez simplement utiliser
sudo sysctl kernel.randomize_va_space=0
pour désactiver temporairement ASLR.la source