RELRO(Relocation Read Only)
- GOT Overwrite와 같은 메모리 변경 공격으로부터 바이너리, 데이터 섹션을 보호하는 기술.
- Partial RELRO, FULL RELRO 두 가지로 나눠진다.
Partial RELRO
- 컴파일 옵션 : gcc -Wl,-z,relro
- GOT Writable
- ELF 데이터 섹션들(.got, .dtors 등)이 프로그램의 데이터 섹션들(.data, .bss)앞으로 오도록 재구성한다.
Full RELRO
- 컴파일 옵션 : gcc -Wl,-z,relro,-z,now
- GOT Read Only
- 최근 리눅스는 기본적으로 Partial RELRO로 컴파일되기 때문에 아무런 옵션 없이 컴파일 하는거랑 동일하다.
- Full RELRO의 경우 프로세스가 시작될 때 링커에 의해 모든 메모리의 재배치 작업이 일어나 느려지기 때문에 Partial RELRO를 더 많이 사용한다.
'System' 카테고리의 다른 글
64 bit 환경에서의 ELF 파일 인자 전달 방식 (0) | 2017.11.05 |
---|---|
Metasploit 이용한 쉘코드(Shellcode) 작성 (0) | 2016.11.12 |
ASLR(Address Space Layout Randomization) 해제 (0) | 2016.10.30 |
File Descriptors (0) | 2016.10.29 |
메모리 보호기법 해제하여 컴파일 하기 (0) | 2016.09.24 |