
워크스루: rewrite-target 어노테이션을 통한 ingress-nginx 설정 주입
키워드: CVE-2026-3288, ingress-nginx 취약점, Kubernetes 보안, nginx 구성 주입, rewrite-target 어노테이션, RCE, Secret 노출, CWE-20, CAPEC-176, ingress-nginx CVE 2026, Kubernetes 클러스터 장악
ingress-nginx에서 nginx.ingress.kubernetes.io/rewrite-target Ingress 어노테이션을 사용해 nginx에 구성을 주입할 수 있는 보안 문제가 발견되었습니다. 이로 인해 ingress-nginx 컨트롤러의 컨텍스트에서 임의 코드가 실행되거나, 컨트롤러가 접근할 수 있는 Secrets이 노출될 수 있습니다. (기본 설치에서는 컨트롤러가 클러스터 전체의 모든 Secrets에 접근할 수 있다는 점에 유의하세요.)
발견자: Kai Aizen
공개일: 2026년 3월 9일
CVSS 점수: 8.8 (High)
CWE: CWE-20 — 부적절한 입력 검증
CAPEC: CAPEC-176 — 구성/환경 조작
구성 요소: ingress-nginx
공격 유형: Ingress 어노테이션을 통한 Nginx 구성 주입
필요 권한: Low (PR:L)
nginx.ingress.kubernetes.io/rewrite-target Ingress 어노테이션은 요청이 업스트림 서비스로 전달되기 전에 요청 경로를 수정하기 위한 것입니다. 그러나 구현 방식상 임의의 구성 지시어를 기본 nginx 구성에 직접 주입할 수 있습니다.
Ingress 리소스를 생성하거나 수정할 수 있는 공격자는 이를 이용해 다음을 수행할 수 있습니다:
| 영향 영역 | 심각도 |
|---|---|
| 기밀성 | High — 전체 Secret 노출(기본 구성에서는 클러스터 전체) |
| 무결성 | High — 컨트롤러 컨텍스트에서 임의 코드 실행 |
| 가용성 | High — ingress-nginx 컨트롤러 전체 장악 |
핵심 문제는 ingress-nginx가 rewrite-target 어노테이션 값을 충분한 입력 검증 없이 처리하여, 공격자가 제어하는 콘텐츠가 nginx 구성에 직접 기록될 수 있다는 점입니다. 이는 구성 주입 취약점으로, 어노테이션 값이 단순한 rewrite 경로로 신뢰되지만 임의의 nginx 지시어를 포함할 수 있습니다.
이 취약점은 ingress-nginx가 실행 중인 클러스터에서 Ingress 리소스를 생성하거나 수정할 권한이 있는 모든 사용자가 악용할 수 있습니다. 공격에 필요한 조건은 다음과 같습니다:
이 취약점은 ingress-nginx에서 잘 알려진 어노테이션 주입 버그 계열에 속합니다:
| CVE | 연도 | 어노테이션 | 영향 |
|---|---|---|---|
| CVE-2021-25746 | 2022 | 다양한 어노테이션 | 지시어 주입 |
| CVE-2023-5044 | 2023 | permanent-redirect | 코드 주입 |
| CVE-2024-7646 | 2024 | 어노테이션 검증 우회 | 검증 우회 |
| CVE-2026-3288 | 2026 | rewrite-target | RCE + Secret 노출 |
반복되는 패턴은 어노테이션 값이 적절한 무결화(sanitization) 없이 nginx 구성으로 유입된다는 것입니다. 다른 어노테이션, 동일한 근본 원인입니다.
| 브랜치 | 취약 버전 | 수정 버전 |
|---|---|---|
| 1.13.x | < 1.13.8 | 1.13.8 |
| 1.14.x | < 1.14.4 | 1.14.4 |
| 1.15.x | < 1.15.0 | 1.15.0 |
# Check if ingress-nginx is installed
kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx
# Check ingress-nginx version
kubectl exec -n ingress-nginx \
$(kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}') \
-- /nginx-ingress-controller --version
클러스터에 ingress-nginx가 설치되어 있지 않다면 영향을 받지 않습니다.
ingress-nginx를 해당 브랜치의 패치 버전으로 업그레이드하세요:
# Using Helm
helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--version <patched-chart-version>
공식 업그레이드 문서를 참조하세요: Upgrading Ingress-nginx
업그레이드할 수 있을 때까지 admission control을 사용해 rewrite-target 어노테이션 사용을 차단하세요:
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: block-rewrite-target
webhooks:
- name: block-rewrite-target.security.local
rules:
- apiGroups: ["networking.k8s.io"]
apiVersions: ["v1"]
operations: ["CREATE", "UPDATE"]
resources: ["ingresses"]
clientConfig:
# Point to a webhook service that rejects Ingress resources
# containing the rewrite-target annotation
Ingress 리소스의 rules.http.paths.path 필드에 있는 의심스러운 데이터는 이 취약점을 악용하려는 시도를 나타낼 수 있습니다.
# Check for suspicious Ingress annotations
kubectl get ingress --all-namespaces -o json | \
jq '.items[] | select(.metadata.annotations["nginx.ingress.kubernetes.io/rewrite-target"] != null) | {namespace: .metadata.namespace, name: .metadata.name, rewrite: .metadata.annotations["nginx.ingress.kubernetes.io/rewrite-target"]}'
이 취약점이 악용된 증거를 발견한 경우 [email protected]로 연락해 주세요.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
| 지표 | 값 |
|---|---|
| 공격 경로 | Network (AV:N) |
| 공격 복잡도 | Low (AC:L) |
| 필요 권한 | Low (PR:L) |
| 사용자 상호작용 | None (UI:N) |
| 범위 | Unchanged (S:U) |
| 기밀성 | High (C:H) |
| 무결성 | High (I:H) |
| 가용성 | High (A:H) |
| 날짜 | 이벤트 |
|---|---|
| — | 취약점이 발견되어 Kubernetes 보안 대응 위원회에 신고됨 |
| 2026년 3월 9일 | 보안 권고 게시 |
| 2026년 3월 9일 | 패치 버전 출시(1.13.8, 1.14.4, 1.15.0) |
| 2026년 3월 9일 | CVE-2026-3288 지정 |
연구자: Kai Aizen — SnailSploit
감사: Kubernetes 보안 대응 위원회를 대표하여 Tabitha Sable
이 정보는 보안 연구 및 방어 목적으로만 제공됩니다. 이 취약점을 악의적인 목적으로 악용하는 것은 불법이며 비윤리적입니다. 소유하지 않은 시스템을 테스트하기 전에는 항상 적절한 승인을 받으십시오.
이 취약점에 대한 질문이나 추가 정보가 필요하시면:
마지막 업데이트: 2026년 3월 10일
이 프로젝트의 전체 분석(writeup), 방법론 및 관련 연구는 다음에서 확인할 수 있습니다:
https://snailsploit.com/security-research/cves/cve-2026-3288/
Kai Aizen — 독립 공격적 보안 연구원이 제작했습니다.
snailsploit.com · Research · Frameworks · GitHub · LinkedIn · ResearchGate · X/Twitter
같은 공격, 다른 기반.