
CVE-2026-24514에 대한 개념 증명 익스플로잇으로, ingress-nginx 검증 어드미션 웹훅의 메모리 고갈 서비스 거부(DoS) 취약점으로, 낮은 권한의 공격자가 과도하게 큰 AdmissionReview 요청을 통해 컨트롤러 파드를 충돌시킬 수 있습니다.
인증되지 않은 / 낮은 권한의 원격 서비스 거부(DoS) 취약점으로, 공격자가 과도하게 큰 AdmissionReview 요청을 전송하여 ingress-nginx 컨트롤러 파드를 충돌시킬 수 있습니다.
ingress-nginx 검증 어드미션 웹훅(활성화된 경우)은 수신되는 AdmissionReview 객체의 크기에 대해 합리적인 제한을 적용하지 않습니다.
웹훅 엔드포인트에 도달할 수 있는 공격자는 낮은 권한만으로도 매우 큰 JSON 페이로드를 제출하여 컨트롤러 프로세스가 대량의 메모리를 할당하도록 강제할 수 있습니다.
결과적으로 발생하는 영향:
CVSS v3.1 기본 점수
6.5 Medium
벡터 문자열
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
취약점 유형
CWE-770: 제한 또는 스로틀링 없는 리소스 할당
크레딧
Mohammed Idrees Banyamer – @banyamer_security (요르단)
| 구성 요소 | 취약한 버전 | 수정된 버전 | 웹훅 기본 활성화 여부? |
|---|---|---|---|
| ingress-nginx | < 1.13.7 | ≥ 1.13.7 | 아니요 |
| ingress-nginx (1.14.x) | < 1.14.3 | ≥ 1.14.3 | 아니요 |
참고: 이 취약점은 검증 어드미션 웹훅 기능이 명시적으로 활성화된 경우에만 발생합니다.
sequenceDiagram
participant Attacker as Low-priv. Attacker<br>(inside / adjacent cluster)
participant API as kube-apiserver
participant WebhookConfig as ValidatingWebhookConfiguration<br>(ingress-nginx-admission)
participant AdmissionSvc as ingress-nginx-admission<br>Service / Pod
participant Controller as ingress-nginx Controller Process
Note over Attacker,Controller: Attack prerequisites: webhook enabled + reachable endpoint
Attacker->>API: 1. Create/Update large Ingress resource<br>OR direct POST to webhook endpoint
API->>WebhookConfig: 2. Trigger admission review
WebhookConfig->>AdmissionSvc: 3. Forward AdmissionReview v1 request<br>(very large JSON body)
AdmissionSvc->>Controller: 4. Receive & begin parsing huge payload
activate Controller
Note right of Controller: No request body size limit in vulnerable versions
Controller-->>Controller: 5. Allocate memory for large strings/objects<br>(heap grows massively → OOM imminent)
Controller->>AdmissionSvc: 6. (Fails / hangs due to memory exhaustion)
deactivate Controller
Kubernetes->>AdmissionSvc: 7. kubelet detects memory limit breach
Kubernetes->>AdmissionSvc: 8. OOMKill container
AdmissionSvc-->>API: 9. Webhook timeout / connection refused
API-->>Attacker: 10. Admission denied or timeout<br>(Ingress creation fails)
Note over Attacker,Kubernetes: Result:
Note over Attacker,Kubernetes: • ingress-nginx pod restarted / crashed
Note over Attacker,Kubernetes: • Temporary loss of ingress validation
Note over Attacker,Kubernetes: • Potential brief service disruption for new ingresses
Note over Attacker,Kubernetes: • Possible node pressure in low-memory clusters
중요: 이 취약점은 명시적 허가를 받은 격리된 실험실/테스트 클러스터에서만 시연해야 합니다.
프로덕션 환경에서 이를 실행하는 것은 불법이며 서비스 중단을 초래할 수 있습니다.
권장되는 안전한 테스트 방법:
# 1. 어드미션 서비스를 로컬로 포트 포워딩
kubectl port-forward svc/ingress-nginx-controller-admission \
8443:443 -n ingress-nginx
# 2. 페이로드 크기를 점진적으로 늘리며 PoC 실행 (작게 시작!)
python3 cve-2026-24514-Kubernetes.py https://localhost:8443/validate 25 --insecure
# 3. 다른 터미널에서 메모리 및 파드 상태 모니터링
watch -n 2 'kubectl top pods -n ingress-nginx && kubectl get pods -n ingress-nginx'
# 더 공격적인 예시 (주의해서 사용)
python3 cve-2026-24514-Kubernetes.py https://localhost:8443/validate 80 --insecure
python3 cve-2026-24514-Kubernetes.py https://localhost:8443/validate 150 --insecure --field-name enormousJunk
현실적인 공격 시나리오:
--enable-validating-webhook=false)책임 있는 공개 및 PoC 크레딧: Mohammed Idrees Banyamer (@banyamer_security)