링커, 로더, 실행 파일

ASLR(주소 공간 배치 무작위화)의 목적으로 올바른 것은?

  1. A스택, 힙, 라이브러리 등의 주소를 실행할 때마다 바꿔서 공격자가 노리는 주소를 예측하기 어렵게 한다
  2. B메모리 주소를 무작위로 골라 캐시 적중률을 높인다
  3. C사용하지 않는 메모리를 무작위로 해제하여 빈 용량을 늘린다
정답과 해설 보기

정답: A. 스택, 힙, 라이브러리 등의 주소를 실행할 때마다 바꿔서 공격자가 노리는 주소를 예측하기 어렵게 한다

버퍼 오버플로 등을 악용하는 공격에서는 라이브러리 함수나 스택 상 데이터의 주소를 알고 있는 것이 중요합니다. ASLR은 프로세스를 시작할 때마다 스택, 힙, 공유 라이브러리, 실행 파일을 놓는 주소를 옮겨서 공격자가 주소를 단정해서 쓰지 못하게 합니다. 단독으로 완벽하게 막을 수 있는 것은 아니며, 쓰기와 실행의 분리 등 다른 대책과 조합해서 사용합니다.

  • A. 올바릅니다. 공격을 어렵게 하는 대책입니다.
  • B. 성능을 위한 구조가 아닙니다.
  • C. 메모리를 해제하는 구조가 아닙니다.
이 분야 연습하기 분야로 돌아가기

링커, 로더, 실행 파일의 다른 문제

  1. 실행 파일을 PIE(위치 독립 실행 파일)로 만드는 주된 이유는?
  2. 프로그램을 시작할 때(Linux의 execve 등) OS의 로더가 하는 일로 올바른 것은?
  3. C 언어 프로그램에서 OS가 가장 먼저 실행을 시작하는 주소(엔트리 포인트)에 대한 설명으로 올바른 것은?
  4. C 언어의 main 함수가 「return 3;」으로 끝났을 때, 그 값 3은 일반적으로 어떻게 되는가?
  5. 실행 파일에 strip 명령을 사용했을 때 일어나는 일로 올바른 것은?

이 분야의 비교