ELF binaries do not enforce secure binary properties
Los binarios ELF no aplican propiedades binarias seguras
Descripción
Los compiladores, los sistemas operativos y los procesadores proporcionan un conjunto de técnicas para proteger y mitigar el riesgo de vulnerabilidades de corrupción de memoria como el desbordamiento del búfer o técnicas de explotación de memoria como ROP (Return-Oriented-Programming).
El código nativo puede beneficiarse fácilmente de protecciones como:
RELRO: RELRO es una técnica de protección de la memoria para fortalecer contra técnicas de explotación de corrupción de memoria. RELRO previene ataques de sobrescritura de GOT.ASLR: ASLR es una técnica de protección de la memoria para fortalecer contra la técnica de explotación de corrupción de memoria. ASLR aleatoriza el espacio de direcciones del binario para evitar saltos de direcciones controlados.No eXecute: Marca la región de memoria como no ejecutable para fortalecerla contra la técnica de explotación de corrupción de memoria.Stack canary: Añade un canario a la memoria que se sobrescribe en caso de corrupción de memoria. El canario se comprueba en tiempo de ejecución para evitar la explotación de la vulnerabilidad de corrupción de memoria.
Recomendación
Para asegurar que la función de canario de pila esté habilitada al compilar con GCC, puede especificar una de las opciones del compilador:
- Para protección básica de pila, use
-fstack-protector. - Para una protección más fuerte, incluidas las funciones con matrices locales o referencias a direcciones de marcos locales, use
-fstack-protector-strong. - Para una comprobación de protección completa en cada función, use
-fstack-protector-all.
Enlaces
Estándares
- OWASP_MASVS_L1:
- MSTG_CODE_9
- OWASP_MASVS_v2_1:
- MASVS_CODE_2
- OWASP_MASVS_L2:
- MSTG_CODE_9
- PCI_STANDARDS:
- REQ_2_2
- HIPAA_CONTROLS:
- SECURITY212
- SECURITY213
- SECURITY255