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.
Zalecana akcja
Aby wyłączyć nowe zachowanie, ustaw zmienną DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
środowiskową na true
lub 1
.