🇰🇷 한글 설명
ingress-nginx의 `nginx.ingress.kubernetes.io/rewrite-target` Ingress annotation에서 nginx 설정 주입 취약점이 발견되었습니다. 이를 통해 ingress-nginx 컨트롤러의 권한으로 임의 코드를 실행하고 접근 가능한 Kubernetes Secret을 탈취할 수 있습니다.
💡 쉬운 설명
Kubernetes의 ingress-nginx에서 특정 설정 항목을 악용하면 공격자가 부정한 명령을 실행할 수 있습니다. 기본 설치 상태에서는 클러스터 전체의 민감한 정보(Secret)에 접근할 수 있습니다.
🇺🇸 원문 (English)
A security issue was discovered in ingress-nginx where the `nginx.ingress.kubernetes.io/rewrite-target` Ingress annotation can be used to inject configuration into nginx. This can lead to arbitrary code execution in the context of the ingress-nginx controller, and disclosure of Secrets accessible to the controller. (Note that in the default installation, the controller can access all Secrets cluster-wide.)
📍 영향받는 시스템
ingress-nginx 모든 영향받는 버전 (공식 보안 패치 릴리스까지)
⚔️ 공격 벡터
관리자 권한이 없는 사용자가 Ingress 리소스의 `nginx.ingress.kubernetes.io/rewrite-target` annotation에 악성 nginx 설정을 주입
🛡️ 대응 방법
ingress-nginx를 최신 보안 패치 버전으로 업그레이드하고, Ingress annotation 입력값 검증을 수행
🔧 검증 코드
출력에서 `rewrite-target` annotation 존재 여부 확인. 값이 일반적인 경로가 아닌 nginx 설정 코드처럼 보이면 공격 시도 가능성 있음.
kubectl get ingress -A -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{.metadata.annotations.nginx\.ingress\.kubernetes\.io/rewrite-target}{"\n"}{end}' 2>/dev/null