Vue d'ensemble

Sous Windows, une vulnérabilité de sécurité appelée « DLL hijacking » peut se produire lorsqu'une application charge une DLL malveillante au lieu de celle prévue. Ce risque survient lorsque le système recherche des DLL dont l'application dépend dans des répertoires accessibles en écriture ou contrôlés par des utilisateurs non autorisés, ce qui permet de remplacer une DLL légitime par une DLL malveillante du même nom.

Pour atténuer ce risque pour votre application Java, le Wrapper vous permet de configurer les emplacements où le système recherchera les DLL chargées par les bibliothèques natives. Restreindre la recherche aux répertoires de confiance permet d'éviter le chargement de bibliothèques non fiables.

Les propriétés suivantes peuvent être utilisées pour configurer les chemins de recherche des DLL :

NOTE

La portée de ces paramètres est limitée au processus de l'application Java, ce qui signifie que les chemins de recherche configurés ne sont pas hérités par les processus enfants.

De plus, ces paramètres n'affectent que les bibliothèques chargées par du code natif, et non celles chargées explicitement par Java à l'aide de méthodes telles que system.LoadLibrary(). Pour spécifier où la JVM doit rechercher les bibliothèques natives, utilisez plutôt les propriétés wrapper.java.library.path.<n>.

Propriété wrapper.java.windows.dll.search.mode

Compatibilité :3.6.3
Éditions :Édition ProfessionnelleÉdition StandardÉdition Community (non prise en charge)
Plateformes :WindowsMac OSX (Non pris en charge)Linux (Non pris en charge)Alpine Linux (Non pris en charge)FreeBSD (Non pris en charge)Solaris (Non pris en charge)IBM z/Linux (Non pris en charge)

Cette propriété permet de configurer deux modes : l'un laissant la recherche des DLL au comportement par défaut du système, et l'autre restreignant la recherche aux seuls chemins spécifiés par les propriétés wrapper.java.windows.dll.search.path.<n>.

Les deux modes sont représentés par les jetons suivants :

  • LEGACY : comportement par défaut du système (Safe DLL Search Mode sur les versions récentes de Windows)

  • RESTRICTED : pour restreindre les répertoires dans lesquels les DLL sont recherchées.

La valeur par défaut est LEGACY.

Exemple :
wrapper.java.windows.dll.search.mode=RESTRICTED

NOTE

Lorsque le mode LEGACY est utilisé, le Wrapper permet au système d'utiliser son mécanisme par défaut pour le chargement des DLL.

À partir de Windows XP Service Pack 2, Windows suit un ordre de recherche de DLL plus sécurisé qui exclut le répertoire de travail de l'application. Cette modification contribue à réduire le risque de chargement de DLL malveillantes à partir d'emplacements non sécurisés. Toutefois, il est important de noter que l'ordre de recherche inclut toujours les répertoires spécifiés dans la variable d'environnement PATH. Comme PATH est souvent partagé à l'échelle du système, il peut inclure des répertoires qui ne sont pas sûrs pour le chargement de bibliothèques par l'application.

Des répertoires spécifiques peuvent être ajoutés au début de PATH à l'aide des propriétés wrapper.system.library.path.<n>.


En revanche, lorsque le mode RESTRICTED est utilisé, le système ne recherche pas les DLL dans les répertoires listés dans la variable d'environnement PATH. Bien que PATH soit toujours renseigné avec les valeurs de wrapper.java.windows.dll.search.path.<n>, les répertoires spécifiés via ces propriétés ne sont pas utilisés par le système lors de la recherche de DLL. Le mode RESTRICTED est donc limité au chemin system32, au répertoire contenant la commande Java, et aux chemins spécifiés avec wrapper.java.windows.dll.search.path.<n>.

AVERTISSEMENT

Lorsque vous utilisez le mode RESTRICTED, soyez prudent, car des paramètres trop restrictifs qui excluent des répertoires attendus par la JVM ou l'application peuvent entraîner des échecs de chargement de DLL et des erreurs d'exécution.

Propriétés wrapper.java.windows.dll.search.path.<n>

Compatibilité :3.6.3
Éditions :Édition ProfessionnelleÉdition StandardÉdition Community (non prise en charge)
Plateformes :WindowsMac OSX (Non pris en charge)Linux (Non pris en charge)Alpine Linux (Non pris en charge)FreeBSD (Non pris en charge)Solaris (Non pris en charge)IBM z/Linux (Non pris en charge)

Cet ensemble de propriétés vous permet de configurer les chemins de recherche lorsque des DLL sont chargées à partir de bibliothèques natives. Ces propriétés s'appliquent uniquement lorsque wrapper.java.windows.dll.search.mode est défini sur RESTRICTED et sont ignorées lorsque LEGACY est utilisé.

Composant <n> :

Chaque élément a un nom de propriété commençant par « wrapper.java.windows.dll.search.path. » et le composant « <n> » du nom de propriété est un nombre entier commençant à « 1 ». Par défaut, la numérotation doit être séquentielle, sans interruption. La propriété wrapper.ignore_sequence_gaps peut éventuellement être définie pour autoriser des interruptions dans la séquence.

Exemple :
wrapper.java.windows.dll.search.path.1=../syslib

Référence : Bibliothèque