Vue d'ensemble

Par nature, tout programme s'exécutant sur un ordinateur peut être utilisé comme point d'entrée par des pirates pour attaquer le système d'exploitation. Les versions récentes de Windows réduisent ce risque en permettant de compiler les programmes avec des fonctionnalités qui rendent beaucoup plus difficile l'action des pirates. Le Wrapper contribue à améliorer la sécurité du système et à protéger votre système en utilisant ces fonctionnalités.

À partir de la version 3.5.33, le Wrapper spécifie que ses binaires (wrapper.exe, wrapperw.exe et wrapper.dll) sont compatibles avec la Prévention de l'exécution des données (DEP) et active la Randomisation de la disposition de l'espace d'adressage (ASLR) au moment du chargement.

- DEP marque les régions mémoire allouées par le Wrapper comme non exécutables et empêche ainsi l'exécution de shellcode qui serait injecté par un logiciel malveillant.

- ASLR protège contre les attaques par dépassement de tampon en randomisant l'emplacement des différentes parties du programme en mémoire. Chaque fois que le Wrapper s'exécute, la pile, le tas et les bibliothèques sont déplacés vers une adresse différente en mémoire virtuelle, de sorte que les attaquants ne peuvent plus découvrir par essais successifs où se trouve leur cible.

Les termes utilisés pour décrire ces fonctionnalités peuvent sembler un peu techniques, mais il suffit de retenir que l'utilisation de DEP et d'ASLR n'a pas d'impact notable sur les performances et permet au Wrapper de s'exécuter de manière beaucoup plus sûre sur votre système d'exploitation. Il n'y a aucune propriété à configurer dans le fichier de configuration du Wrapper pour activer DEP et ASLR. Les deux fonctionnalités sont automatiquement activées lors de l'exécution de toute version du Wrapper à partir de 3.5.33.

Prévention de l'exécution des données (DEP)

Le Wrapper active DEP lorsqu'il s'exécute sous Windows XP SP3 ou toute version ultérieure de Windows. « java.exe » et « javaw.exe » spécifient la prise en charge de DEP d'une manière différente avec une option (/NXCOMPAT) ajoutée dans l'en-tête du binaire. Cette option est comprise par Windows Vista et versions ultérieures mais pas par Windows XP. Pour correspondre à ce comportement, la bibliothèque native (wrapper.dll) utilisée par le processus Java utilise la même option et active DEP pour les mêmes versions de Windows.

La présence de cette option peut être confirmée en vérifiant que dumpbin.exe affiche « NX Compatible » parmi les caractéristiques de la DLL :

dumpbin /headers <PATH_TO_WRAPPER_DLL>

Notez que Windows impose DEP lors de l'exécution d'exécutables 64 bits et que, par conséquent, les éditions 64 bits du Wrapper (y compris les versions inférieures à 3.5.33) s'exécutent toujours avec DEP activé.

Notez également que le Wrapper s'exécutera normalement (mais avec des niveaux de sécurité standard) sur les anciennes versions de Windows qui ne prennent pas en charge DEP.

DEP peut être configuré au niveau du système avec 4 stratégies différentes :

- Les deux premières stratégies peuvent être configurées par l'utilisateur local via l'interface graphique de Windows. Sous Windows 10, cliquez avec le bouton droit sur « Ce PC », puis sur « Propriétés ».

Sur le côté gauche du panneau de configuration, cliquez sur « Paramètres système avancés ».

Dans la fenêtre « Propriétés système », cliquez sur le bouton « Paramètres » sous « Performances ».

Dans la fenêtre « Options de performance », cliquez sur l'onglet « Prévention de l'exécution des données ».

  • « Activer la DEP uniquement pour les programmes et services Windows essentiels » spécifie que Windows activera DEP pour les processus Windows, les services, les processus 64 bits, ainsi que tous les binaires spécifiant qu'ils sont compatibles DEP (ce qui est le cas du Wrapper version 3.5.33 et supérieure).
  • « Activer la DEP pour tous les programmes et services sauf ceux que je sélectionne » activera DEP pour tous les processus excepté ceux listés dans la zone sous cette option, ainsi que tous les binaires spécifiant explicitement qu'ils ne sont pas compatibles DEP (ce qui n'est jamais le cas pour aucune version du Wrapper). Cette option peut être utilisée pour activer DEP pour l'édition 32 bits du Wrapper antérieure à 3.5.33, mais activera également DEP pour d'autres processus du système, au risque de perturber leur fonctionnement s'ils ne sont pas compatibles DEP.

