Di recente ho appreso che (almeno su Fedora e Red Hat Enterprise Linux), i programmi eseguibili compilati come Position Independent Executables (PIE) ricevono una protezione ASLR (Address Space Randomization) più forte.
Quindi:come posso verificare se un particolare eseguibile è stato compilato come eseguibile indipendente dalla posizione, su Linux?
Risposta accettata:
Puoi usare il perl
script contenuto nel hardening-check
pacchetto, disponibile in Fedora e Debian (come hardening-includes
). Leggere questa pagina wiki di Debian per i dettagli su quali flag di compilazione vengono controllati. È specifico per Debian, ma la teoria si applica anche a Red Hat.
Esempio:
$ hardening-check $(which sshd)
/usr/sbin/sshd:
Position Independent Executable: yes
Stack protected: yes
Fortify Source functions: yes (some protected functions found)
Read-only relocations: yes
Immediate binding: yes