반응형
nginx-ingress-controller 보안 취약점
3월 25일, PHD 알람이 울렸다. 내용은 이러했다.
최근 nginx-ingress 컨트롤러가 CVE-2025-1098, CVE-2025-1974, CVE-2025-1097, CVE-2025-24514, 및 CVE-2025-24513 [1]의 영향을 받는 것으로 확인되어 고객님의 조치가 필요합니다. 고객님께서는 하나 이상의 Amazon Elastic Kubernetes Service(EKS) 클러스터에 이 컨트롤러를 구성하셨습니다. EKS 클러스터의 완화 및 업그레이드 방법을 포함한 이 문제에 대한 자세한 정보는 Kubernetes 공지사항을 검토하시기를 권장드립니다 [1][2].
영향을 받을 수 있는 고객님의 EKS 클러스터 목록은 AWS Health Dashboard의 '영향받는 리소스' 탭에서 확인하실 수 있습니다.
문의사항이나 우려사항이 있으시면 AWS Support에 연락해 주시기 바랍니다 [3].
[1] https://github.com/kubernetes/kubernetes/issues/131009
[2] https://kubernetes.github.io/ingress-nginx/deploy/upgrade/
[3] https://aws.amazon.com/support
영향받는 nginx-ingress-controller 버전
Affected Versions
< v1.11.0
v1.11.0 - 1.11.4
v1.12.0
보안 조치 방법:
- ingress-nginx를 v1.11.5, v1.12.1 또는 이후 버전으로 업그레이드
- 현재 쓰고 있는 1.7.0 버전은 취약한 버전에 속했다.
- v1.11.5과 v1.12.1 중 전자는 머지않아 또 업그레이드해야 하므로 가장 최신 버전이었던 후자를 택했다.
나의 nginx-ingress-controller 업그레이드(v1.12.1) 여정
1. 현재 배포된 nginx-ingress-controller 리소스 현황 파악
# kubectl get all -A | grep nginx
# kubectl describe pod <nginx-ingress-controller POD명> -n <NS>
2. 기존 ingress-nginx 관련 YAML 및 설정 백업
ingress-nginx 관련 YAML 파일을 백업해놓자
3. TO-BE nginx-ingress-controller 권고사항 검토
https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.12.1
4. ECR docker-image 빌드 (1.7.0 -> 1.12.1)
Dockerfile, CI 파이프라인을 수정한 후 docker build를 실행했다.
docker-image가 저장되는 ECR에 버전이 바뀌었는지 확인한다.
5. ingress-nginx-controller 버전 변경 (1.7.0 -> 1.12.1)
- nginx-ingress-controller.yaml 및 nginx-ingress-hpa.yaml에서 버전 변경 후 Pod 재배포시 field is immutable 오류가 발생할 수 있다. 이때 6.와 같이 기존 job을 삭제해보자.
- nginx-ingress-controller.yaml 및 nginx-ingress-hpa.yaml 버전 변경
AS-IS : app.kubernetes.io/version: 1.7.0
TO-BE : app.kubernetes.io/version: 1.12.1
6. 기존 Job 삭제
# kubectl delete job ingress-nginx-admission-create -n ingress-nginx
# kubectl delete job ingress-nginx-admission-patch -n ingress-nginx
- field is immutable 오류:
Job 리소스의 spec.template 필드는 불변(immutable)이다. 다시말해, Job의 spec.template은 한 번 생성된 후에는 수정할 수 없도록 설계되어 있다. 기존 Job에 패치를 적용하려고 할 때, spec.template에 변경 사항이 포함되어 있으면 이와 같은 오류가 뜬다.
가장 간단한 해결책은 기존 Job을 삭제하고 새로운 설정으로 다시 생성하는 것이다.
ingress-nginx-admission-create와 ingress-nginx-admission-patch job의 경우 인증서 생성 및 패치 작업을 수행하며, 일반적으로 설치/업데이트 시 한 번만 실행되는 리소스이다.
7. Kubernetes YAML 파일에서 ingress-nginx-controller 버전 수정 (5.와 동일)
5.와 동일한 부분으로, nginx-ingress-controller.yaml 및 nginx-ingress-hpa.yaml 변경사항을 git 파이프라인에 태우는 작업을 진행했다.
반응형
'OPS' 카테고리의 다른 글
[AWS] ALB/NLB 액세스 로그 저장을 위한 S3 버킷 권한 설정 방법 (0) | 2025.04.21 |
---|---|
nginx-ingress-controller와 nginx-ingress-controller-admission 어떤 사이야? (0) | 2025.04.02 |
EKS 1.32 업그레이드시 사전 고려사항 정리 (1) | 2025.04.02 |
Amazon Linux 2 EOL 연장 (2025년6월30일->2026년 6월 30일) (0) | 2025.01.12 |
Azure ML 실습 (1) | 2024.10.21 |