Address space layout randomization

(ASLR에서 넘어옴)


개요

ASLR은 컴퓨터 보안기술로서, 메모리의 주소값을 Attacker가 알 수 없도록 하여서, 특정 주소로 JMP할떄 Attacker에게 힌트를 주지 않는 기술이다. ASLR은 커널이나 Application의 스택, , 라이브러리와 같은 영역들의 주소값을 랜덤하게 제시 함으로써, Attacker가 쉽게 메모리의 취약점을 이용할 수 없도록 만든다.

장점

ASLR은 Attacker가 메모리공격에 있어서, 쉽게 공격대상을 알 수 없도록 보호한다. 예를 들어서, Return to libc와 같은 공격의 경우 Attacker는 stack의 주소를 알아야, 스택에 특정 메모리 Gadget을 넣어서 공격 할 수 있는데, ASLR을 사용하면 Stack주소를 숨길 수 있다.

이용분야

Linux kernel

Linux는 ASLR을 version 2.6.12 부터 지원하고 있다. 또한 PIE와 같은 Text 영역또한 Randomization하는 기술을 도입하고 있다.

KASLR

Kernel address space layout randomization (KASLR)과 같은 경우는 커널의 Image가 부트 타입에 어디에 위치할 지 랜덤하게 결정하는 방식이다. nokaslr로 disable할 수 있다.

참고

  1. https://en.wikipedia.org/wiki/Address_space_layout_randomization