경계 밖 쓰기를 막지 못하면 각 방어층은 우회 비용만 높인다

스택 버퍼를 넘은 바이트는 인접 데이터를 훼손하고, 제어 데이터까지 닿으면 흐름 탈취로 이어질 수 있습니다.

개념적 프레임

낮은 주소 → 높은 주소
buffer[64]외부 입력의 목적지
canary함수 종료 전 변조 검사
saved state프레임·레지스터 저장 값
return target반환 제어 지점의 한 예
입력 길이 > 목적지 용량 → 인접 영역으로 손상 확산

결함에서 악용까지

각 단계에서 차단
1
범위 검사 누락고정 버퍼에 제한 없는 쓰기
2
메모리 손상카나리·포인터·제어 데이터 변조
3
제어 전환 시도코드 주입 또는 ROP/JOP 재사용
1 · PREVENT경계 인지 설계메모리 안전 언어, 길이 검증, 크기 제한 API
2 · FIND빌드·테스트 탐지경고·SAST·퍼징·AddressSanitizer
3 · DETECT런타임 변조 감지FORTIFY_SOURCE · stack-protector-strong
4 · CONTAIN악용 표면 축소NX · ASLR+PIE · RELRO · CFI/CET

도식 범위 · 실제 스택 배치와 성장 방향은 ABI·컴파일러·최적화에 따라 다릅니다. 카나리나 ASLR 하나만으로 취약점이 사라지지는 않습니다.