Manifiestos de herramienta en la carpeta raíz
.NET ya no busca archivos de manifiesto de herramientas locales en la carpeta raíz de Windows, a menos que se invalide a través de la variable de entorno DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
. Este cambio no afecta a Linux o macOS.
Comportamiento anterior
Anteriormente, las herramientas locales del SDK de .NET comprobaron la carpeta raíz en todas las plataformas al buscar un manifiesto de herramienta. La búsqueda continuó desde el directorio actual hasta el árbol de directorio hasta la carpeta raíz hasta que encontró un manifiesto. En cada nivel, .NET busca el manifiesto de herramienta, denominado dotnet-tools.json, en una subcarpeta .config . En un sistema Windows, si no se encontró ningún otro manifiesto de herramienta, el SDK buscaba en última instancia un manifiesto de herramienta en C:\.config\dotnet-tools.json.
Comportamiento nuevo
.NET ya no busca en la carpeta raíz del árbol de directorios actual de forma predeterminada en Windows, a menos que se invalide a través de la variable de entorno DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
. DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
se establece en false
de forma predeterminada.
Versión introducida
- SDK de .NET 7.0.3xx
- SDK de .NET 7.0.1xx
- SDK de .NET 6.0.4xx
- SDK de .NET 6.0.3xx
- SDK de .NET 6.0.1xx
- SDK de .NET 3.1.4xx
Tipo de cambio importante
Este es un cambio de comportamiento.
Motivo del cambio
Este cambio se realizó para abordar un problema de seguridad. Dado que todos los usuarios pueden crear archivos y carpetas en el directorio C:\ en Windows, los atacantes con pocos privilegios pueden secuestrar el archivo C:\.config\dotnet-tools.json. Cuando un administrador ejecuta un comando de herramienta dotnet
, la herramienta podría, potencialmente, leer información de configuración malintencionada del archivo y descargar y ejecutar herramientas malintencionadas.
Acción recomendada
Para deshabilitar el nuevo comportamiento, establezca la variable de entorno DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
en true
o 1
.