Nedávno jsem se dozvěděl, že (alespoň na Fedoře a Red Hat Enterprise Linuxu) spustitelné programy, které jsou kompilovány jako Position Independent Executables (PIE), dostávají silnější ochranu před náhodným umístěním adresního prostoru (ASLR).
Takže:Jak otestuji, zda byl konkrétní spustitelný soubor zkompilován jako spustitelný soubor nezávislý na pozici v systému Linux?
Přijatá odpověď:
Můžete použít perl
skript obsažený v hardening-check
balíček, dostupný ve Fedoře a Debianu (jako hardening-includes
). Přečtěte si tuto wiki stránku Debianu, kde najdete podrobnosti o tom, jaké příznaky kompilace jsou kontrolovány. Je to specifické pro Debian, ale teorie platí i pro Red Hat.
Příklad:
$ 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