마이크로소프트(MS)가 CPU 속 안전한 공간에 애플리케이션 코드를 보관하는 보안 기능을 개발하고 있다.
MS는 자사 기술 커뮤니티 사이트를 통해 '하드웨어 엔포스드 스택 보호(Hardware-enforced Stack Protection)' 기능을 개발 중이라고 지난 25일 발표했다.
MS 윈도 커널 그룹 매니저인 하리 풀라파카에 따르면 이 기능은 애플리케이션이 CPU 메모리 상에서 실행되는 동안 로컬 CPU 하드웨어를 사용해 자체 코드를 보호해준다.
이 기능을 활용하면 애플리케이션에서 의도된 제어 흐름의 복사본을 뜻하는 '섀도 스택'을 하드웨어 보안 환경에 보관하게 된다. 섀도 스택과 일치하지 않는 코드 수정은 차단된다.
MS는 이 기능이 메모리 버그에 기반한 취약점들을 악용해 앱의 코드를 가로채는 맬웨어의 공격을 막을 수 있다고 설명했다. 스택 버퍼 오버플로(stack buffer overflows), 댕글링 포인터(dangling pointers), 초기화되지 않은 변수(uninitialized variables) 등이 이같은 취약점에 해당된다.
이 기능은 제어 흐름 강화 시행 기술(CET) 지침이 인텔 칩셋에서만 작동한다. 이를 지원하지 않는 하드웨어를 사용하는 경우에는 윈도에서 하드웨어 엔포스드 스택 보호 기능을 가능케 하는 PE 비트를 무시하게 된다.
풀라파카는 "실행파일에 대한 커널 보호를 요청하기 위해 PE 헤더에 비트를 설정하는 새 링커 플래그가 존재한다"며 "이를 통해 하드웨어 엔포스트 스택 보호 기능을 애플리케이션에 적용할 수 있다"고 설명했다.
관련기사
- MS, 제로데이 취약점 경고2020.03.26
- MS, 유출된 'SMB 취약점' 보안 패치 뒤늦게 배포2020.03.26
- 인텔 CPU서 데이터 유출 취약점 '캐시아웃' 발견2020.03.26
- FDA, GE사 의료 기기서 보안 취약점 발견2020.03.26
이어 "이 기능을 지원하는 윈도와 섀도 스택 호환 하드웨어에서 애플리케이션이 이 비트를 설정할 경우, 애플리케이션이 실행되는 동안 커널은 섀도 스택을 유지한다"고 덧붙였다.
같은 날 MS는 이 기능을 윈도10 인사이더 프리뷰 빌드에서 테스트해볼 수 있게 했다.