기계번역

Ingress-nginx v1.12.1 및 v1.11.5 취약점 패치

kare jeyuk 2025. 4. 19. 15:01

Ingress-nginx CVE-2025-1974: 반드시 알아야 할 사항

Tabitha Sable (Kubernetes 보안 대응 위원회) | 2025년 3월 24일 월요일

오늘 ingress-nginx 유지관리자들은 Kubernetes 클러스터를 공격자가 장악할 수 있게 만들 수 있는 치명적인 취약점 다수를 수정한 패치를 배포했습니다. 전체 Kubernetes 관리자의 40% 이상이 ingress-nginx를 사용하고 있다면, 사용자와 데이터를 보호하기 위해 즉시 조치를 취해야 합니다.


배경

Ingress는 워크로드 Pod를 외부에 노출하여 실제로 사용할 수 있도록 해주는 Kubernetes의 전통적인 기능입니다. Kubernetes 사용자는 애플리케이션이 네트워크상에서 어떻게 노출되어야 하는지를 구현에 독립적인 방식으로 정의할 수 있습니다. 그런 다음 Ingress 컨트롤러는 해당 정의를 기반으로, 사용자의 상황과 요구에 맞는 로컬 또는 클라우드 리소스를 설정합니다.

 

다양한 클라우드 공급자나 로드 밸런서 브랜드에 맞게 여러 종류의 Ingress 컨트롤러가 존재합니다. ingress-nginx는 Kubernetes 프로젝트에서 제공하는 소프트웨어 전용 Ingress 컨트롤러입니다. 그 다양성과 사용 편의성 덕분에 ingress-nginx는 매우 인기 있으며, Kubernetes 클러스터의 40% 이상에 배포되어 있습니다.

 

ingress-nginx는 Ingress 객체의 요구사항을 강력한 오픈소스 웹 서버인 nginx 설정으로 변환합니다. nginx는 이 설정을 바탕으로 Kubernetes 클러스터 내 다양한 애플리케이션으로 요청을 수락하고 라우팅합니다. 이 nginx 설정을 올바르게 처리하는 것은 매우 중요합니다. ingress-nginx는 사용자에게 상당한 유연성을 제공해야 하며, 동시에 nginx가 의도치 않게 오용되지 않도록 방지해야 하기 때문입니다.


오늘 패치된 취약점들

오늘 공개된 ingress-nginx 취약점 중 네 가지는 nginx 설정을 처리하는 ingress-nginx의 방식 개선에 해당합니다. 이러한 취약점이 존재할 경우, 특수하게 조작된 Ingress 객체로 인해 nginx가 잘못 동작하게 만들 수 있습니다. 이로 인해 ingress-nginx가 접근 가능한 Secret 값을 노출시키는 결과를 초래할 수 있습니다. ingress-nginx는 기본적으로 클러스터 전체의 Secret에 접근할 수 있으므로, Ingress 객체를 생성할 수 있는 권한이 있는 사용자 또는 엔티티는 클러스터 전체를 장악할 수 있습니다.

 

가장 심각한 취약점인 CVE-2025-1974CVSS 9.8점으로 평가되며, ingress-nginx의 Validating Admission Controller 기능을 통해 Pod 네트워크에 존재하는 어떤 것이라도 설정 인젝션 취약점을 악용할 수 있게 만듭니다. 보통 Ingress 객체를 생성하려면 높은 권한이 필요하지만, 이 취약점과 오늘 발표된 다른 취약점들을 결합하면 클러스터 관리자 권한 없이도 Kubernetes 클러스터를 장악할 수 있습니다. 일반적인 클라우드 환경에서는 Pod 네트워크가 모든 워크로드에 개방되어 있거나, 심지어 사내망에 연결된 사용자라면 누구나 접근 가능한 경우도 많아 매우 위험합니다.

 

오늘 릴리스된 ingress-nginx v1.12.1 및 v1.11.5는 이 다섯 가지 취약점 모두에 대한 패치를 포함하고 있습니다.


다음 단계

  1. 클러스터에서 ingress-nginx를 사용하는지 확인하세요.
    다음 명령어로 확인할 수 있습니다 (클러스터 관리자 권한 필요)
kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx
  1. ingress-nginx를 사용 중이라면 즉시 조치 계획을 수립하세요.
    가장 쉽고 효과적인 방법은 오늘 배포된 패치 버전으로 업그레이드하는 것입니다. 모든 취약점이 이 버전에서 해결되었습니다.
  2. 즉시 업그레이드가 어렵다면, 위험을 줄이기 위해 ingress-nginx의 Validating Admission Controller 기능을 비활성화하세요.

Helm으로 설치한 경우:

helm upgrade --reuse-values my-ingress-nginx ingress-nginx/ingress-nginx \ --set controller.admissionWebhooks.enabled=false

 

수동 설치한 경우:

  1. ingress-nginx-admission이라는 ValidatingWebhookConfiguration을 삭제
  2. ingress-nginx-controller의 Deployment 또는 DaemonSet에서 --validating-webhook 인자를 제거

단, 이 기능은 사용자의 Ingress 설정 오류를 사전에 알려주는 유용한 기능이므로 업그레이드 후 반드시 다시 활성화하는 것이 좋습니다.


결론 및 참고 자료

CVE-2025-1974를 포함한 ingress-nginx 취약점은 많은 Kubernetes 사용자와 그들의 데이터를 위협하는 매우 심각한 문제입니다. ingress-nginx를 사용 중이라면 지체 없이 조치를 취하시기 바랍니다.

 

이번 취약점을 책임감 있게 공개하고 해결에 협력해준 Wiz의 Nir Ohfeld, Sagi Tzadik, Ronen Shustin, Hillai Ben-Sasson과 ingress-nginx 유지관리자 Marco Ebert, James Strong, 그리고 Kubernetes 보안 대응 위원회에 감사드립니다.

더 자세한 내용은 다음을 참고하세요.

  • [GitHub 이슈 목록]: CVE-2025-24513, CVE-2025-24514, CVE-2025-1097, CVE-2025-1098, CVE-2025-1974
  • ingress-nginx의 유지보수와 향후 계획에 대한 정보는 이 GitHub 이슈 또는 KubeCon/CloudNativeCon EU 2025에서 James와 Marco의 발표를 참고하세요.