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은 정보 유출이 있는 경우 우회가 가능하기 때문에, 시스템의 다른 취약점도 함께 고려하여 방어 전략을 세워야 합니다. 다양한 운영체제에서 지원되고 있으며, 서버 및 클라이언트 시스템 모두에서 기본 활성화되어야 합니다.
오늘은 AI 생태계에 혁신적인 변화를 가져올 것으로 예상되는 MCP(Model Context Protocol)에 대해 상세히 알아보겠습니다. 2024년…
1. TPM이란? TPM(Trusted Platform Module)은 국제 표준 기반의 보안 하드웨어 칩으로, 컴퓨터나 디지털 장비 내에서…
시즌2, 기대했는데... 실망도 두 배!두뇌싸움을 기대했는데, 전략도 없는 자기들만의 감정에 따른 편가르기, 정치싸움이 되어 버린…
BPF(Berkeley Packet Filter) 도어는 해커가 관리자 몰래 뒷문을 새로 만든 것입니다.해커가 명령을 내려 특정 데이터들을 뒷문을…
1. IPC의 개념과 목적 1.1 IPC란 무엇인가? IPC (Inter-Process Communication)는 운영체제 내의 서로 독립적인 프로세스…