🇰🇷 한글 설명
Zeroconf 라이브러리의 AsyncListener.handle_query_or_defer 함수에서 잘린(truncated) TC-bit 쿼리를 제한 없이 메모리에 보관하여 발생하는 취약점입니다. 공격자가 UDP/5353 포트를 통해 조작된 쿼리를 지속적으로 보내면 메모리 고갈 및 CPU 부하를 유발할 수 있습니다.
💡 쉬운 설명
네트워크 서비스 탐색 도구인 Zeroconf가 가짜 요청을 무제한으로 저장하려고 시도하다가 컴퓨터의 메모리와 CPU를 모두 써버리는 문제입니다. 이를 통해 공격자는 시스템을 느리게 만들거나 멈추게 할 수 있습니다.
🇺🇸 원문 (English)
Zeroconf is a pure Python implementation of multicast DNS service discovery. Prior to 0.149.12, AsyncListener.handle_query_or_defer retained every truncated TC-bit incoming query, each up to _MAX_MSG_ABSOLUTE = 8966 bytes, in self._deferred[addr] and armed a per-address timer in self._timers[addr] without capping the per-address list or distinct addr keys, allowing unauthenticated hosts on the local link over UDP/5353 (224.0.0.251 / ff02::fb) to spoof sources, grow _deferred and _timers, and cause memory exhaustion and quadratic CPU burn. This issue is fixed in version 0.149.12.
📍 영향받는 시스템
Zeroconf Python library versions prior to 0.149.12
⚔️ 공격 벡터
로컬 네트워크 내의 인증되지 않은 호스트가 UDP/5353 포트로 조작된 멀티캐스트 DNS 쿼리를 전송
🛡️ 대응 방법
Zeroconf 라이브러리를 0.149.12 버전 이상으로 업데이트
🔧 검증 코드
출력된 버전 번호가 0.149.12보다 낮으면 취약한 상태입니다.
pip show zeroconf 2>/dev/null | grep Version