我偶然发现了一篇文章,提到可以使用-pie -fPIE
(或者说是让你的应用程序具备ASLR功能)来"启用"ASLR。常常建议使用-fstack-protector
(但我很少看到说明它如何保护以及防范哪些攻击)。
是否有一个有用的选项列表和说明,说明它们如何增加安全性?
...
如果您的应用程序使用约30个未使用这些选项的库,这样的措施有多有用呢? ;)
强化版的 Gentoo 使用以下标记:
CFLAGS="-fPIE -fstack-protector-all -D_FORTIFY_SOURCE=2"
LDFLAGS="-Wl,-z,now -Wl,-z,relro"
我在默认的Phoronix基准测试套件中看到了与优化后的Gentoo Linux(包括PaX/SElinux和其他措施,不仅仅是CFLAGS)相比下降了约5-10%的性能。
Debian wiki上的加固页面解释了可在Linux上使用的至少最常见的选项。你的列表中至少缺少-D_FORTIFY_SOURCE=2,-Wformat,-Wformat-security以及对于动态加载器relro和now功能。