5.5 프로세스 격리와 보안
103
5.5
프로세스 격리와 보안
응용 프로그램들이 안전하게 격리되게 하는 것은 보안의 주된 관심사이다. 응용 프로그램
A
가
응용 프로그램
B
에 속한 메모리를 읽을 수 있다면,
A
는
B
의 자료에 접근할 수 있다.
가장 강력한 형태의 격리는 물리적 격리이다. 두 응용 프로그램이 각자 다른 물리적 컴퓨터
에서 실행된다면 한 응용 프로그램이 다른 응용 프로그램의 메모리에 접근할 길이 없다.
앞에서 논의했듯이, 커널은 사용자 공간 프로세스들을 관리한다. 그러한 각 프로세스에 메
모리를 할당하는 것도 그러한 관리의 일부이다. 한 응용 프로그램이 다른 응용 프로그램의 메
모리에 접근하지 못하게 하는 것은 커널의 임무이다. 커널의 메모리 관리 코드에 버그가 있으
면, 공격자가 그 버그를 악용해서 원래는 접근하지 못해야 마땅한 메모리에 접근할 여지가 생
긴다. 커널 코드는 수많은 공격을 극복해 왔지만, 코드가 극도로 크고 복잡할 뿐만 아니라 계속
해서 진화하고 있기 때문에 버그가 있을 가능성은 항상 존재한다. 이 책을 쓰는 현재 커널 격리
코드에 유의미한 결함이 있다는 증거는 없지만, 언제라도 누군가가 문제점을 발견하리라고 예
상하는 것이 안전하다.
바탕 하드웨어가 점점 정교해짐에 따라 그런 결함들이 생길 가능성도 커진다. 최근 몇 년 간
CPU
제조업체들은 ‘추측 처리(
speculative
processing
)’ 기술을 개발했다. 추측 처리 기능
을 가진 프로세서는 현재 실행 중인 명령 다음에 있는 명령들의 실행 ...