다음을 통해 공유


루트 폴더의 도구 매니페스트

.NET은 DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT 환경 변수를 통해 재정의되지 않는 한 더 이상 Windows의 루트 폴더에서 로컬 도구 매니페스트 파일을 찾지 않습니다. 이 변경 내용은 Linux 또는 macOS에 영향을 주지 않습니다.

이전 동작

이전에는 .NET SDK 로컬 도구가 도구 매니페스트를 검색할 때 모든 플랫폼에서 루트 폴더를 확인했습니다. 현재 디렉터리에서 매니페스트를 찾을 때까지 디렉터리 트리에서 루트 폴더까지 검색이 계속되었습니다. 각 수준에서 .NET은 .config 하위 폴더에서 dotnet-tools.json이라는 도구 매니페스트를 검색합니다. Windows 시스템에서 다른 도구 매니페스트를 찾을 수 없는 경우 SDK는 궁극적으로 C:\.config\dotnet-tools.json에서 도구 매니페스트를 찾았습니다.

새 동작

.NET은 DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT 환경 변수를 통해 재정의되지 않는 한 Windows에서 기본적으로 더 이상 현재 디렉터리 트리의 루트 폴더에서 검색하지 않습니다. 기본적으로 DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOTfalse으로 설정되어 있습니다.

도입된 버전

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

호환성이 손상되는 변경의 형식

이 변경 사항은 동작 변경입니다.

변경 이유

이 변경 내용은 보안 문제를 해결하기 위해 수행되었습니다. 모든 사용자가 Windows의 C:\ 디렉터리에 파일 및 폴더를 만들 수 있으므로 권한이 낮은 공격자는 C:\.config\dotnet-tools.json 파일을 하이재킹할 수 있습니다. 관리자가 dotnet 도구 명령을 실행하는 경우 도구는 파일에서 악의적인 구성 정보를 읽고 악성 도구를 다운로드하여 실행할 수도 있습니다.

새 동작을 사용하지 않도록 설정하려면 환경 변수 DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT을(를) true 또는 1(으)로 설정합니다.

참고 항목