🇰🇷 한글 설명
Docker Engine이 DNS 체크 과정에서 호스트네임의 주소 중 하나라도 보안이 취약한 CIDR(127.0.0.0/8 등)에 해당하면 해당 레지스트리를 안전하지 않은 것으로 분류하는 취약점입니다. 공격자가 DNS 응답에 루프백 IP와 공격자 IP를 함께 포함시키면, Docker는 인증서 검증을 비활성화하고 HTTP로 연결을 전환하여 통신을 가로챌 수 있습니다.
💡 쉬운 설명
도커가 특정 웹사이트 주소를 검사할 때, 주소 목록에 '내 컴퓨터' 주소가 하나라도 섞여 있으면 보안 검사를 건너뛰는 허점이 있습니다. 해커가 가짜 주소 정보를 섞어 보내면 보안 연결이 해제되어 데이터가 유출될 수 있습니다.
🇺🇸 원문 (English)
Docker Engine classifies a registry hostname as insecure using an any-match DNS check. loadInsecureRegistries() injects 127.0.0.0/8 and ::1/128 as insecure CIDRs by default. isCIDRMatch resolves all of the hostname's addresses and returns true if a single address is in the insecure CIDR list. Because the transport re-dials the hostname rather than the CIDR-matching address, a DNS answer set of one loopback IP plus a non-loopback attacker IP disables certificate verification and enables HTTP fallback for the registry connection.
📍 영향받는 시스템
Docker Engine (취약한 DNS 체크 로직이 포함된 버전)
⚔️ 공격 벡터
DNS 스푸핑을 통해 루프백 IP와 공격자 IP가 혼합된 DNS 응답을 제공하여 인증서 검증을 우회함
🛡️ 대응 방법
Docker Engine을 최신 보안 패치가 적용된 버전으로 업데이트하거나, 신뢰할 수 없는 DNS 응답을 차단함
🔧 검증 코드
출력된 Docker Engine 버전을 확인하여 해당 취약점이 해결된 최신 버전인지 제조사의 보안 공지와 대조함
docker version --format '{{.Server.Version}}'