Learning
토픽 73 / 85·보안과 보호

ASLR (Address Space Layout Randomization)

ASLR (Address Space Layout Randomization)

프로세스의 메모리 영역(스택, 힙, 공유 라이브러리, 실행 코드) 배치를 실행 시마다 무작위로 변경하여 메모리 기반 공격을 어렵게 만드는 보안 기법

목적: 버퍼 오버플로우, ROP, 코드 인젝션 등 메모리 공격 방어

랜덤화 대상

  • 스택(Stack): 스택 베이스 주소 랜덤화, 지역 변수/리턴 주소 위치 변경
  • 힙(Heap): 동적 할당 시작 주소 랜덤화
  • 공유 라이브러리: libc 등 라이브러리 로딩 주소 랜덤화
  • 실행 코드(PIE): Position-Independent Executable, 실행 파일 자체 주소 랜덤화

효과: 공격자가 특정 메모리 주소를 예측 불가, 익스플로잇 성공률 대폭 감소

우회 기법

  • 정보 누출(Info Leak): 메모리 주소를 읽어 ASLR 무력화
  • ROP(Return-Oriented Programming): 기존 코드 조각(가젯) 체인 활용
  • 브루트 포스: 32비트에서 엔트로피 낮아 반복 시도 가능
  • Heap Spraying: 대량 데이터로 특정 주소에 코드 배치

DEP/NX와 조합: ASLR(주소 예측 방지) + DEP/NX(데이터 영역 실행 방지), 두 기법 조합 시 효과 극대화

지원: Linux(2.6.12+), Windows(Vista+), macOS(10.5+), iOS, Android

비교: ASLR(주소 랜덤화/예측방지) vs DEP/NX(실행방지/데이터영역) vs Stack Canary(스택 무결성/오버플로우 탐지) vs CFI(제어흐름 무결성)

연관: 보안 및 보호, 버퍼 오버플로우, DEP, ROP, PIE, 메모리 보호