16. 다음은 스택 버퍼 오버플로우 공격을 효과적으로 방어하기 위한스택 보호 메커니즘을 서술한 것이다. ㄱ~ㄷ에 들어갈 말을바르게 나열한 것은?
스택가드(stackguard)는 가장 잘 알려진 보호 메커니즘 중하나이다. 이것은 GCC 컴파일러의 확장 버전으로 추가의 함수 진입과 종료 코드를 삽입한다. 추가되는 함수 진입코드는 지역변수를 위한 공간을 할당하기 전에 이전 ( ㄱ )주소 앞에 ( ㄴ ) 값을 기록한다. 추가되는 함수 종료 코드는이전 ( ㄱ )를 복원하고 제어를 ( ㄷ )로 이동하는 보통의함수 종료 연산을 수행하기 전에 ( ㄴ ) 값이 변경되었는지를검사한다. 전통적인 스택 버퍼 오버플로우 시도는 이전( ㄱ )와 ( ㄷ )를 변경하기 위해 ( ㄴ ) 값을 바꾸어야하는데, 만약 변경되었다면 프로그램을 종료하게 된다.
- 1스택포인터 반환주소 카나리아(canary)
- 2스택포인터 카나리아(canary) 반환주소
- 3프레임포인터 카나리아(canary) 반환주소
- 4프레임포인터 반환주소 스택포인터