Overview#

During a KT Cloud TechUp cybersecurity exercise, four red teams conducted a 72-hour penetration test against the PlayBall platform. 28 remediation actions were taken for vulnerabilities found in the infrastructure.

ItemDetails
Period2026-04-02 ~ 04 (72 hours)
Targetgoormgb.space (Dev), staging.playball.one (Staging)
Red teams4 teams (Team 5, 1, 4, 7)
Infrastructure fixes28 completed

Major Successful Attacks#

AttackSeverityDescription
Kiali/kafka-ui takeoverCRITICALUnauthenticated admin tools exposed externally → cluster info exfiltrated
EKS API server exposedHIGHPublic 0.0.0.0/0 → anyone could reach the API
Rate limiting absentHIGH10 consecutive login attempts succeeded; brute force feasible
Direct ALB accessHIGHRequests reached ALB directly, bypassing CloudFront/WAF

Infrastructure Vulnerabilities Found#

CRITICAL#

IDVulnerabilityRemediation
C-10Kiali prod unauthenticated write accessAdmin Tools IP Whitelist (#25)
C-11kafka-ui unauthenticated, readOnly:falseAdmin Tools IP Whitelist (#25)

HIGH#

IDVulnerabilityRemediation
H-02K8s API server externally exposed (0.0.0.0/0)EKS Control Plane access restriction (#4)
H-03K8s internal service DNS exposedNetworkPolicy default-deny (#13)
H-05Actuator fully exposedInternal path block via AuthorizationPolicy (#24)
H-06Internal routes + K8s URI exposedResolved by Actuator removal (#24)
H-08Server resource info exposedResolved by Actuator removal (#24)
H-09Unlimited thread pool DoSKyverno Require Resource Limits (#17)
H-10IP blacklist bypass via direct ALB accessCloudFront migration + ALB SG restriction (#1, #2, #3)
H-11SQLi app-level filter bypass riskIstio WAF EnvoyFilter (#21)
H-12Suspected OS Command InjectionIstio WAF EnvoyFilter (#21)

MEDIUM#

IDVulnerabilityRemediation
M-01Staging ALB directly exposed (no CDN)CloudFront migration (#1)
M-02Swagger UI externally accessibleReturns 404 (resolved)
M-05Admin endpoint existence confirmedJWT AuthorizationPolicy (#23)
M-07Actuator RBAC mismatchInternal path block (#24)
M-08Gateway route count exposedResolved by Actuator removal (#24)
M-12No origin validation + no rate limitingRate Limiting (#22)

Infrastructure Remediation (28 items)#

Network / Access Control#

#ActionAddressedBeforeAfter
1Staging API → CloudFront migrationM-01, H-10Direct ALB exposureCloudFront Alias
2Prod API → CloudFront migrationM-01, H-10Direct ALB / single CloudflareCloudFront Distribution
3Staging ALB SG restrictionH-10, M-01443 ← 0.0.0.0/0CloudFront PL + team IPs only
4EKS Control Plane access restrictionH-02public_access 0.0.0.0/0Bastion SG + team IPs, private_access=true
25Admin Tools IP WhitelistC-10, C-11Unauthenticated external accessDENY for non-team IPs (kiali/kafka-ui/grafana etc.)

Istio Service Mesh Security#

#ActionAddressedBeforeAfter
14mTLS STRICTGeneral encryptionPERMISSIVE mixedMesh-wide STRICT
21WAF (EnvoyFilter + Lua)H-11, H-12No L7 detection10-pattern detection (SQLi/XSS/CmdInj etc.) + auto IP blacklist
22Rate Limiting (Local + Global)M-12No limits/auth 10/s, /payment 5/s, /signup 3/s
23JWT RequestAuthentication + AuthZM-05App-only JWT validationIstio edge JWKS validation (unauthenticated → 401)
24Internal path blockingH-05, H-06, H-08, M-07/actuator, /metrics accessibleDENY policy applied

IAM / Access Management#

#ActionAddressedBeforeAfter
5Node IMDSv2 enforcementSSRF preventionIMDSv1 allowedIMDSv2 only
11IAM IRSA least privilegeC-02Long-lived Access KeysOIDC-based per-SA IAM Role, static keys revoked
12SSO Permission Set separationLeast privilegeSingle Admin-Full4 roles: DevOps/Developer/Security/ReadOnly

Kubernetes Policy (Kyverno)#

#ActionAddressedEffect
13NetworkPolicy default-denyH-03Blocks lateral movement between namespaces
15Disallow PrivilegedPod isolationBlocks privileged=true
16Disallow :latest TagVersion trackingProhibits image:latest
17Require Resource LimitsH-09Enforces CPU/Memory limits
18Require ArgoCD ManagementGitOps enforcementBlocks resources without ArgoCD labels
19Protect Critical NamespacesC-10, C-11Blocks unauthorized changes to kube-system/argocd/istio-system
20Policy ReporterViolation visibilityCollects violations + Discord alerts

Audit / Monitoring#

#ActionEffect
6EKS Control Plane loggingapi/audit/authenticator/scheduler all → CloudWatch
7CloudTrail Multi-Region + Log ValidationStronger audit trail
8Audit log S3 security policyAES256 + Versioning + Lifecycle
9Real-time security event alertingEventBridge → Lambda → Discord
10S3 audit event summary alertsS3 API monitoring → Discord

Data Protection#

#ActionAddressedBeforeAfter
26RDS encryption + Deletion ProtectionC-05Default settingsstorage_encrypted=true, deletion_protection=true
27RDS credentials migrated to Secrets ManagerC-05Plaintext .envSecrets Manager + External Secrets

Remediation Results#

Before vs After#

ItemBeforeAfter
EKS APIPublic 0.0.0.0/0Bastion + team IPs only
ALB accessDirectly exposedCloudFront only
Admin tools (Kiali, kafka-ui)Unauthenticated external accessIP Whitelist + authentication
Internal communicationmTLS PERMISSIVEmTLS STRICT
L7 attack defenseNoneWAF 10-pattern detection + auto IP block
Rate LimitingNonePer-path limits (/auth 10/s etc.)
IAM key managementLong-lived Access KeysIRSA (OIDC-based temporary credentials)
DB credentialsPlaintext .envSecrets Manager
Audit logsNot configuredCloudTrail + EventBridge → Discord real-time alerts
Pod security policyNoneKyverno 6 policies + Policy Reporter