- Deux autres stratégies sont disponibles pour les administrateurs, bien qu'elles ne devraient pas être nécessaires dans la majorité des cas. Windows permet de forcer DEP pour tous les processus (en ignorant toute liste d'exceptions et les options intégrées dans les binaires), ou inversement de désactiver complètement DEP pour tous les processus s'exécutant sur le système. Cela peut être fait en utilisant bcdedit.exe dans une invite de commandes exécutée en tant qu'administrateur (ou boot.ini sous Windows XP).

Randomisation de la disposition de l'espace d'adressage (ASLR)

ASLR a été introduit dans Windows Vista et est implémenté dans toutes les versions ultérieures de Windows. « java.exe » et « javaw.exe » spécifient une option (/DYNAMICBASE) dans leurs en-têtes binaires pour informer le système d'exploitation que l'application Java doit être relocalisée au moment du chargement à l'aide d'ASLR. « wrapper.exe », « wrapperw.exe » et « wrapper.dll » sont liés avec la même option pour activer ASLR.

La présence de cette option peut être confirmée en vérifiant que dumpbin.exe affiche « Dynamic base » parmi les caractéristiques de la DLL :

dumpbin /headers <PATH_TO_WRAPPER_DLL_OR_EXE>

Aucune configuration n'est nécessaire au niveau du système pour ASLR. Windows Vista et versions ultérieures ont ASLR activé pour les exécutables et DLL spécifiquement liés pour être compatibles ASLR. Pour des raisons de compatibilité, il n'est pas activé par défaut pour les autres applications. Le Wrapper version 3.5.33 et supérieure s'exécutera avec ASLR activé.

Notez que le Wrapper s'exécutera normalement (mais avec des niveaux de sécurité standard) sur les anciennes versions de Windows qui ne prennent pas en charge ASLR.

Comment vérifier si le Wrapper s'exécute avec DEP/ASLR activé

Depuis l'onglet Détails du Gestionnaire des tâches Windows, il est possible d'ajouter une colonne pour visualiser si DEP est activé ou non : cliquez avec le bouton droit sur l'en-tête de colonne, choisissez « Sélectionner les colonnes » et cochez la case « Prévention de l'exécution des données ».

La colonne affichera « Activé » pour tous les processus s'exécutant avec DEP activé, et « Désactivé » lorsque les processus s'exécutent sans cette protection.

Malheureusement, il n'existe pas de colonne de ce type dans le Gestionnaire des tâches pour voir si ASLR est activé ou non.

Un meilleur moyen de vérifier si DEP et ASLR sont activés consiste à utiliser l'outil Process Explorer fourni par Microsoft. Il peut être téléchargé à partir du lien suivant :

https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx

Après le téléchargement, extrayez simplement les fichiers dans un dossier et exécutez procexp.exe ou procexp64.exe selon que votre système d'exploitation est 32 bits ou 64 bits.

Une fenêtre apparaîtra affichant les processus de manière hiérarchique. Lorsque le Wrapper s'exécute, on peut voir le processus Wrapper et son processus Java enfant géré.

Pour visualiser si DEP et ASLR sont activés pour chaque processus, cliquez avec le bouton droit sur l'en-tête des colonnes et choisissez « Select Columns... ». Cliquez sur l'onglet « Process Image » et cochez les cases « DEP Status » et « ASLR Enabled ». Enfin, cliquez sur « OK » pour ajouter ces deux colonnes.

Voici les résultats lors de l'exécution du Wrapper versions 3.5.32 et 3.5.33 (32 bits et 64 bits) sous Windows (Vista et versions ultérieures) :

Wrapper 3.5.32 - 32 bits : Pas de DEP, pas d'ASLR pour le processus Wrapper, mais Java active les deux fonctionnalités.


Wrapper 3.5.32 - 64 bits : DEP automatiquement activé pour le processus Wrapper 64 bits, mais pas de prise en charge d'ASLR.


Wrapper 3.5.33 - 32 bits (et 64 bits) : DEP et ASLR sont tous deux activés pour le processus Wrapper.