KL-001 Kyverno Suspicious Pod Creation Log
공격 행위 요약
KL-001은 NodeFall 캠페인에서 공격자가 Kubernetes API 권한을 이용해 호스트 접근이 가능한 위험 Pod 생성을 시도한 행위를 설명하는 Kyverno 기반 로그이다.
공격자는 확보한 Kubernetes 자격 증명과 권한을 이용해 privileged, hostPID, hostNetwork, hostIPC, hostPath와 같은 위험한 Pod 스펙을 포함한 Pod 생성 또는 수정 요청을 보냈다. 이러한 설정은 컨테이너가 호스트의 네임스페이스, 네트워크, 프로세스 정보 또는 파일 시스템에 접근할 수 있는 실행 환경을 만들 수 있다.
Kyverno는 Kubernetes API admission 단계에서 Pod 생성 또는 수정 요청의 리소스 스펙을 검사한다. ClusterPolicy nodefall-kl-001-suspicious-pod의 validate.deny.conditions 조건과 요청된 Pod 스펙이 매칭되면, validate.message에 정의된 [KL-001] Suspicious Pod Created 메시지를 포함한 PolicyViolation Kubernetes Event가 생성된다.
따라서 KL-001은 공격자가 호스트 접근이 가능한 위험 Pod 실행 환경을 만들려고 한 API 요청의 증적이다.
로그 발생 위치
| 구분 | 위치 | 설명 |
| Kubernetes API | kube-apiserver AdmissionReview | 공격자의 Pod 생성 또는 수정 요청이 Kubernetes admission 단계로 전달됨 |
| Kyverno | ClusterPolicy nodefall-kl-001-suspicious-pod | validate.deny.conditions가 Pod 스펙의 위험 설정을 검사 |
| Kyverno | rule kl-001-suspicious-pod-created | 위험 Pod 스펙이 조건과 매칭되면 정책 위반으로 판단 |
| Kyverno | validate.message | [KL-001] Suspicious Pod Created 메시지를 PolicyViolation 이벤트에 포함 |
| Kubernetes Event | reason=PolicyViolation | Kyverno 정책 위반 결과가 Kubernetes Event로 생성됨 |
| K8s Node | /usr/local/bin/nodefall-kyverno-event-watch.sh | nodefall watcher가 Kyverno PolicyViolation 이벤트를 감시 |
| K8s Node | /var/log/nodefall/nodefall-events.log | watcher가 수집한 Kyverno 이벤트를 파일 로그로 저장 |
| Wazuh Manager | /var/ossec/etc/rules/local_rules.xml | 수집된 로그를 KL-001 룰과 매칭해 Wazuh alert 생성 |
수집 방식
| 구분 | 방식 |
| Kyverno 탐지 기준 | ClusterPolicy nodefall-kl-001-suspicious-pod의 validate.deny.conditions가 privileged, hostPID, hostNetwork, hostIPC, hostPath 설정을 검사 |
| Kyverno 탐지 메시지 | 조건 매칭 시 validate.message 값인 [KL-001] Suspicious Pod Created가 PolicyViolation 이벤트에 포함됨 |
| Kubernetes Event | Kyverno가 reason=PolicyViolation 이벤트를 생성 |
| nodefall watcher | /usr/local/bin/nodefall-kyverno-event-watch.sh가 PolicyViolation 이벤트를 감시 |
| 파일 저장 | watcher가 /var/log/nodefall/nodefall-events.log에 이벤트를 저장 |
| Wazuh agent | K8s node의 /var/ossec/etc/ossec.conf에서 /var/log/nodefall/nodefall-events.log를 syslog 형식으로 수집 |
| Wazuh manager | Docker 컨테이너 single-node_wazuh.manager_1 내부 /var/ossec/etc/rules/local_rules.xml에서 KL-001 룰과 매칭 |
| Wazuh Dashboard | 매칭된 alert를 [KL-001] Suspicious Pod Created 이벤트로 표시 |
로그 출력 명령어
sudo grep -E "\[KL-001\] Suspicious Pod Created" /var/log/nodefall/nodefall-events.log
실제 관측 로그
2026-05-23T22:52:42+00:00 nodefall-kyverno kube-system 0s Warning PolicyViolation pod/pwned-pod-final policy nodefall-kl-001-suspicious-pod/kl-001-suspicious-pod-created fail: [KL-001] Suspicious Pod Created
주요 필드
| 필드 | 의미 | 예시 |
timestamp | nodefall watcher가 Kyverno 이벤트를 파일 로그로 기록한 시간 | 2026-05-23T22:52:42+00:00 |
source | Kyverno 이벤트를 수집한 nodefall watcher 식별자 | nodefall-kyverno |
namespace | PolicyViolation 이벤트가 발생한 Kubernetes namespace | kube-system |
age | Kubernetes Event가 출력 시점 기준으로 발생한 뒤 지난 시간 | 0s |
event_type | Kubernetes Event 타입 | Warning |
reason | Kubernetes Event reason | PolicyViolation |
resource | 정책 위반이 발생한 Kubernetes 리소스 | pod/pwned-pod-final |
policy | 매칭된 Kyverno ClusterPolicy 이름 | nodefall-kl-001-suspicious-pod |
rule | 매칭된 Kyverno rule 이름 | kl-001-suspicious-pod-created |
result | Kyverno 정책 평가 결과 | fail |
message | Kyverno validate.message에 정의된 정책 위반 메시지 | [KL-001] Suspicious Pod Created |
커버 대상 Techniques Used
| Primary Log | Technique | Mapping Reason |
| KL-001 | T1611 Escape to Host | 위험 Pod 생성 요청을 확인하여 호스트 접근이 가능한 실행 환경 준비 행위를 설명한다. |
| FL-004 | T1611 Escape to Host | nsenter 또는 setns 기반 Host Namespace Entry를 확인하여 실제 컨테이너 경계 탈출 행위를 설명한다. |
| FL-003 | T1068 Exploitation for Privilege Escalation | 컨테이너 내부 또는 탈출 과정에서 root 권한 shell/command 실행을 확인하여 권한 상승 성공을 설명한다. |
| FL | T1611 Escape to Host | reverse shell 연결을 확인하여 호스트 접근 이후 노드 제어권 확보 흐름을 보강한다. |
탐지 포인트
| Technique | 관찰 행위 | 주요 필드 |
| T1611 Escape to Host | Kubernetes API를 통해 위험 Pod 생성 요청이 발생했고, Kyverno ClusterPolicy nodefall-kl-001-suspicious-pod와 rule kl-001-suspicious-pod-created에 매칭되었는지 확인한다. | policy, rule, result, message |
| T1611 Escape to Host | 정책 평가 결과가 fail이고, Kyverno validate.message 값인 [KL-001] Suspicious Pod Created가 기록되었는지 확인한다. 이는 요청된 Pod 스펙이 privileged, hostPID, hostNetwork, hostIPC, hostPath 중 하나 이상의 위험 조건과 매칭되었음을 의미한다. | result, message, resource |
| T1611 Escape to Host | 이벤트가 발생한 namespace와 리소스명을 확인하여 공격자가 어느 namespace에 어떤 Pod를 생성하려 했는지 식별한다. | namespace, resource |
| T1611 Escape to Host | 이벤트 타입과 reason을 확인하여 단순 일반 이벤트가 아니라 Kyverno 정책 위반 이벤트인지 검증한다. | event_type, reason |