ASLR (Address Space Layout Randomization)
- 실행파일이 메모리에 로드될 때 기본 주소는 항상 동일한 주소를 갖는다. 하지만 이렇게 동일한 메모리 주소를 가지는 것은 매우 취약한 문제점이 될 수 있다. 주소가 동일하기 때문에 해당 주소에 악성 코드를 적재하기가 쉬워지기 때문이다.
- ASLR은 위와같은 메모리 상의 공격을 어렵게 하기 위해 스택이나 힙, 라이브러리 등의 주소를 랜덤으로 프로세스 주소 공간에 배치함으로써 실행할 때마다 데이터의 주소가 바뀌게 하는 기법이다.
ASLR 과 program break
ASLR 이 활성화 되어있을 때
ASLR이 활성화 되어있을 경우에는, start_brk 및 brk는 BSS 세그먼트 끝에 Random brk offset을 더한값과 같아진다.
( 이때 Random brk offset이 0이면 ASLR을 껐을때와 같다. )
ASLR이 비활성화 되어있을 때
반면, ASLR이 비활성화 되어있을 경우, start_brk 및 brk는 bss 영역의 끝과 같아진다.