CTF: 보안 10대 미션 실전
Concept와 Hands-on이 “각 레이어가 무엇을 막는가"를 다뤘다면, 여기서는 반대 방향에서 접근합니다. 공격자가 되어 취약한 클러스터를 직접 침투하고, 다시 방어자로 돌아와 패치한다. 방어 설정이 왜 필요한지는 그 설정이 없을 때 뚫려보는 경험만큼 확실하게 각인되는 방법이 없습니다.
이 섹션은 가상의 이커머스 기업 NimbusMart의 취약한 클러스터를 배경으로 한 CTF(Capture The Flag) 실습입니다. OWASP Kubernetes Top 10 (2025) 기준을 기반으로 10개의 미션을 설계했고, 각 미션은 “취약점 발견 → 침투 → 패치 → 재검증"의 사이클로 진행됩니다.
왜 이 방식인가
| 방식 | 설명 |
|---|---|
| 게임형 학습 | 읽는 공부가 아니라, 취약점을 찾아 플래그를 탈취하는 실습 |
| 즉각적인 검증 | 수정한 방어 코드가 올바른지 자동 체크 툴로 바로 확인 |
| 실전 지향 | 이론으로만 알던 설정이 실제로 어떻게 악용되고 방어되는지 손으로 확인 |
각 미션은
labs/ 폴더 아래 vulnerable.yaml(취약한 상태)과 fixed.yaml(패치된 상태)을 함께 제공합니다. 직접 고치기 전/후를 diff로 비교하면서 “정확히 무엇이 바뀌었는지"를 확인하는 것이 핵심입니다.10대 미션 개요
| ID | 제목 | 핵심 내용 |
|---|---|---|
| K01 | Insecure Workload | 보안이 취약한 컨테이너 실행 방지, securityContext 설정 |
| K02 | Authorization | 과도한 권한(RBAC) 제거, 최소 권한 원칙 적용 |
| K03 | Secrets | Secret의 안전한 저장, 환경 변수 노출 등 민감 정보 관리 |
| K04 | Policy Enforcement | Admission Controller를 활용한 보안 정책 강제 적용 |
| K05 | Network Segmentation | NetworkPolicy로 Pod 간 통신 격리, 횡적 이동 차단 |
| K06 | Exposed Components | 대시보드·API 서버 등 외부 노출된 관리 요소 보호 |
| K07 | Cluster Components | etcd, Kubelet 등 클러스터 핵심 컴포넌트 보안 강화 |
| K08 | Cluster to Cloud | 클라우드 메타데이터 접근 제어, 인프라 권한 침해 방지 |
| K09 | Authentication | 사용자·서비스 계정 인증 강화, 비인증 접근 차단 |
| K10 | Logging & Monitoring | 감사 로그 활성화, 보안 사고 탐지를 위한 모니터링 체계 |
실습 환경 시작하기
# 1) 환경 구축 — 웹 UI와 실습 클러스터가 함께 배포됨
./setup.sh
# 2) 브라우저에서 접속
open http://localhost:3009010개의 미션을 하나씩 클리어하면서, 각 미션의 vulnerable.yaml을 직접 공격해보고 fixed.yaml로 패치를 적용한 뒤 자동 체크 툴로 결과를 검증합니다.
이 실습 환경은 학습 목적의 격리된 로컬 클러스터를 전제로 합니다. 여기서 다루는 침투 기법을 실제 운영 클러스터나 소유하지 않은 시스템에 적용하는 것은 별개의 문제이며, 반드시 허가된 환경에서만 수행해야 합니다.
미션 실습 페이지
securityContext 누락 시 root 권한 실행 — 침투와 방어 실습
와일드카드 RBAC로 인한 권한 남용 — 침투와 방어 실습
환경 변수 평문 노출 — Secret 객체 참조로 전환
Admission 정책 없이 배포되는 위험한 Pod 차단
NetworkPolicy로 Pod 간 횡적 이동 차단
외부 노출된 대시보드 인증 우회 방지
Kubelet 익명 접근·평문 통신 차단
클라우드 메타데이터(IMDS) 탈취 차단
익명 인증 차단, 서비스 계정 토큰 관리
감사 로그 활성화로 사고 추적 가능하게 만들기
이 10대 미션은 OWASP Kubernetes Top 10 (2025) 기반 실습 프로젝트를 참고해 구성했습니다.