논문 정보
제목: Smashing The Stack For Fun And Profit
저자: Aleph One (Elias Levy)
발표: Phrack Magazine, 49호, 1996-11-08
분야: 시스템 보안, 익스플로잇 개발, 버퍼 오버플로우
저자: Aleph One (Elias Levy)
발표: Phrack Magazine, 49호, 1996-11-08
분야: 시스템 보안, 익스플로잇 개발, 버퍼 오버플로우
연구 배경
1996년은 인터넷이 상업화되던 시기였고, 1988년 Morris 웜 이후 취약점 연구는 태동기를 지나고 있었다. 그러나 "버퍼 오버플로우"는 그때까지 체계적으로 문서화된 적이 없었다. Aleph One은 스택 메모리 구조와 취약한 C 코드가 어떻게 공격자에게 제어권을 넘겨주는지를 최초로 단계별로 설명하며, 이후 30년간 모든 익스플로잇 개발의 기준이 된 논문을 Phrack에 게재했다.
핵심 내용
- 스택 구조 분석: 함수 호출 시 인자·리턴 주소·지역 변수가 스택에 쌓이는 정확한 레이아웃을 어셈블리 수준에서 설명 — 버퍼가 리턴 주소보다 낮은 주소에 위치한다는 핵심 통찰!
- 익스플로잇 원리: strcpy() 같은 경계 검사 없는 함수로 버퍼를 넘치게 채워 리턴 주소(EIP)를 공격자 주소로 덮어쓰기 → 실행 흐름 탈취!
- 셸코드 + NOP 슬레드: 정확한 주소가 없어도 성공하도록
0x90NOP 슬레드로 "착륙 지대"를 넓히고, 그 뒤에 setuid(0) + execve("/bin/sh") 셸코드를 배치 - setuid 공격: root 소유 setuid 바이너리를 공격해 root 셸 획득 — 당시 인터넷 데몬들의 치명적인 취약점을 실증
- 완성된 PoC: vuln.c (취약 프로그램) + exploit.c (공격 코드) 전체 소스 제공 — 교육적 가치 극대화
영향과 의의
- 익스플로잇 개발의 출발점: 이후 20년간 버퍼 오버플로우는 모든 주요 보안 사고의 근본 원인 (Code Red, Slammer, Blaster 웜 등!)
- 완화 기법 탄생의 계기: 이 논문 이후 StackGuard(1997), ASLR, NX/DEP, SSP 등 모든 메모리 보호 기법이 이 공격에 대응하기 위해 등장
- 보안 교육 필수 교재: 대학 보안 과정, CTF 대회, 익스플로잇 개발 서적(Hacking: The Art of Exploitation 등)의 공통 출발점 — 수천 회 인용
- 여전히 유효한 개념: 30년이 지난 지금도 힙 오버플로우, 스택 스매싱, ROP는 모두 이 논문의 직계 후손
출처
- Phrack 원문: phrack.org/issues/49/14.html
- 위키백과 (Buffer overflow): en.wikipedia.org/wiki/Buffer_overflow
- Aleph One 소개: en.wikipedia.org/wiki/Elias_Levy