스택(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) 사용, 입력값에 대한 적절한 크기 검증
'정보보안기사&CISSP관련 > System Security' 카테고리의 다른 글
[Day 114] 루트킷(Rootkit) (0) | 2020.12.02 |
---|---|
[Day 112] tripwire(트립와이어) (0) | 2020.11.30 |
[Day 89] 다중 프로그래밍(Multi programming), 이중모드(Dual mode) (0) | 2020.11.07 |
[Day 87] Buffer Overflow Attack(버퍼 오버플로우 공격) (0) | 2020.11.05 |
[Day 86] logrotate(리눅스 로그순환) (0) | 2020.11.04 |