Поделиться через


Манифесты инструментов в корневой папке

.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_ROOTtrue среды значение или 1.

См. также