컨테이너 이스케이프 (Container Escape)
쉽게 풀면
여러 세입자가 각자의 방에 나뉘어 사는 셰어하우스를 떠올려 보세요. 각 방은 잠겨 있어 다른 방이나 건물 전체 관리 시설에 함부로 들어갈 수 없어야 합니다. 컨테이너도 하나의 호스트 운영체제 위에서 여러 애플리케이션을 격리된 '방'처럼 나누어 실행하는 기술입니다. 컨테이너 이스케이프는 이 방의 잠금이 뚫려, 세입자(컨테이너 내부 프로세스)가 건물 전체를 관리하는 호스트 시스템이나 다른 세입자의 방까지 침입하는 상황을 말합니다.
왜 중요한가
클라우드와 마이크로서비스 환경에서 컨테이너 기술이 널리 쓰이면서, 하나의 컨테이너가 뚫렸을 때 전체 호스트나 다른 서비스까지 피해가 확산되는지 여부가 중요한 보안 이슈로 떠올랐습니다. 이 때문에 컨테이너 격리 메커니즘의 안전성과 이스케이프 공격 방어 기법은 클라우드 및 시스템 보안 연구에서 활발히 다루어집니다. 마이크로서비스 아키텍처에서는 수백 개의 컨테이너가 동시에 운영되는 경우가 많아, 하나의 이스케이프가 전체 서비스 인프라로 확산될 잠재적 피해 범위가 매우 크다는 점이 강조됩니다.
논문에서는 이렇게 쓰입니다
컨테이너 이스케이프가 실제 취약점을 통해 어떻게 발생하는지를 다루는 문장입니다.
컨테이너 이스케이프를 예방하기 위한 방어 기법을 설명하는 문장입니다.
조금 더 깊게 보면
컨테이너는 리눅스 커널의 네임스페이스와 cgroup 기능을 이용해 프로세스, 파일 시스템, 네트워크 등을 격리하는데, 이 격리 계층이나 컨테이너 런타임 자체의 결함이 이스케이프의 원인이 되는 경우가 많습니다. seccomp, AppArmor, SELinux와 같은 추가적인 접근 통제 메커니즘을 함께 적용하여 이스케이프 위험을 줄이는 접근이 연구되고 있습니다. 루트 권한으로 실행되는 컨테이너는 이스케이프 발생 시 호스트에 대한 권한 상승으로 직결될 위험이 커, 컨테이너를 비루트 사용자 권한으로 실행하는 것이 기본적인 예방책으로 권장됩니다.
주의할 점
컨테이너는 가상 머신과 달리 호스트 커널을 공유하는 구조이기 때문에, 완전한 격리를 보장하는 기술이 아니라는 점을 유의해야 합니다.