Delphi et C++Builder dans 11.1 activent par défaut un certain nombre d’indicateurs de sécurité PE pour les applications Windows, dont certains étaient déjà disponibles, mais un peu cachés.
Delphi prend depuis longtemps en charge ASLR et certains des autres indicateurs de sécurité Windows recommandés. Dans la récente version 11.1, Embarcadero a facilité l’utilisation de ces indicateurs à la fois dans Delphi et C++Builder, en affichant des options de liens spécifiques, en les activant par défaut, et en créant également des packages et des applications qui font partie de RAD Studio avec ces indicateurs activés. .
En savoir plus sur ces drapeaux Windows PE
Prévention de l’exécution des données (DEP)
Permet au système de marquer une ou plusieurs pages de mémoire comme non exécutables, empêchant le code de s’exécuter à partir de ces régions de mémoire, ce qui rend plus difficile l’exploitation des dépassements de mémoire tampon. Vous pouvez en savoir plus à ce sujet dans la documentation Microsoft ici .
Randomisation de la disposition de l’espace d’adressage (ASLR)
Organise de manière aléatoire les positions d’espace d’adressage des zones de données clés d’un processus, y compris la base de l’exécutable et les positions de la pile, du tas et des bibliothèques. Empêche l’exploitation des vulnérabilités de corruption de mémoire. Vous pouvez en savoir plus sur l’ASLR sur Wikipedia.
ASLR 64 bits à haute entropie (uniquement dans les applications 64 bits)
Permet à ASLR d’utiliser tout l’espace d’adressage 64 bits, comme vous pouvez le lire ici .
Services terminaux
Créez des applications prenant en charge Terminal Server (TSAWARE). Ceci n’est pas lié à la sécurité et couvert par Microsoft ici .
Prise en charge améliorée de RAD Studio
Alors que les drapeaux du compilateur existaient avant , l’EDI RAD Studio expose désormais ces drapeaux en tant qu’options de l’éditeur de liens. Vous pouvez voir ci-dessous les paramètres pour les compilateurs Delphi et C++ Windows (merci pour les images à Jim McKeeth )
Quelques mises en garde
La configuration du compilateur ASLR fonctionne comme prévu pour les applications Delphi qui utilisent le package d’exécution. Pour les programmes liés aux bibliothèques de l’exécutable, il existe un conflit avec la façon dont les programmes se réfèrent aux fonctions DLL chargées retardées, ce qui empêche le comportement attendu. Il s’agit d’un problème qu’Embarcadero a découvert après la sortie et qui fournirait un correctif dans un avenir (proche).
Comme vous pouvez le voir ci-dessous, pour une application avec des packages d’exécution, vous obtenez la configuration appropriée, comme indiqué par SysInternals Process Explorer :
En général, notez que ces drapeaux renforcent la sécurité et qu’il est possible qu’une application utilisant du code de bas niveau ne fonctionne plus. Par exemple, nous avons découvert que certains anciens contrôles ActiveX ne fonctionnaient plus dans l’IDE, en raison d’un conflit avec le drapeau DEP.
Si vous constatez un problème dans vos applications, vous pouvez désactiver ces indicateurs, mais nous vous recommandons d’examiner le problème sous-jacent, car certaines entreprises commencent à exiger que tous les logiciels qu’elles utilisent soient créés avec tous les indicateurs de sécurité recommandés par Microsoft activés.