DEFENSE IN DEPTH

버퍼 오버플로우 방어는 코드, 컴파일러, OS가 함께 막아야 합니다.

취약한 함수 하나를 고치는 것만으로는 부족합니다. 스택 카나리, ASLR, NX, PIE, RELRO, CFI가 각기 다른 공격 단계를 막습니다.

원인버퍼 범위를 넘는 쓰기로 인접 메모리 변조
표적리턴 주소, 함수 포인터, GOT 같은 제어 정보
목표제어 흐름을 공격자 의도대로 바꾸기
Safe API경계 검사

strcpy 대신 snprintf, fgets를 사용합니다.

Canary리턴 주소 변조 탐지

반환 전 랜덤 값이 바뀌었는지 확인합니다.

ASLR주소 예측 방해

스택, 힙, 라이브러리 위치를 실행마다 바꿉니다.

NX데이터 실행 차단

스택과 힙에 넣은 코드를 바로 실행하지 못하게 합니다.

RELROGOT 보호

동적 링크 테이블 변조를 어렵게 만듭니다.

CFI간접 호출 검증

허용된 제어 흐름 밖으로 점프하지 못하게 합니다.

단일 방어는 깨질 수 있음

공격자는 우회 기법을 조합하므로 여러 계층이 필요합니다.

컴파일 옵션을 확인

보안 플래그가 실제 바이너리에 적용됐는지 검사합니다.

악성 코드 방어와 연결

무결성 검사와 MAC 정책은 침해 이후 확산을 줄입니다.