다음을 통해 공유


기본적으로 지원되는 CET

apphost 이제 singlefilehost Intel CET 호환(옵션으로 컴파일됨)으로 /CETCOMPAT 표시됩니다. 이 변경 내용은 .NET 애플리케이션의 보안을 강화하기 위해 수행되었습니다. 그러나 .NET 앱이 로드하고 상호 운용할 수 있는 공유 라이브러리에 제한이 적용됩니다. 라이브러리는 섀도 스택 또는 예외 처리를 위해 허용된 연속 주소 테이블에 없는 명령 포인터가 있는 위치에 스레드 컨텍스트를 설정할 수 없습니다.

이전 동작

이전에는 .NET 프로세스에 로드된 공유 라이브러리가 SetThreadContext, 스레드 컨텍스트를 프로세스 주소 공간의 모든 위치로 설정할 수 있었습니다.

새 동작

.NET 9부터 .NET 프로세스에 로드된 공유 라이브러리는 SetThreadContext, 스레드 컨텍스트를 다음 위치로만 설정할 수 있습니다.

  • 그림자 스택에 있습니다.
  • 예외 처리에 허용되는 연속 주소 테이블(컴파일러 옵션 또는 /EHCONT API에 의해 SetProcessDynamicEHContinuationTargets 생성됨).

라이브러리가 스레드 컨텍스트를 다른 위치로 변경하려고 하면 프로세스가 종료됩니다.

도입된 버전

.NET 9 미리 보기 6

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

이 변경은 이진 호환성에 영향을 줄 수 있습니다.

변경 이유

CET를 사용하도록 설정하면 ROP(반환 지향 프로그래밍) 악용에 대해 하드웨어 적용 스택 보호를 추가하여 .NET 애플리케이션의 보안을 강화합니다.

해결 방법:

  • 앱의 프로젝트 파일(예<CETCompat>false</CETCompat> 파일)에 추가하여 CET를 옵트아웃할 수 있습니다.
  • Windows 보안 앱 또는 그룹 정책을 사용하여 특정 .NET 애플리케이션에 대한 하드웨어 지원 스택 적용을 옵트아웃합니다. 자세한 내용은 악용 방지 사용을 참조하세요.

영향을 받는 API

  • 해당 없음(N/A)