Manifesty narzędzi w folderze głównym

Platforma .NET nie szuka już lokalnych plików manifestu narzędzia w folderze głównym w systemie Windows, chyba że zostanie zastąpiona za pomocą zmiennej środowiskowej DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT . Ta zmiana nie ma wpływu na system Linux lub macOS.

Poprzednie zachowanie

Wcześniej narzędzia lokalne zestawu .NET SDK sprawdziły folder główny na wszystkich platformach podczas wyszukiwania manifestu narzędzia. Wyszukiwanie kontynuowane z bieżącego katalogu w drzewie katalogu do folderu głównego do momentu znalezienia manifestu. Na każdym poziomie platforma .NET wyszukuje manifest narzędzia o nazwie dotnet-tools.json w podfolderze .config . Jeśli w systemie Windows nie znaleziono żadnego innego manifestu narzędzia, zestaw SDK ostatecznie szukał manifestu narzędzia w katalogu C:\.config\dotnet-tools.json.

Nowe zachowanie

Platforma .NET domyślnie nie wyszukuje w folderze głównym bieżącego drzewa katalogów w systemie Windows, chyba że zostanie zastąpiona za pośrednictwem zmiennej środowiskowej DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT . DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT jest domyślnie ustawiona na false wartość .

Wprowadzona wersja

  • Zestaw .NET SDK 7.0.3xx
  • Zestaw .NET SDK 7.0.1xx
  • Zestaw .NET SDK 6.0.4xx
  • Zestaw .NET SDK 6.0.3xx
  • Zestaw .NET SDK 6.0.1xx
  • Zestaw .NET SDK 3.1.4xx

Typ zmiany powodującej niezgodność

Ta zmiana jest zmianą behawioralną.

Przyczyna wprowadzenia zmiany

Ta zmiana została wprowadzona w celu rozwiązania problemu z bezpieczeństwem. Ponieważ wszyscy użytkownicy mogą tworzyć pliki i foldery w katalogu C:\ w systemie Windows, osoby atakujące o niskich uprawnieniach mogą przejąć plik C:\.config\dotnet-tools.json. Gdy administrator uruchamia dotnet polecenie narzędzia, narzędzie może potencjalnie odczytywać złośliwe informacje o konfiguracji z pliku i pobierać i uruchamiać złośliwe narzędzia.

Aby wyłączyć nowe zachowanie, ustaw zmienną DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT środowiskową na true lub 1.

Zobacz też