🇰🇷 한글 설명
CoreDNS 1.9.4부터 1.14.5 버전 사이에서 Kubernetes의 포트가 선언되지 않은 헤드리스 서비스가 존재할 경우, AXFR 요청 시 패닉(Panic)이 발생할 수 있습니다. 이는 특정 플러그인 간의 데이터 처리 과정에서 빈 레코드 배치를 검증 없이 인덱싱하여 발생하는 문제입니다. 해당 문제는 1.14.5 버전에서 수정되었습니다.
💡 쉬운 설명
DNS 서버인 CoreDNS가 특정 설정 환경에서 잘못된 요청을 받으면 갑자기 멈추거나 꺼질 수 있는 오류입니다. 포트 정보가 없는 서비스가 있을 때 서버가 예상치 못한 데이터를 처리하다가 오류를 일으키는 현상입니다.
🇺🇸 원문 (English)
CoreDNS is a DNS server written in Go. From 1.9.4 until 1.14.5, a network DNS client allowed to request AXFR for a CoreDNS zone can trigger a panic when CoreDNS is configured with k8s_external headless-service zone transfers and Kubernetes contains a headless service endpoint with no declared ports; plugin/kubernetes/object/endpoint.go creates Port: -1, plugin/k8s_external/msg_to_dns.go skips that service, plugin/k8s_external/transfer.go sends an empty []dns.RR batch, and plugin/transfer/transfer.go indexes records[0] without checking the batch is non-empty. This issue is fixed in version 1.14.5.
📍 영향받는 시스템
CoreDNS 1.9.4 ~ 1.14.5
⚔️ 공격 벡터
네트워크 DNS 클라이언트가 AXFR(영역 전송) 요청을 전송하여 서버의 패닉 유도
🛡️ 대응 방법
CoreDNS를 1.14.5 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 1.14.5 미만인 경우 해당 취약점에 노출되어 있습니다.
coredns --version 2>/dev/null || kubectl exec [POD_NAME] -- coredns --version 2>/dev/null