개발/코더 탈출

ASLR

-=HaeJuK=- 2024. 9. 12. 12:18

ASLR(Address Space Layout Randomization)은 시스템 보안을 강화하기 위한 기법 중 하나로, 프로세스가 메모리에 로드되는 주소를 무작위로 배치하여 공격자가 특정 메모리 주소를 예측하기 어렵게 만드는 기술입니다. 주로 메모리 기반 공격, 특히 버퍼 오버플로우 공격으로부터 시스템을 보호하는 데 사용됩니다.

ASLR의 주요 개념:

  1. 메모리 주소 무작위화: ASLR은 실행 중인 프로세스가 사용하는 메모리 공간(예: 실행 파일, 라이브러리, 스택, 힙 등)의 위치를 매번 무작위로 배치합니다. 이를 통해 공격자가 미리 특정 메모리 주소를 파악하고 악성 코드를 주입하는 것을 방지할 수 있습니다.
  2. 재배치되는 요소:
    • 프로그램 코드: 실행 파일의 코드가 메모리 내에서 예측 불가능한 위치에 로드됩니다.
    • 동적 라이브러리: 동적 링크된 라이브러리(DLL)도 무작위 주소에 로드되어 공격이 더 어려워집니다.
    • 스택과 힙: 스택과 힙 메모리의 시작 주소 또한 무작위로 배치되어 공격자가 스택 오버플로우나 힙 오버플로우를 통해 시스템을 악용하는 것을 어렵게 만듭니다.
  3. 보안 강화: ASLR은 악의적인 사용자가 특정 메모리 위치를 대상으로 공격하려고 할 때, 해당 메모리 위치가 무작위로 변동되므로 성공 확률을 크게 낮춥니다. 공격자가 악성 코드를 주입하거나 시스템을 악용하려면 정확한 메모리 주소를 알아야 하기 때문에, ASLR은 이를 무력화하는 역할을 합니다.
  4. ASLR과 DEP의 결합: ASLR은 DEP(Data Execution Prevention)와 함께 사용하면 더욱 효과적입니다. DEP는 특정 메모리 영역에서 코드를 실행하지 못하게 하고, ASLR은 메모리 주소를 예측할 수 없게 하여 시스템의 방어를 더욱 강화합니다.

ASLR의 이점:

  • 버퍼 오버플로우 공격 방지: 메모리 주소가 예측 불가능해지기 때문에 공격자는 특정 메모리 주소를 타깃으로 삼기 어려워집니다.
  • ROP(Return-Oriented Programming) 공격 방지: 공격자가 특정 메모리 주소를 통해 시스템의 제어를 획득하려는 ROP 공격도 무작위화된 메모리 주소 때문에 더 어려워집니다.

한계:

  • 64비트 시스템에서 더 효과적: 32비트 시스템은 무작위화할 수 있는 주소 공간이 작아, ASLR의 효과가 상대적으로 제한적일 수 있습니다. 반면 64비트 시스템에서는 무작위화할 수 있는 메모리 공간이 훨씬 커지기 때문에 ASLR의 효과가 극대화됩니다.
  • 일부 프로그램의 비호환성: 일부 프로그램은 ASLR과 호환되지 않으며, 이 경우 특정 프로그램에서 ASLR을 비활성화할 수 있습니다.

ASLR은 Windows Vista 이후의 Windows 운영 체제와 Linux, macOS 등 다양한 운영 체제에서 지원됩니다.

반응형