2.5. Opções para endurecimento de código com GCC
Quando o compilador transforma o código fonte em código objeto, ele pode adicionar várias verificações para evitar situações comumente exploradas e aumentar a segurança. Escolher o conjunto certo de opções de compilador pode ajudar a produzir programas e bibliotecas mais seguros, sem ter que alterar o código-fonte.
Opções de versão de lançamento
A seguinte lista de opções é o mínimo recomendado para desenvolvedores que tenham como alvo o Red Hat Enterprise Linux:
$ gcc ... -O2 -g -Wall -Wl,-z,now,-z,relro -fstack-protector-stack forte -fstack-clash-protection -D_FORTIFY_SOURCE=2 ...
-
Para os programas, adicione as opções de execução independente de cargos
-fPIE
e-pie
. -
Para bibliotecas ligadas dinamicamente, a opção obrigatória
-fPIC
(Position Independent Code) aumenta indiretamente a segurança.
Opções de desenvolvimento
Utilize as seguintes opções para detectar falhas de segurança durante o desenvolvimento. Use estas opções em conjunto com as opções para a versão de lançamento:
$ gcc ... -Walloc-zero -Walloca-larga que -Wextra -Wformat-security -Wvlalarga que -Wvlalarga que -Walloca-larga que ...
Recursos adicionais