Utile GCC drapeaux pour améliorer la sécurité de vos programmes?
Par un pur hasard, je suis tombé sur un article mentionnant que vous pouvez activer" l'ASLR avec -pie -fPIE
(ou, plutôt, de faire votre demande ASLR-conscient). -fstack-protector
est aussi couramment recommandée (même si j'ai rarement voir les explications comment et contre qui sortes d'attaques, il protège).
S'il existe une liste d'options utiles et des explications de la façon dont ils augmentent la sécurité?
...
Et quelle est l'utilité de telles mesures de toute façon, lorsque votre application utilise environ 30 bibliothèques qui utilisent aucun de ceux-ci? 😉
- qu'est-ce que l'ASLR? où peut-on trouver une explication détaillée de ces indicateurs et leur impact sur les performances?
Vous devez vous connecter pour publier un commentaire.
Quant à votre dernière question:
TARTE est seulement nécessaire pour le programme principal pour pouvoir être chargé à une adresse au hasard. ASLR fonctionne toujours pour les bibliothèques partagées, de sorte que le bénéfice de la TARTE est la même si vous utilisez une bibliothèque partagée ou 100.
Pile protecteur ne bénéficieront le code compilé avec le protecteur de la pile, afin de l'utiliser dans votre programme principal ne va pas aider si vos bibliothèques sont pleines de vulnérabilités.
En tout cas, je vous encourage à ne pas tenir compte de ces options à votre demande, mais au contraire une partie de l'ensemble du système d'intégration. Si vous êtes à l'aide de+ de 30 bibliothèques (probablement les la plupart de qui sont ordure quand il s'agit de la qualité du code et de la sécurité) dans un programme qui sera l'interfaçage avec les non fiables, potentiellement malveillants de données, il serait une bonne idée de construire l'intégralité de votre système avec pile de protecteur et d'autres le renforcement de la sécurité des options.
Ne gardez à l'esprit, cependant, que les plus hauts niveaux de
_FORTIFY_SOURCE
et peut-être quelques autres nouvelles options de sécurité à la rupture choses valables que légitime, de corriger les programmes peuvent avoir besoin de faire, et donc vous pouvez avoir besoin d'analyser s'il est sûr à utiliser. L'un sait-chose dangereuse que l'une des options n' (j'ai oublié laquelle), il est donc le%n
spécificateur deprintf
ne fonctionne pas, au moins dans certains cas. Si une application utilise%n
pour obtenir un décalage dans une chaîne générée par et a besoin d'utiliser que compenser pour plus tard écrire, et la valeur n'est pas rempli, c'est un potentiel de vulnérabilité en elle-même...Trempé Gentoo utilise ces indicateurs:
J'ai vu environ 5 à 10% de chute des performances en comparaison à l'optimisation de Gentoo linux (incl. PaX/SElinux et d'autres mesures, non seulement CFLAGS) en défaut phoronix test suite.
La Le durcissement de la page sur le wiki Debian explique au moins les plus communes, celles qui sont utilisables sous Linux. Absent de votre liste d'au moins -D_FORTIFY_SOURCE=2, -Wformat, -Wformat-sécurité, et pour le chargeur dynamique de la relro et dispose désormais d'.