Манифесты инструментов в корневой папке
.NET больше не ищет файлы манифеста локального инструмента в корневой папке в Windows, если не переопределяется с помощью переменной DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
среды. Это изменение не влияет на Linux или macOS.
Прежнее поведение
Ранее локальные средства пакета SDK для .NET проверка корневую папку на всех платформах при поиске манифеста средства. Поиск продолжался из текущего каталога до дерева каталогов в корневую папку, пока не найден манифест. На каждом уровне .NET выполняет поиск манифеста средства с именем dotnet-tools.json в подпапке конфигурации . Если в системе Windows нет другого манифеста средства, пакет SDK в конечном итоге искал манифест инструмента в C:\.config\dotnet-tools.json.
Новое поведение
.NET больше не выполняет поиск в корневой папке текущего дерева каталогов по умолчанию в Windows, если не переопределяется с помощью переменной DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
среды. По умолчанию свойству DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
присваивается значение false
.
Представленные версии
- Пакет 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
Тип критического изменения
Причина изменения
Это изменение было внесено для решения проблемы безопасности. Так как все пользователи могут создавать файлы и папки в каталоге C:\ в Windows, злоумышленники с низким уровнем привилегий могут перехватывать файл C:\.config\dotnet-tools.json . Когда администратор запускает команду средства, средство может прочитать сведения о вредоносной dotnet
конфигурации из файла и скачать и запустить вредоносные средства.
Рекомендуемое действие
Чтобы отключить новое поведение, задайте для переменной DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
true
среды значение или 1
.