버퍼 오버플로우(buffer overflow) 공격의 대응책으로 가장 … | [경찰간부후보생 정보보호론] 23년 1회차 기출문제 상세 페이지
1[경찰간부후보생 정보보호론] 23년 1회차
버퍼 오버플로우(buffer overflow) 공격의 대응책으로 가장 적절하지 않은 것은?
1
스택에서 실행(execute) 권한을 제거하여, 프로그램을 실행할 수 없도록 한다.
2
컴파일러가 프로그램 함수 호출 시 RET 앞에 Canary 값을 주입하고, 종료 시, Canary 값이 변조되었는지 확인한다.
3
함수 호출 시 RET를 Global RET 스택에 저장하고, 종료 시 RET 값이 변조되었는지 확인한다.
4
스택과 라이브러리의 데이터 영역 주소를 암호화하고, strcat() 함수 사용 시 복호화하여 변조되었는지 확인한다.
해설
주소를 암호화했다가 strcat() 호출 시 복호화한다는 방식은 버퍼 오버플로우 대응책이 아니다.
주소와 관련된 실제 대책은 메모리 배치를 무작위로 바꾸는 ASLR이며, strcat()처럼 길이를 검사하지 않는 함수는 안전한 함수로 대체해야 한다.
- 스택의 실행 권한을 제거하는 것은 NX·DEP 방식의 대응책이다.
- RET 앞에 Canary 값을 넣고 변조를 확인하는 것은 Stack Guard 방식의 대응책이다.
- RET를 Global RET 스택에 저장해 비교하는 것은 Stack Shield 방식의 대응책이다.
오류나 개정된 내용이 보이면 알려주세요