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를 더 많이 사용한다.

+ Recent posts