Security / Pentest / Remediation
KT Cloud TechUp 사이버보안 훈련에서 레드팀(4개 팀)이 72시간 동안 PlayBall 플랫폼을 대상으로 침투테스트를 수행했다. 인프라 영역에서 발견된 취약점에 대해 28건의 보완 조치를 수행했다.
| 항목 | 내용 |
|---|
| 기간 | 2026-04-02 ~ 04 (72시간) |
| 대상 | goormgb.space (Dev), staging.playball.one (Staging) |
| 레드팀 | 4개 팀 (5팀, 1팀, 4팀, 7팀) |
| 인프라 조치 | 28건 완료 |
주요 공격 성공 사례#
| 공격 | 심각도 | 설명 |
|---|
| Kiali/kafka-ui 장악 | CRITICAL | 무인증 관리도구 외부 노출 → 클러스터 정보 탈취 |
| EKS API 서버 외부 노출 | HIGH | 0.0.0.0/0 공개 → 누구나 API 접근 가능 |
| Rate Limiting 미적용 | HIGH | 10회 연속 로그인 성공, Brute Force 가능 |
| ALB 직접 접근 | HIGH | CloudFront/WAF 우회하여 ALB에 직접 요청 |
발견된 인프라 취약점#
CRITICAL#
| ID | 취약점 | 조치 |
|---|
| C-10 | Kiali prod 무인증 쓰기 접근 | Admin Tools IP Whitelist (#25) |
| C-11 | kafka-ui 무인증, readOnly:false | Admin Tools IP Whitelist (#25) |
HIGH#
| ID | 취약점 | 조치 |
|---|
| H-02 | K8s API 서버 외부 노출 (0.0.0.0/0) | EKS Control Plane 접근 제한 (#4) |
| H-03 | K8s 내부 서비스 DNS 노출 | NetworkPolicy default-deny (#13) |
| H-05 | Actuator 전체 노출 | 내부 경로 차단 AuthorizationPolicy (#24) |
| H-06 | 내부 라우트 + K8s URI 노출 | Actuator 제거로 해소 (#24) |
| H-08 | 서버 리소스 정보 노출 | Actuator 제거로 해소 (#24) |
| H-09 | Thread Pool 무제한 DoS | Kyverno Require Resource Limits (#17) |
| H-10 | IP 블랙리스트 우회 (ALB 직접 접근) | CloudFront 전환 + ALB SG 제한 (#1, #2, #3) |
| H-11 | SQLi 앱 레벨 필터 우회 가능성 | Istio WAF EnvoyFilter (#21) |
| H-12 | OS Command Injection 의심 | Istio WAF EnvoyFilter (#21) |
MEDIUM#
| ID | 취약점 | 조치 |
|---|
| M-01 | Staging ALB 직접 노출 (CDN 미적용) | CloudFront 전환 (#1) |
| M-02 | Swagger UI 외부 노출 | 404 처리 완료 |
| M-05 | Admin 엔드포인트 존재 확인 | JWT AuthorizationPolicy (#23) |
| M-07 | Actuator RBAC 불일치 | 내부 경로 차단 (#24) |
| M-08 | Gateway 라우트 수 노출 | Actuator 제거로 해소 (#24) |
| M-12 | Origin 미검증 + Rate Limiting 미설정 | Rate Limiting (#22) |
인프라 보완 조치 (28건)#
네트워크 / 접근 제어#
| # | 조치 | 대응 취약점 | 전 | 후 |
|---|
| 1 | Staging API → CloudFront 전환 | M-01, H-10 | ALB 직접 노출 | CloudFront Alias |
| 2 | Prod API → CloudFront 전환 | M-01, H-10 | ALB 직접 / Cloudflare 단일 | CloudFront Distribution |
| 3 | Staging ALB SG 제한 | H-10, M-01 | 443 ← 0.0.0.0/0 | CloudFront PL + 팀원 IP만 |
| 4 | EKS Control Plane 접근 제한 | H-02 | public_access 0.0.0.0/0 | bastion SG + 팀원 IP, private_access=true |
| 25 | Admin Tools IP Whitelist | C-10, C-11 | 무인증 외부 접근 | 팀 IP 외 DENY (kiali/kafka-ui/grafana 등) |
Istio Service Mesh 보안#
| # | 조치 | 대응 취약점 | 전 | 후 |
|---|
| 14 | mTLS STRICT | 일반 암호화 | PERMISSIVE 혼합 | Mesh-wide STRICT |
| 21 | WAF (EnvoyFilter + Lua) | H-11, H-12 | L7 탐지 없음 | 10종 탐지 (SQLi/XSS/CmdInj 등) + 자동 IP 블랙리스트 |
| 22 | Rate Limiting (Local + Global) | M-12 | 제한 없음 | /auth 10/s, /payment 5/s, /signup 3/s |
| 23 | JWT RequestAuthentication + AuthZ | M-05 | 앱만 JWT 검증 | Istio 엣지 JWKS 검증 (미인증 → 401) |
| 24 | 내부 경로 차단 | H-05, H-06, H-08, M-07 | /actuator, /metrics 접근 가능 | DENY 정책 적용 |
IAM / 권한 관리#
| # | 조치 | 대응 취약점 | 전 | 후 |
|---|
| 5 | Node IMDSv2 강제 | SSRF 대비 | IMDSv1 허용 | IMDSv2 전용 |
| 11 | IAM IRSA 최소 권한 | C-02 | 장기 Access Key | OIDC 기반 SA별 IAM Role, 정적 키 폐기 |
| 12 | SSO Permission Set 분리 | 권한 최소화 | Admin-Full 단일 | DevOps/Developer/Security/ReadOnly 4종 |
Kubernetes 정책 (Kyverno)#
| # | 조치 | 대응 취약점 | 효과 |
|---|
| 13 | NetworkPolicy default-deny | H-03 | 네임스페이스 간 측면 이동 차단 |
| 15 | Disallow Privileged | Pod 격리 | privileged=true 차단 |
| 16 | Disallow :latest Tag | 버전 추적 | image:latest 사용 금지 |
| 17 | Require Resource Limits | H-09 | CPU/Memory limits 필수 |
| 18 | Require ArgoCD Management | GitOps 강제 | 라벨 없는 리소스 차단 |
| 19 | Protect Critical Namespaces | C-10, C-11 | kube-system/argocd/istio-system 무단 변경 차단 |
| 20 | Policy Reporter | 위반 가시화 | 위반 수집 + Discord 알림 |
감사 / 모니터링#
| # | 조치 | 효과 |
|---|
| 6 | EKS Control Plane 로깅 | api/audit/authenticator/scheduler 전부 CloudWatch |
| 7 | CloudTrail Multi-Region + Log Validation | 감사 증적 강화 |
| 8 | 감사 로그 S3 보안 정책 | AES256 + Versioning + Lifecycle |
| 9 | 보안 이벤트 실시간 알람 | EventBridge → Lambda → Discord |
| 10 | S3 감사 이벤트 요약 알람 | S3 API 감시 → Discord |
데이터 보호#
| # | 조치 | 대응 취약점 | 전 | 후 |
|---|
| 26 | RDS 암호화 + Deletion Protection | C-05 | 기본값 | storage_encrypted=true, deletion_protection=true |
| 27 | RDS 자격증명 Secrets Manager 이관 | C-05 | .env 평문 | Secrets Manager + External Secrets |
조치 결과#
인프라 조치 전후 비교#
| 항목 | 조치 전 | 조치 후 |
|---|
| EKS API | 0.0.0.0/0 공개 | bastion + 팀원 IP만 |
| ALB 접근 | 직접 노출 | CloudFront 경유만 허용 |
| 관리도구 (Kiali, kafka-ui) | 무인증 외부 접근 | IP Whitelist + 인증 |
| 내부 통신 | mTLS PERMISSIVE | mTLS STRICT |
| L7 공격 방어 | 없음 | WAF 10종 탐지 + 자동 IP 차단 |
| Rate Limiting | 없음 | 경로별 제한 (/auth 10/s 등) |
| IAM 키 관리 | 장기 Access Key | IRSA (OIDC 기반 임시 자격증명) |
| DB 크리덴셜 | .env 평문 | Secrets Manager |
| 감사 로그 | 미구성 | CloudTrail + EventBridge → Discord 실시간 알림 |
| Pod 보안 정책 | 없음 | Kyverno 6종 정책 + Policy Reporter |