커널 모드 하드웨어 기반 스택 보호

하드웨어 강제 스택 보호는 악성 프로그램이 낮은 수준의 드라이버를 사용하여 PC를 하이재킹하기 어렵게 만드는 하드웨어 기반 보안 기능입니다.
드라이버는 운영 체제(이 경우 Windows)와 장치(예: 키보드 또는 웹캠)가 서로 통신할 수 있는 소프트웨어입니다. 디바이스가 Windows에서 작업을 수행하도록 하려는 경우 드라이버를 사용하여 해당 요청을 보냅니다.
하드웨어 적용 스택 보호는 커널 모드 메모리의 반환 주소를 수정하여 악성 코드를 시작하는 공격을 방지하여 작동합니다. 이 보안 기능을 사용하려면 실행 중인 코드의 반환 주소를 확인하는 기능이 포함된 CPU가 필요합니다.
커널 모드에서 코드를 실행할 때 일반 코드 실행을 악성 코드로 리디렉션하기 위해 악성 프로그램 또는 드라이버에 의해 커널 모드 스택의 반환 주소가 손상될 수 있습니다. 지원되는 CPU에서 CPU는 드라이버가 수정할 수 없는 읽기 전용 섀도 스택에 유효한 반환 주소의 두 번째 복사본을 유지 관리합니다. 일반 스택의 반환 주소가 수정된 경우 CPU는 섀도 스택에서 반환 주소의 복사본을 확인하여 이러한 불일치를 감지할 수 있습니다. 이 불일치가 발생하면 컴퓨터는 악성 코드가 실행되지 않도록 중지 오류(블루 스크린이라고도 함)를 표시합니다.
소수의 합법적인 드라이버가 악의적이지 않은 목적으로 반환 주소 수정에 관여하므로 일부 드라이버가 이 보안 기능과 호환되는 것은 아닙니다. Microsoft는 최신 드라이버가 하드웨어 적용 스택 보호와 호환되도록 다양한 드라이버 게시자에 참여해 왔습니다.
토글 단추를 사용하여 하드웨어 적용 스택 보호를 켜 거나 끌 수 있습니다.
하드웨어 적용 스택 보호를 사용하려면 메모리 무결성을 사용하도록 설정해야 하며 Intel Control-Flow 적용 기술 또는 AMD 섀도 스택을 지원하는 CPU를 실행해야 합니다.
호환되지 않는 드라이버 또는 서비스가 있다고 말하면 어떻게 해야 하나요?
하드웨어 강제 스택 보호가 켜지 않으면 호환되지 않는 디바이스 드라이버 또는 서비스가 이미 설치되어 있음을 알 수 있습니다. 디바이스 제조업체 또는 애플리케이션 게시자에 문의하여 업데이트된 드라이버를 사용할 수 있는지 확인합니다. 호환되는 드라이버를 사용할 수 없는 경우 호환되지 않는 드라이버를 사용하는 디바이스 또는 앱을 제거할 수 있습니다.
일부 애플리케이션은 애플리케이션을 설치하는 동안 드라이버 대신 서비스를 설치하고 애플리케이션이 시작될 때만 드라이버를 설치할 수 있습니다. 호환되지 않는 드라이버를 보다 정확하게 검색하기 위해 호환되지 않는 드라이버와 연결된 것으로 알려진 서비스도 열거됩니다.
참고: 하드웨어 강제 스택 보호를 켠 후 호환되지 않는 드라이버가 있는 디바이스 또는 앱을 설치하려고 하면 동일한 메시지가 표시될 수 있습니다. 이 경우 디바이스 제조업체 또는 앱 게시자에 검사 다운로드할 수 있는 업데이트된 드라이버가 있는지 확인하거나 호환되는 드라이버를 사용할 수 있을 때까지 특정 디바이스 또는 앱을 설치하지 않는 것과 동일한 조언이 적용됩니다.
Ai :
커널 모드 하드웨어 기반 스택 보호 (Kernel Mode Hardware-Enforced Stack Protection)는 운영체제의 가장 핵심적인 영역인 커널(Kernel)을 보호하기 위해 CPU 하드웨어 수준에서 스택 기반의 공격을 방어하는 보안 기능입니다.
이 기능은 Windows 10/11의 "코어 격리(Core Isolation)" 보안 기능의 일부로 제공되며, 특히 낮은 수준의 드라이버를 악용하는 정교한 사이버 공격으로부터 시스템의 무결성을 지키는 데 필수적입니다.
1. 커널 모드 하드웨어 기반 스택 보호의 원리
이 기술의 핵심은 섀도우 스택(Shadow Stack)을 사용하는 것입니다. 이는 주로 Intel의 CET (Control-flow Enforcement Technology)나 AMD의 Shadow Stack과 같은 최신 CPU 기술에 의해 구현됩니다.
일반 스택과 별도 분리: 프로그램이 함수를 호출할 때 사용되는 일반 스택(Call Stack) 외에, 반환 주소(Return Address)만을 저장하는 별도의 보호된 스택(Shadow Stack)을 하드웨어 수준에서 만듭니다.
하드웨어 보호: 이 섀도우 스택은 일반적인 소프트웨어 공격자가 접근하거나 수정할 수 없도록 CPU 명령어 수준에서 읽기 전용으로 보호됩니다.
무결성 검증: 함수 실행이 끝나고 프로그램이 원래 위치로 돌아가기 위해 RET (Return) 명령이 실행될 때, CPU는 일반 스택에 저장된 반환 주소와 섀도우 스택에 저장된 원본 반환 주소를 동시에 비교합니다.
공격 방어: 만약 공격자가 스택 오버플로우 등의 기법을 이용해 일반 스택의 반환 주소를 악의적인 주소로 덮어썼더라도, 섀도우 스택의 원본 주소와 일치하지 않기 때문에 CPU가 이를 감지하고 실행을 중단하여 악성 코드가 실행되는 것을 차단합니다.
이러한 방식은 소프트웨어 기반의 스택 보호 기법보다 신뢰성과 속도가 훨씬 우수합니다.
2. Windows에서의 적용 및 활성화
Windows 운영체제에서 이 기능을 사용하려면 다음 두 가지 전제 조건이 충족되어야 합니다.
CPU 지원: Intel Tiger Lake(11세대 Core) 이상 또는 AMD Zen 3 이상 등 CET/Shadow Stack 기술을 지원하는 최신 CPU가 필요합니다.
VBS 및 HVCI 활성화: 가상화 기반 보안(VBS, Virtualization-based Security)과 하이퍼바이저 보호 코드 무결성(HVCI, Hypervisor-Enforced Code Integrity) 기능이 활성화되어 있어야 합니다. 이 기능은 커널 모드 코드를 가상 환경에서 격리하여 보안을 강화하는 기반 역할을 합니다.
활성화 방법 (Windows 10/11)
'Windows 보안' 앱을 실행합니다.
'장치 보안'을 선택합니다.
'코어 격리' 섹션에서 '코어 격리 세부 정보'를 클릭합니다.
'메모리 무결성'이 켜져 있는지 확인합니다. (이것이 HVCI입니다.)
'커널 모드 하드웨어 기반 스택 보호' 항목을 '(켜)짐'으로 설정하고 장치를 재부팅합니다.
3. 호환성 문제 (단점)
이 기능은 강력한 보안을 제공하지만, 일부 드라이버나 보안 관련 소프트웨어와 충돌을 일으킬 수 있습니다.
구형 또는 비호환 드라이버: 커널 모드 보호 기능을 지원하도록 설계되지 않은 오래된 드라이버가 로드될 때 오류가 발생하며 블루 스크린(BSOD)이 나타날 수 있습니다.
게임/보안 소프트웨어: 커널 레벨 접근 권한을 사용하는 일부 게임의 안티 치트(Anti-Cheat) 프로그램이나 특정 보안 소프트웨어 역시 이 기능과 충돌하여 오류를 일으키는 사례가 보고되기도 합니다.
만약 이 기능을 활성화한 후 시스템 불안정이나 블루 스크린 문제가 발생한다면, 'Windows 보안' 설정에서 이 기능을 일시적으로 '끔'으로 설정하고 재부팅하여 문제가 해결되는지 확인해 볼 수 있습니다.
