루트 폴더의 도구 매니페스트
.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_ROOT
은 false
으로 설정되어 있습니다.
도입된 버전
- .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
(으)로 설정합니다.
참고 항목
.NET