- Little Snitch 6.1에서 DNS 암호화가 일부 상황에서 실패할 수 있었으나, macOS 전반 문제가 아니라 해당 버전의 문제로 좁혀졌고 6.1.1에서 수정됨
- 정상 동작하려면 macOS의 DNS 요청이 Little Snitch의 DNS 프록시로 전달되고, 프록시가 암호화된 조회를 수행해야 함
- 조사 중 일부 저수준 레거시 API 요청이 프록시에 도달하지 않고 시스템 기본 네임서버로 암호화되지 않은 UDP 53 조회를 보내는 현상이 관찰됨
- 재현은 Little Snitch에서 DNS 암호화를 켜고 Wireshark를
port 53필터로 실행한 뒤 Xcode playground에서getaddrinfo("dnsproxytest.com")를 호출하는 방식임 - Safari와 Chrome 같은 고수준 API 기반 조회는 초기에는 영향이 없어 보였고 Firefox는 영향이 있는 것으로 보였지만, 최종 범위는 Little Snitch 6.1의 DNS 프록시로 정리됨
Little Snitch 6.1에서 발생한 DNS 암호화 실패
- Little Snitch 6의 DNS 암호화 기능은 호스트명 조회를 Little Snitch로 라우팅해 암호화된 형태로 처리함
- 이를 위해 Little Snitch는 DNS 프록시를 등록하고, macOS는 모든 DNS 요청을 해당 프록시로 보내야 함
- 일부 DNS 요청, 특히 특정 저수준 레거시 API를 통한 요청은 프록시에 수신되지 않는 현상이 발견됨
- 해당 요청은 시스템 기본 네임서버로 암호화되지 않은 형태로 전송될 수 있었고, Wireshark에서는 UDP 포트 53 트래픽으로 확인 가능했음
- Little Snitch Network Monitor에는 해당 조회 트래픽이 표시되지 않았으며, 조회가 네트워크 필터를 완전히 우회했기 때문임
재현 절차와 업데이트 경과
-
재현 절차
- Little Snitch 설정에서 DNS encryption을 활성화함
- Wireshark를
port 53캡처 필터로 실행함 - Xcode playground에서
getaddrinfo로dnsproxytest.com조회를 실행함 dnsproxytest.com조회가 UDP 53에서 암호화되지 않은 형태로 보일 수 있음
-
초기 영향 범위
- 고수준 API를 통한 DNS 조회는 영향을 받지 않는 것으로 보였음
- Safari와 Chrome의 웹 브라우징은 암호화된 조회의 이점을 유지하는 것으로 보였음
- Firefox는 영향을 받는 것으로 보였음
-
업데이트 내역
- 2024-09-17 19:10: 이 문제가 macOS 14.5 Sonoma부터 존재했을 수 있음이 확인됐고, 더 오래된 14.x 시스템은 테스트할 수 없었음
- 2024-09-18 12:05: macOS의 일반적인 DNS 프록시 문제가 아니라 Little Snitch 6.1의 DNS 프록시에만 영향을 주는 문제로 정리됨
- 2024-09-18 15:52: 문제는 Little Snitch 6.1.1에서 수정됨