Sto usando Ubuntu 12.04 a 32 bit ora per qualche esperimento che devo disabilitare ASLR come posso fare questo? e dopo cosa devo fare per abilitare nuovamente ASLR?
Sto usando Ubuntu 12.04 a 32 bit ora per qualche esperimento che devo disabilitare ASLR come posso fare questo? e dopo cosa devo fare per abilitare nuovamente ASLR?
Risposte:
Secondo un articolo Quanto è efficace ASLR su sistemi Linux? , puoi configurare ASLR in Linux usando l' /proc/sys/kernel/randomize_va_spaceinterfaccia.
Sono supportati i seguenti valori:
- 0 - Nessuna randomizzazione. Tutto è statico.
- 1 - randomizzazione conservativa. Librerie condivise, stack,
mmap()VDSO e heap sono randomizzati.- 2 - Completa randomizzazione. Oltre agli elementi elencati nel punto precedente, anche la memoria gestita
brk()è randomizzata.
Quindi, per disabilitarlo, esegui
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
e per abilitarlo di nuovo, esegui
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
Questo non sopravviverà al riavvio, quindi dovrai configurarlo in sysctl. Aggiungi un file /etc/sysctl.d/01-disable-aslr.confcontenente:
kernel.randomize_va_space = 0
dovrebbe disabilitarlo definitivamente.
brk()?
L' /proc/sys/kernel/randomize_va_spaceinterfaccia controlla ASLR a livello di sistema.
Se non si desidera un cambiamento a livello di sistema, utilizzare la ADDR_NO_RANDOMIZE personalità per disabilitare temporaneamente ASLR. Il controllo di questo flag di personalità può essere fatto con setarche la sua -Ropzione ( manpage ), anteponendo un comando.
Trovo davvero conveniente aprire una shell completamente nuova usando:
setarch `uname -m` -R /bin/bash
Questo aprirà una nuova shell Bash per te con ASLR disabilitato, inclusi tutti i processi figlio (i programmi vengono eseguiti da questa shell).
Solo exitil guscio una volta finito.
A proposito, su i386, ulimit -s unlimitedpuoi "disabilitare" ASLR.
EDIT (aprile 2016): il problema èulimit -s unlimited stato risolto e assegnato CVE-2016-3672 .
uname -muno si potrebbe usare anche archun binario che essenzialmente fa lo stesso.
archnon è disponibile come applet busybox
I modi più permanenti di disabilitare ASLR dovrebbero essere mantenuti in una VM per ovvi motivi.
per testare la possibilità di sovrascrivere gli indirizzi di ritorno del frame dello stack eccetera, dovrai compilare senza stack canarini -fno-stack-protector, mentre per permetterti di eseguire il codice sullo stack con cui devi compilare -z execstack, facendo
$ gcc -fno-stack-protector -z execstack -o <my_program> my_code.c