PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY 구조체(winnt.h)
사용자 모드 HSP(하드웨어 적용 스택 보호)에 대한 프로세스 완화 정책 설정을 포함합니다. GetProcessMitigationPolicy 및 SetProcessMitigationPolicy 함수는 이 구조를 사용합니다.
구문
typedef struct _PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY {
union {
DWORD Flags;
struct {
DWORD EnableUserShadowStack : 1;
DWORD AuditUserShadowStack : 1;
DWORD SetContextIpValidation : 1;
DWORD AuditSetContextIpValidation : 1;
DWORD EnableUserShadowStackStrictMode : 1;
DWORD BlockNonCetBinaries : 1;
DWORD BlockNonCetBinariesNonEhcont : 1;
DWORD AuditBlockNonCetBinaries : 1;
DWORD CetDynamicApisOutOfProcOnly : 1;
DWORD SetContextIpValidationRelaxedMode : 1;
DWORD ReservedFlags : 22;
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
} PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY, *PPROCESS_MITIGATION_USER_SHADOW_STACK_POLICY;
멤버
DUMMYUNIONNAME
DUMMYUNIONNAME.Flags
이 멤버는 시스템 사용을 위해 예약되어 있습니다.
DUMMYUNIONNAME.DUMMYSTRUCTNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME.EnableUserShadowStack
TRUE이면 호환 모드에서 프로세스에 대해 사용자 모드 하드웨어 적용 스택 보호가 사용하도록 설정됩니다. 즉, CPU는 하드웨어에서 지원하는 경우 섀도 스택 메커니즘을 사용하여 런타임 시 함수 반환 주소를 확인합니다. 호환 모드에서는 CETCOMPAT(섀도 스택)와 호환되는 것으로 간주되는 모듈에서 발생하는 섀도 스택 위반만 치명적입니다. CETCOMPAT로 간주되려면 이진 파일에 대해 CETCOMPAT 로 컴파일하거나 동적 코드에 SetProcessDynamicEnforcedCetCompatibleRanges 를 사용하여 표시해야 합니다. SetProcessMitigationPolicy를 통해 이 필드를 변경할 수 없습니다.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditUserShadowStack
TRUE이면 치명적일 섀도 스택 위반이 치명적이지 않은 것으로 처리되고 진단 이벤트가 이벤트 로그에 기록됩니다. 이 필드가 TRUE이면 호환 모드가 감사되고 있는지 또는 strict 모드가 감사되는지에 따라 EnableUserShadowStackStack이 TRUE이고 EnableUserShadowStackStrictMode가 TRUE일 수 있습니다. SetProcessMitigationPolicy를 통해 이 필드를 변경할 수 없습니다.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.SetContextIpValidation
TRUE이면 SetThreadContext 및 RtlRestoreContext와 같은 스레드의 실행 컨텍스트를 수정하는 API를 호출할 때 새 실행 컨텍스트에 지정된 명령 포인터에서 유효성 검사가 수행됩니다. SetProcessMitigationPolicy를 통해 이 필드를 변경할 수 없습니다.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditSetContextIpValidation
TRUE이면 유효성 검사를 실패하게 한 명령 포인터가 대신 허용되고 진단 이벤트가 이벤트 로그에 기록됩니다. 이 필드가 TRUE이면 SetContextIpValidation은 TRUE여야 하며 현재 작동 중인 명령 포인터 유효성 검사 모드에 따라 SetContextIpValidationRelaxedMode는 TRUE일 수 있습니다. SetProcessMitigationPolicy를 통해 이 필드를 변경할 수 없습니다.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.EnableUserShadowStackStrictMode
TRUE이면 엄격한 모드에서 프로세스에 대해 사용자 모드 하드웨어 적용 스택 보호를 사용하도록 설정됩니다. 모든 섀도 스택 위반은 치명적입니다. 이 필드가 TRUE이면 EnableUserShadowStack이 TRUE여야 합니다. HSP가 호환 모드에서 사용하도록 설정된 경우 이 필드를 TRUE로 설정하고 SetProcessMitigationPolicy를 호출하여 런타임 시 엄격한 모드로 업그레이드할 수 있습니다. SetProcessMitigationPolicy를 통해 HSP를 다운그레이드하거나 사용하지 않도록 설정할 수 없습니다. HSP를 사용하지 않도록 설정하면 SetProcessMitigationPolicy를 통해 사용하도록 설정할 수 없습니다.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.BlockNonCetBinaries
TRUE이면 CETCOMPAT로 컴파일되지 않은 이진 파일이 프로세스에 로드되지 않도록 차단됩니다. SetProcessMitigationPolicy를 호출하여 프로세스가 시작된 후에 이 정책을 사용하도록 설정할 수 있습니다. 사용하도록 설정한 후에는 사용하지 않도록 설정할 수 없습니다.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.BlockNonCetBinariesNonEhcont
TRUE이면 CETCOMPAT로 컴파일되지 않거나 예외 처리 연속 메타데이터(/guard:ehcont)가 포함되지 않은 이진 파일은 프로세스에 로드되지 않도록 차단됩니다. 이 필드가 TRUE이면 BlockNonCetBinaries는 TRUE여야 합니다. SetProcessMitigationPolicy를 호출하여 프로세스가 시작된 후에 이 정책을 사용하도록 설정할 수 있습니다. 사용하도록 설정한 후에는 사용하지 않도록 설정하거나 다운그레이드할 수 없습니다.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditBlockNonCetBinaries
TRUE이면 차단된 이진 로드가 대신 허용되고 진단 이벤트가 이벤트 로그에 기록됩니다. 이 필드가 TRUE이면 BlockNonCetBinaries는 TRUE이고 BlockNonCetBinariesNonEhcont는 현재 프로세스에 로드되지 않도록 차단되는 이진 형식에 따라 TRUE일 수 있습니다. SetProcessMitigationPolicy를 통해 이 필드를 변경할 수 없습니다.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.CetDynamicApisOutOfProcOnly
TRUE이면 동적 코드의 보안 속성을 지정하는 데 사용되는 특정 HSP API는 보안을 위해 프로세스 외부에서만 호출할 수 있습니다. 이러한 API는 SetProcessDynamicEHContinuationTargets 및 SetProcessDynamicEnforcedCetCompatibleRanges입니다. SetProcessMitigationPolicy를 호출하여 프로세스가 시작된 후에 이 정책을 사용하도록 설정할 수 있습니다. 사용하도록 설정한 후에는 사용하지 않도록 설정할 수 없습니다.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.SetContextIpValidationRelaxedMode
TRUE이면 프로세스의 명령 포인터 유효성 검사가 완화 모드로 다운그레이드되어 동적 코드 또는 예외 처리 연속 메타데이터가 포함되지 않은 이진 파일에 있는 모든 명령 포인터를 허용합니다. 이 필드가 TRUE이면 SetContextIpValidation은 TRUE여야 합니다. 이 필드를 FALSE로 설정하고 SetProcessMitigationPolicy를 호출하여 런타임 시 이 프로세스를 완화 모드에서 일반 모드로 업그레이드할 수 있습니다.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.ReservedFlags
이 멤버는 시스템 사용을 위해 예약되어 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 버전 2004(10.0; 빌드 19041) |
지원되는 최소 서버 | Windows Server 버전 2004(10.0; 빌드 19041) |
머리글 | winnt.h |