본문 바로가기
정보보안기사&CISSP관련/System Security

[Day 111] 스택 버퍼 오버플로우(Stack Buffer Overflow) 공격 대응 방안

by minimalist_2022 2020. 11. 29.

스택(Stack)

  • 함수 처리를 위해 지역변수 및 매개변수가 위치하는 메모리 영역

 

스택 버퍼 오버플로우 공격(Stack Buffer Overflow Attack)

  • 스택 영역에 할당된 버퍼 크기를 초과하는 양의 데이터(실행 가능 코드)를 입력하여 복귀 주소(RET, Return Address)를 변경하고 공격자가 원하는 임의의 코드를 실행함
  • 특히 root 소유의 SUID 설정 프로그램에 버퍼 오버플로우가 발생하면 root 권한으로 악성 프로그램 실행 가능

 

스택 버퍼 오버플로우 대응방안

1. 스택가드(Stack Guard)

  • 프로그램의 복귀주소(RET)와 변수 사이에 특정값(Canary Word)을 저장해두었다가 그 값이 변경되면 오버플로우로 가정하여 프로그램 중단

 

2. 스택쉴드(Stack Shield)

  • 함수 시작 시 RET를 Global RET라는 특수 스택에 저장해뒀다가 함수 종료 시 기존 저장값과 RET를 비교해 다르면 오버플로우로 가정해 프로그램 중단

 

3. ASLR(Address Space Layout Randomization)

  • 실행시마다 메모리주소를 변경시켜 악성코드에 의한 특정주소 호출 방지

 

4. 취약하지 않은 함수(strncpy) 사용, 입력값에 대한 적절한 크기 검증