Share via


SetProcessMitigationPolicy 함수(processthreadsapi.h)

호출 프로세스에 대한 완화 정책을 설정합니다. 완화 정책을 사용하면 프로세스가 다양한 유형의 공격에 대해 자신을 강화할 수 있습니다.

구문

BOOL SetProcessMitigationPolicy(
  [in] PROCESS_MITIGATION_POLICY MitigationPolicy,
  [in] PVOID                     lpBuffer,
  [in] SIZE_T                    dwLength
);

매개 변수

[in] MitigationPolicy

적용할 완화 정책입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
ProcessDEPPolicy 프로세스의 DEP(데이터 실행 방지) 정책입니다.
lpBuffer 매개 변수는 DEP 정책 플래그를 지정하는 PROCESS_MITIGATION_DEP_POLICY 구조를 가리킵니다.
ProcessASLRPolicy 프로세스의 ASLR(주소 공간 레이아웃 임의화) 정책입니다.
lpBuffer 매개 변수는 ASLR 정책 플래그를 지정하는 PROCESS_MITIGATION_ASLR_POLICY 구조를 가리킵니다.
ProcessDynamicCodePolicy 프로세스의 동적 코드 정책입니다. 이 기능을 켜면 프로세스에서 동적 코드를 생성하거나 기존 실행 코드를 수정할 수 없습니다.
lpBuffer 매개 변수는 동적 코드 정책 플래그를 지정하는 PROCESS_MITIGATION_DYNAMIC_CODE_POLICY 구조를 가리킵니다.
ProcessStrictHandleCheckPolicy 프로세스가 유효하지 않은 핸들을 조작하면 심각한 오류가 발생합니다.
lpBuffer 매개 변수는 핸들 검사 정책 플래그를 지정하는 PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY 구조를 가리킵니다.
ProcessSystemCallDisablePolicy 가장 낮은 계층에서 NTUser/GDI 함수를 사용하는 기능을 사용하지 않도록 설정합니다.
lpBuffer 매개 변수는 시스템 호출 사용 안 함 정책 플래그를 지정하는 PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY 구조를 가리킵니다.
ProcessMitigationOptionsMask 시스템의 모든 완화 옵션에 대해 유효한 비트의 마스크를 반환합니다. 애플리케이션은 지원되지 않는 모든 비트를 한 번에 제외하기 위해 비트와 마스크를 결합하여 완화 옵션을 위해 운영 체제를 쿼리하지 않고도 많은 완화 옵션을 설정할 수 있습니다.
lpBuffer 매개 변수는 마스크의 ULONG64 비트 벡터를 가리키거나 ULONG64 비트 벡터의 2개 요소 배열인 64비트 이상을 수용합니다.
ProcessExtensionPointDisablePolicy lpBuffer 매개 변수는 확장 지점 사용 안 함 정책 플래그를 지정하는 PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY 구조를 가리킵니다.
ProcessControlFlowGuardPolicy 프로세스의 CFG(Control Flow Guard) 정책입니다.
lpBuffer 매개 변수는 CFG 정책 플래그를 지정하는 PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY 구조를 가리킵니다.
ProcessSignaturePolicy Microsoft, Windows 스토어 또는 Microsoft, Windows 스토어 및 WHQL(Windows Hardware Quality Labs)에서 서명한 이미지로 이미지 로드를 제한할 수 있는 프로세스의 정책입니다.
lpBuffer 매개 변수는 서명 정책 플래그를 지정하는 PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY 구조를 가리킵니다.
ProcessFontDisablePolicy 프로세스의 글꼴 로드와 관련된 정책입니다. 이 기능을 켜면 프로세스가 시스템 이외의 글꼴을 로드할 수 없습니다.
lpBuffer 매개 변수는 글꼴 로드에 대한 정책 플래그를 지정하는 PROCESS_MITIGATION_FONT_DISABLE_POLICY 구조를 가리킵니다.
ProcessImageLoadPolicy 프로세스에 매핑할 수 있는 실행 이미지 유형을 결정하는 프로세스에 대한 이미지 로드와 관련된 정책입니다. 켜면 일부 위치(예: 필수 레이블이 낮은 원격 디바이스 또는 파일)에서 이미지를 로드할 수 없습니다.
lpBuffer 매개 변수는 이미지 로드에 대한 정책 플래그를 지정하는 PROCESS_MITIGATION_IMAGE_LOAD_POLICY 구조를 가리킵니다.
ProcessRedirectionTrustPolicy 프로세스의 RedirectionGuard 정책입니다. lpBuffer 매개 변수는 완화 모드를 지정하는 PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY 구조를 가리킵니다.
ProcessSideChannelIsolationPolicy Windows 10, 버전 1809 이상: 지정된 프로세스에 대한 사이드 채널의 격리와 관련된 정책입니다.
lpBuffer 매개 변수는 측면 채널 격리에 대한 정책 플래그를 지정하는 PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY 구조를 가리킵니다.
ProcessUserShadowStackPolicy Windows 10 버전 2004 이상: 프로세스에 대한 사용자 모드 하드웨어 적용 스택 보호에 관한 정책입니다.
lpBuffer 매개 변수는 사용자 모드 하드웨어 적용 스택 보호에 대한 정책 플래그를 지정하는 PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY 구조를 가리킵니다.

