ELF binaries do not enforce secure binary properties
Les binaires ELF n'appliquent pas de propriétés binaires sécurisées
Description
Les compilateurs, les systèmes d'exploitation et les processeurs fournissent un ensemble de techniques pour protéger et atténuer le risque de vulnérabilités de corruption de mémoire comme le débordement de tampon ou de techniques d'exploitation de mémoire comme le ROP (Return-Oriented-Programming).
Le code natif peut facilement bénéficier de protections telles que :
RELRO: RELRO est une technique de protection de la mémoire destinée à renforcer la sécurité contre les techniques d'exploitation de la corruption de mémoire. RELRO empêche les attaques par écrasement du GOT.ASLR: ASLR est une technique de protection de la mémoire destinée à renforcer la sécurité contre les techniques d'exploitation de la corruption de mémoire. L'ASLR randomise l'espace d'adressage du binaire pour empêcher les sauts d'adresses contrôlés.No eXecute: Marquage de la région mémoire comme non exécutable pour renforcer la sécurité contre les techniques d'exploitation de la corruption de mémoire.Stack canary: Ajout d'un canari à la mémoire qui est écrasé en cas de corruption de mémoire. Le canari est vérifié à l'exécution pour empêcher l'exploitation de la vulnérabilité de corruption de mémoire.
Recommandation
Pour s'assurer que la fonctionnalité de canari de pile est activée lors de la compilation avec GCC, vous pouvez spécifier l'une des options du compilateur :
- Pour une protection de base de la pile, utilisez
-fstack-protector. - Pour une protection plus forte incluant les fonctions avec des tableaux locaux ou des références à des adresses de trame locales, utilisez
-fstack-protector-strong. - Pour une vérification complète de la protection dans chaque fonction, utilisez
-fstack-protector-all.
Liens
Normes
- 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