Manifestos da ferramenta na pasta raiz
O .NET não procura mais arquivos de manifesto de ferramentas locais na pasta raiz no Windows, a menos que seja substituído pela variável de ambiente DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
. Essa alteração não afeta o Linux ou o macOS.
Comportamento anterior
Anteriormente, as ferramentas locais do SDK do .NET verificavam a pasta raiz em todas as plataformas ao procurar um manifesto de ferramenta. A pesquisa continuou do diretório atual até a árvore de diretórios e a pasta raiz até encontrar um manifesto. Em cada nível, o .NET procura o manifesto da ferramenta, denominado dotnet-tools.json, em uma subpasta .config. Em um sistema Windows, se nenhum outro manifesto de ferramenta foi encontrado, o SDK procurou um manifesto de ferramenta em C:\.config\dotnet-tools.json.
Novo comportamento
O .NET não pesquisa mais na pasta raiz da árvore de diretórios atual por padrão no Windows, a menos que seja substituído pela variável de ambiente DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
. DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
é definido como false
por padrão.
Versão introduzida
- SDK do .NET 7.0.3xx
- SDK do .NET 7.0.1xx
- SDK do .NET 6.0.4xx
- SDK do .NET 6.0.3xx
- SDK do .NET 6.0.1xx
- SDK do .NET 3.1.4xx
Tipo de alteração interruptiva
Esta é uma alteração comportamental.
Motivo da alteração
Essa alteração foi feita para atender a um problema de segurança. Como todos os usuários podem criar arquivos e pastas no diretório C:\ no Windows, os invasores com poucos privilégios podem sequestrar o arquivo C:\.config\dotnet-tools.json. Quando um administrador executa um comando de ferramenta dotnet
, a ferramenta pode fazer a leitura de informações da configuração mal-intencionada do arquivo e fazer o download e executar ferramentas mal-intencionadas.
Ação recomendada
Para desabilitar o novo comportamento, defina a variável de ambiente DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
como true
ou 1
.