[in] lpBuffer

MitigationPolicy 매개 변수가 ProcessDEPPolicy이면 이 매개 변수는 DEP 정책 플래그를 지정하는 PROCESS_MITIGATION_DEP_POLICY 구조를 가리킵니다.

MitigationPolicy 매개 변수가 ProcessASLRPolicy인 경우 이 매개 변수는 ASLR 정책 플래그를 지정하는 PROCESS_MITIGATION_ASLR_POLICY 구조를 가리킵니다.

MitigationPolicy 매개 변수가 ProcessImageLoadPolicy인 경우 이 매개 변수는 이미지 로드에 대한 정책 플래그를 수신하는 PROCESS_MITIGATION_IMAGE_LOAD_POLICY 구조를 가리킵니다.

MitigationPolicy 매개 변수가 ProcessStrictHandleCheckPolicy이면 이 매개 변수는 핸들 검사 정책 플래그를 지정하는 PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY 구조를 가리킵니다.

MitigationPolicy 매개 변수가 ProcessSystemCallDisablePolicy인 경우 이 매개 변수는 시스템 호출 사용 안 함 정책 플래그를 지정하는 PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY 구조를 가리킵니다.

MitigationPolicy 매개 변수가 ProcessMitigationOptionsMask인 경우 이 매개 변수는 마스크에 대한 ULONG64 비트 벡터를 가리키거나 64비트 이상의 2개 요소 배열인 ULONG64 비트 벡터를 수용합니다.

MitigationPolicy 매개 변수가 ProcessExtensionPointDisablePolicy인 경우 이 매개 변수는 확장 지점 사용 안 함 정책 플래그를 지정하는 PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY 구조를 가리킵니다.

MitigationPolicy 매개 변수가 ProcessControlFlowGuardPolicy인 경우 이 매개 변수는 CFG 정책 플래그를 지정하는 PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY 구조를 가리킵니다.

MitigationPolicy 매개 변수가 ProcessSignaturePolicy인 경우 이 매개 변수는 서명 정책 플래그를 지정하는 PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY 구조를 가리킵니다.

MitigationPolicy 매개 변수가 ProcessFontDisablePolicy인 경우 이 매개 변수는 글꼴 로드에 대한 정책 플래그를 지정하는 PROCESS_MITIGATION_FONT_DISABLE_POLICY 구조를 가리킵니다.

MitigationPolicy 매개 변수가 ProcessImageLoadPolicy인 경우 이 매개 변수는 이미지 로드에 대한 정책 플래그를 지정하는 PROCESS_MITIGATION_IMAGE_LOAD_POLICY 구조를 가리킵니다.

MitigationPolicy 매개 변수가 ProcessRedirectionTrustPolicy이면 이 매개 변수는 완화 모드를 지정하는 PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY 구조를 가리킵니다.

MitigationPolicy 매개 변수가 ProcessUserShadowStackPolicy인 경우 이 매개 변수는 사용자 모드 하드웨어 적용 스택 보호에 대한 정책 플래그를 지정하는 PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY 구조를 가리킵니다.

[in] dwLength

lpBuffer의 크기(바이트)입니다.

반환 값

함수가 성공하면 TRUE를 반환합니다. 함수가 실패하면 FALSE를 반환합니다. 이 함수에 대해 정의된 오류 값을 검색하려면 GetLastError를 호출합니다.

설명

프로세스에 대한 완화 정책을 설정하면 공격자가 보안 취약성을 악용하지 못하도록 방지할 수 있습니다. SetProcessMitigationPolicy 함수를 사용하여 프로그래밍 방식으로 보안 완화를 사용하거나 사용하지 않도록 설정합니다.

효율성을 극대화하려면 프로세스 초기화 전이나 프로세스 중에 완화 정책을 적용해야 합니다. 예를 들어 이미지의 강제 재배치를 사용하도록 설정하는 ASLR 정책은 프로세스의 모든 이미지가 로드되기 전에 적용된 경우에만 효과적입니다.

ASLR 완화 정책은 적용된 후 덜 제한적으로 만들 수 없습니다.

이 함수를 사용하는 애플리케이션을 컴파일하려면 _WIN32_WINNT >= 0x0602 설정합니다. 자세한 내용은 Windows 헤더 사용을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 processthreadsapi.h
라이브러리 Kernel32.lib
DLL Kernel32.dll