컨테이너 이스케이프 (Container Escape)

정보보안학
한 줄 정의: 격리된 컨테이너 환경에서 실행 중인 프로세스가 격리 경계를 벗어나 호스트 시스템의 자원이나 다른 컨테이너에 접근하는 공격입니다.

쉽게 풀면

여러 세입자가 각자의 방에 나뉘어 사는 셰어하우스를 떠올려 보세요. 각 방은 잠겨 있어 다른 방이나 건물 전체 관리 시설에 함부로 들어갈 수 없어야 합니다. 컨테이너도 하나의 호스트 운영체제 위에서 여러 애플리케이션을 격리된 '방'처럼 나누어 실행하는 기술입니다. 컨테이너 이스케이프는 이 방의 잠금이 뚫려, 세입자(컨테이너 내부 프로세스)가 건물 전체를 관리하는 호스트 시스템이나 다른 세입자의 방까지 침입하는 상황을 말합니다.

왜 중요한가

클라우드와 마이크로서비스 환경에서 컨테이너 기술이 널리 쓰이면서, 하나의 컨테이너가 뚫렸을 때 전체 호스트나 다른 서비스까지 피해가 확산되는지 여부가 중요한 보안 이슈로 떠올랐습니다. 이 때문에 컨테이너 격리 메커니즘의 안전성과 이스케이프 공격 방어 기법은 클라우드 및 시스템 보안 연구에서 활발히 다루어집니다.

논문에서는 이렇게 쓰입니다

"본 연구는 컨테이너 런타임의 커널 시스템 콜 처리 취약점을 이용한 컨테이너 이스케이프 사례를 재현하고 그 영향을 분석하였다."

컨테이너 이스케이프가 실제 취약점을 통해 어떻게 발생하는지를 다루는 문장입니다.

"제안하는 seccomp 기반 필터링 정책은 컨테이너에서 호출 가능한 시스템 콜을 제한함으로써 이스케이프 공격 표면을 축소한다."

컨테이너 이스케이프를 예방하기 위한 방어 기법을 설명하는 문장입니다.

조금 더 깊게 보면

컨테이너는 리눅스 커널의 네임스페이스와 cgroup 기능을 이용해 프로세스, 파일 시스템, 네트워크 등을 격리하는데, 이 격리 계층이나 컨테이너 런타임 자체의 결함이 이스케이프의 원인이 되는 경우가 많습니다. seccomp, AppArmor, SELinux와 같은 추가적인 접근 통제 메커니즘을 함께 적용하여 이스케이프 위험을 줄이는 접근이 연구되고 있습니다.

주의할 점

컨테이너는 가상 머신과 달리 호스트 커널을 공유하는 구조이기 때문에, 완전한 격리를 보장하는 기술이 아니라는 점을 유의해야 합니다.

관련 용어