apphost 이제 singlefilehost Intel CET 호환(옵션으로 컴파일됨)으로 /CETCOMPAT 표시됩니다. 이 변경 내용은 .NET 애플리케이션의 보안을 강화하기 위해 수행되었습니다. 그러나 .NET 앱이 로드하고 상호 운용할 수 있는 공유 라이브러리에 제한이 적용됩니다. 라이브러리는 섀도 스택 또는 예외 처리를 위해 허용된 연속 주소 테이블에 없는 명령 포인터가 있는 위치에 스레드 컨텍스트를 설정할 수 없습니다.
이전 동작
이전에는 .NET 프로세스에 로드된 공유 라이브러리가 SetThreadContext, 스레드 컨텍스트를 프로세스 주소 공간의 모든 위치로 설정할 수 있었습니다.
새 동작
.NET 9부터 .NET 프로세스에 로드된 공유 라이브러리는 SetThreadContext, 스레드 컨텍스트를 다음 위치로만 설정할 수 있습니다.
- 그림자 스택에 있습니다.
- 예외 처리에 허용되는 연속 주소 테이블(컴파일러 옵션 또는
/EHCONTAPI에 의해SetProcessDynamicEHContinuationTargets생성됨).
라이브러리가 스레드 컨텍스트를 다른 위치로 변경하려고 하면 프로세스가 종료됩니다.
도입된 버전
.NET 9 미리 보기 6
호환성이 손상되는 변경의 형식
이 변경은 이진 호환성에 영향을 줄 수 있습니다.
변경 이유
CET를 사용하도록 설정하면 ROP(반환 지향 프로그래밍) 악용에 대해 하드웨어 적용 스택 보호를 추가하여 .NET 애플리케이션의 보안을 강화합니다.
권장 조치
해결 방법:
- 앱의 프로젝트 파일(예
<CETCompat>false</CETCompat>파일)에 추가하여 CET를 옵트아웃할 수 있습니다. - Windows 보안 앱 또는 그룹 정책을 사용하여 특정 .NET 애플리케이션에 대한 하드웨어 지원 스택 적용을 옵트아웃합니다. 자세한 내용은 악용 방지 사용을 참조하세요.
영향을 받는 API
- 해당 없음(N/A)
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET