Manifestes d’outils dans le dossier racine
.NET ne recherche plus de fichiers manifestes d’outils locaux dans le dossier racine sur Windows, sauf en cas de remplacement par le biais de la variable d’environnement DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
. Ce changement n’a pas d’impact sur Linux ou macOS.
Comportement précédent
Auparavant, les outils locaux du kit de développement logiciel (SDK) .NET vérifiaient le dossier racine sur toutes les plateformes lors de la recherche d’un manifeste d’outil. À partir du répertoire actif, la recherche remontait l’arborescence de répertoires vers le dossier racine jusqu’à ce qu’il trouve un manifeste. À chaque niveau, .NET recherchait le manifeste d’outil, nommé dotnet-tools.json, dans un sous-dossier .config. Sur un système Windows, si aucun autre manifeste d’outil n’était trouvé, le SDK recherchait un manifeste d’outil dans C:\.config\dotnet-tools.json.
Nouveau comportement
.NET ne recherche plus dans le dossier racine de l’arborescence de répertoires actif par défaut sur Windows, sauf s’il est remplacé par le biais de la variable d’environnement DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
. DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
est défini sur false
par défaut.
Version introduite
- SDK .NET 7.0.3xx
- SDK .NET 7.0.1xx
- SDK .NET 6.0.4xx
- SDK .NET 6.0.3xx
- SDK .NET 6.0.1xx
- SDK .NET 3.1.4xx
Type de changement cassant
Ce changement est un changement de comportement.
Raison du changement
Ce changement a été apporté pour résoudre un problème de sécurité. Étant donné que tous les utilisateurs peuvent créer des fichiers et des dossiers dans le répertoire C:\ sur Windows, des attaquants disposant de privilèges faibles peuvent détourner le fichier C:\.config\dotnet-tools.json. Quand un administrateur exécute une commande d’outil dotnet
, l’outil peut potentiellement lire des informations de configuration malveillantes à partir du fichier et télécharger et exécuter des outils malveillants.
Action recommandée
Pour désactiver le nouveau comportement, définissez la variable d’environnement DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
sur true
ou 1
.