체루트 감옥 (Chroot Jail)
쉽게 풀면
손님을 건물 전체가 아니라 로비의 응접실 하나만 보여주고, 그 응접실이 마치 건물 전체인 것처럼 착각하게 만드는 상황을 떠올려 보세요. chroot 감옥은 특정 프로세스에게 실제 파일 시스템의 루트(최상위 디렉터리) 대신 지정된 하위 디렉터리를 루트인 것처럼 보이게 만듭니다. 그 결과 해당 프로세스는 지정된 디렉터리 밖의 파일이나 폴더를 볼 수도, 접근할 수도 없게 됩니다.
왜 중요한가
chroot는 신뢰도가 낮은 서비스나 프로세스를 시스템의 나머지 부분으로부터 격리하는 초기 형태의 샌드박싱 기법으로, 이후 등장한 컨테이너 기술의 개념적 기반 중 하나로 여겨집니다. 시스템 보안 연구에서는 chroot 자체의 격리 한계와 이를 우회하는 기법("chroot 탈출")도 함께 다루어집니다.
논문에서는 이렇게 쓰입니다
chroot가 서비스 격리를 위한 실무적 방어 수단으로 사용된 예입니다.
chroot의 격리 범위가 제한적임을 지적하는 문장입니다.
조금 더 깊게 보면
chroot는 리눅스/유닉스 계열 운영체제의 chroot() 시스템 콜을 통해 구현되며, 프로세스의 루트 디렉터리 포인터만 변경할 뿐 커널 자체의 권한 체계를 바꾸지는 않습니다. 이 때문에 루트 권한을 가진 프로세스가 chroot 환경 안에 있더라도 알려진 기법을 통해 감옥을 벗어날 수 있다는 점이 보안 연구에서 지적되어 왔으며, 이후 등장한 네임스페이스 기반 컨테이너 기술은 이러한 한계를 보완하기 위한 발전으로 평가됩니다.
주의할 점
chroot는 보안 격리를 위한 도구로 흔히 소개되지만, 원래는 빌드나 테스트 환경을 분리하기 위한 목적으로 설계되었으며 강력한 보안 경계로 보기는 어렵다는 지적이 많습니다.