하드웨어 보안의 최신 동향
Intel의 CET(제어 흐름 강제 기술) 등에서 채택된 하드웨어 섀도 스택의 설명으로 올바른 것은?
- A스택의 내용을 일정 시간마다 비휘발성 메모리에 저장해 두고, 프로그램이 비정상 종료했을 때 그 내용으로부터 실행을 재개한다
- B함수의 지역 변수를 일반 스택과는 별도의 고속 메모리에 두어, 캐시 미스를 줄이고 함수 호출을 빠르게 한다
- C함수를 호출할 때 복귀 주소의 복제를 일반 쓰기로는 바꿀 수 없는 별도의 스택에도 두고, 복귀할 때 둘을 비교한다
정답과 해설 보기
정답: C. 함수를 호출할 때 복귀 주소의 복제를 일반 쓰기로는 바꿀 수 없는 별도의 스택에도 두고, 복귀할 때 둘을 비교한다
스택의 버퍼 오버플로 등으로 복귀 주소가 바뀌어 쓰이면, 함수에서 복귀할 때 공격자가 고른 위치로 실행이 옮겨 가 버립니다. 섀도 스택에서는 call 명령이 복귀 주소를 일반 스택과 섀도 스택 양쪽에 쌓고, ret 명령이 둘을 비교합니다. 섀도 스택의 페이지는 일반 스토어 명령으로는 쓸 수 없는 특별한 종류의 페이지이므로, 일반 스택을 바꿔 쓴 공격자도 복제까지는 바꿀 수 없으며, 일치하지 않으면 예외가 일어나 실행이 멈춥니다.