BOF protection techniques
Canary(Stack Cookie, Security Cookie, /GS)
: 컴파일러가 Buffer 와 RET 사이에 Cookie(RET 변조를 막기 위한 메모리 공간)을 추가하거나 위치시켜 종료 시점에 원본 데이터와 체크하여 Overflow를 감지하고 방어한다.
NX-bit(Not Excutable, DEP(Data Execution prevention))
: NX-bit는 이름 그대로 메모리 영역에 읽기, 쓰기, 실행 권한을 필요한 만큼 부여하여 공격자가 stack, heap, data section에서 shellcode 같은 공격코드를 실행하는 것을 금지한다.
ASCII Armor
: 공유 라이브러리들의 기본주소를 mmap() 함수를 사용하여 함수의 첫 번째 바이트에 "0" 을 포함하는 주소로 변경시킨다. 일반적으로 공격 코드를 아스키 문자열의 형태로 전달되는 점을 이용해 "0"(NULL)을 문장의 끝으로 인식시켜 RTL 기법을 방어한다.
ASLR(Address Space Layout Randomization)
: 프로세스 내에서 맵핑되는 오브젝트에 대해 호출 및 실행 시 실행하는 주소를 랜덤화하는 기법으로, 정확한 주소를 예측하기 어려워 공격 성공이 어려워진다.
※ ASLR, ASCII Armor 방어 기법을 우회하기 위해서는 ROP 기법을 사용하지만 최근의 리눅스 배포판에는 RTL / ROP 기법에 대응하기 위해 기본적으로 설정되어있다고 한다.
PIE(Position Independent Executable)
: ASLR 기법은 힙, 스택, 라이브러리 영역 배치 랜덤화이다. 하지만 PIE 기법은 바이너리에 적용되는 ASLR 을 일컫는다.
'system' 카테고리의 다른 글
GHOST: glibc Vulnerability(CVE-2015-0235) (0) | 2016.01.25 |
---|---|
메시지 루프와 처리 함수의 전체 순서 (0) | 2016.01.07 |
plt, got (0) | 2015.12.30 |
gdb 명령어 (0) | 2015.11.10 |
메모리 구조 (0) | 2015.11.10 |