ASLR(Address Space Layout Randomization)은 프로그램이 실행될 때, 프로세스의 메모리 내 주요 구성요소(스택, 힙, 공유 라이브러리, 실행 파일 등)의 메모리 주소를 무작위(Random)하게 배치하여, 공격자가 특정 메모리 주소를 예측하거나 악용하는 것을 어렵게 만드는 메모리 보호 기법입니다. 이는 시스템을 공격하는 데 사용되는 대표적인 취약점인 버퍼 오버플로우(Buffer Overflow), Return-to-libc, ROP(Return-Oriented Programming) 등의 공격 기법을 어렵게 만듭니다.
프로세스가 실행될 때 운영체제는 해당 프로세스에 할당되는 가상 주소 공간의 중요한 위치를 무작위(Random)로 배정합니다. 예를 들어, 스택 시작 주소, 힙 시작 주소, 라이브러리 로딩 주소, 실행 파일(.text) 로딩 주소 등을 실행할 때마다 다르게 배치합니다.
0x08048000 <- 실행 파일(.text, .data)
0xbffff000 <- 스택
0x40000000 <- 공유 라이브러리(libc 등)
0x08000000 <- 힙
위와 같이 메모리 배치가 고정되어 있으면, 공격자가 특정 주소를 이용해 정확한 위치로 점프하는 공격이 가능합니다.
0x08f2a000 <- 실행 파일(.text, .data) - 무작위 위치
0xbf75d000 <- 스택 - 무작위 위치
0x426f1000 <- 공유 라이브러리(libc 등) - 무작위 위치
0x0915e000 <- 힙 - 무작위 위치
주소가 매번 다르기 때문에, 공격자가 정확한 주소를 모르면 쉘코드를 실행하거나 함수 포인터를 조작하기가 매우 어렵습니다.
ASLR의 주요 목적은 메모리 기반 공격을 어렵게 만들어 Exploit의 성공 가능성을 낮추는 것입니다. 메모리 취약점을 악용할 때, 공격자는 일반적으로 정확한 메모리 주소를 알아야 합니다. 하지만 ASLR이 활성화되어 있으면 다음과 같은 보안 효과를 얻을 수 있습니다:
장점 | 설명 |
---|---|
✔️ 보안성 향상 | 메모리 주소 예측을 어렵게 하여 Exploit을 방지 |
✔️ 비용 효율적 | 소프트웨어 구조 변경 없이 OS 차원에서 적용 가능 |
✔️ 다른 보안 기법과 결합 가능 | DEP, Stack Canaries 등과 함께 사용할 수 있음 |
단점 | 설명 |
---|---|
❗ 예측 가능성 존재 | 주소 공간이 좁거나, 랜덤화 범위가 작을 경우 예측 가능 |
❗ 성능 저하 | 아주 미세하지만 초기 로딩 시 오버헤드 발생 가능 |
❗ 우회 가능 | 정보 유출(leak) 취약점을 통해 주소를 알아낼 수 있음 (예: InfoLeak) |
/proc/sys/kernel/randomize_va_space
값으로 설정 확인 가능ASLR 활성화 상태 확인:
cat /proc/sys/kernel/randomize_va_space
결과값 의미:
0
: 비활성화 (ASLR 미적용)1
: 일부 랜덤화2
: 완전한 랜덤화 (기본 권장값)설정 변경 (일시적으로 비활성화):
echo 0 > /proc/sys/kernel/randomize_va_space
영구 적용을 원할 경우 /etc/sysctl.conf
에 다음 줄 추가:
kernel.randomize_va_space = 2
ASLR은 운영체제에서 제공하는 기본적이면서도 강력한 메모리 보안 기법입니다. 그러나 완벽한 보안책은 아니며, 다른 보안 기법들과 함께 사용해야 실제 효과를 극대화할 수 있습니다. 특히, ASLR은 정보 유출이 있는 경우 우회가 가능하기 때문에, 시스템의 다른 취약점도 함께 고려하여 방어 전략을 세워야 합니다. 다양한 운영체제에서 지원되고 있으며, 서버 및 클라이언트 시스템 모두에서 기본 활성화되어야 합니다.
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…
과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…