1P by neo 2달전 | favorite | 댓글 1개

경고: macOS Sequoia 15가 DNS 암호화를 우회할 수 있음

DNS 암호화 101

  • 웹 브라우저에 호스트 이름(예: apple.com)을 입력하면, 해당 이름은 IP 주소로 변환되어야 컴퓨터가 서버에 연결할 수 있음
  • 이 조회는 보통 암호화되지 않은 상태로 수행되며, 인터넷 제공자 및 연결을 모니터링하는 다른 당사자가 방문하는 사이트를 볼 수 있음
  • 이러한 조회를 보호하기 위해 Little Snitch 6는 새로운 기능인 DNS 암호화를 제공함
  • DNS 암호화가 활성화되면 모든 이름 조회가 Little Snitch를 통해 암호화된 형태로 수행됨
  • 이를 위해 Little Snitch는 DNS 프록시를 등록하며, macOS는 모든 DNS 요청을 해당 프록시로 보내어 암호화된 형태로 조회를 수행함

하지만…

  • macOS 15 Sequoia에서 DNS 관련 문제를 조사하는 동안, 일부 DNS 요청(특히 특정 저수준 레거시 API를 통해 이루어진 요청)이 프록시로 전달되지 않는 것을 발견함
  • macOS Sequoia에 버그가 있어 일부 요청이 설치된 DNS 프록시를 우회하고 시스템의 기본 이름 서버로 암호화되지 않은 상태로 전송되는 것으로 보임
  • 이 버그는 Little Snitch뿐만 아니라 모든 종류의 DNS 프록시에 영향을 미칠 가능성이 있음
  • 따라서 Little Snitch 6의 새로운 DNS 암호화 기능을 사용하거나 다른 서드파티 DNS 프록시를 사용하는 경우, Apple이 향후 macOS 업데이트에서 수정할 때까지 일부 DNS 조회가 프록시를 우회할 수 있음을 인지해야 함
  • 참고로, 상위 수준 API를 통해 수행되는 DNS 조회는 이 버그의 영향을 받지 않음. 예를 들어, Safari나 Chrome에서의 웹 브라우징은 여전히 암호화된 조회의 혜택을 받음. 반면, Firefox는 영향을 받을 수 있음

재현 방법

  1. Little Snitch 설정에서 DNS 암호화를 활성화함
  2. Wireshark를 port 53 캡처 필터로 시작함
  3. Xcode 플레이그라운드에서 다음 코드를 실행함:
    import Foundation
    let domain = "dnsproxytest.com"
    var result: UnsafeMutablePointer<addrinfo>?
    let status = getaddrinfo(domain, nil, nil, &result)
    
  • dnsproxytest.com에 대한 조회가 Wireshark에서 암호화되지 않은 형태로 UDP 포트 53(암호화되지 않은 조회의 기본값)에서 보이는 것을 확인할 수 있음
  • 또한, Little Snitch 네트워크 모니터가 조회에 대한 트래픽을 전혀 표시하지 않음. 이는 조회가 네트워크 필터를 완전히 우회했기 때문임
  • 이 버그를 Apple에 보고했으며, 빠른 수정이 있기를 바람. 계속해서 업데이트를 제공할 예정임

업데이트 2024-09-17, 오후 7:10

  • 추가 조사 결과, 이 버그는 최소한 macOS 14.5 Sonoma부터 존재했으며, 더 이전 버전에서도 존재할 가능성이 있음. 현재 더 오래된 14.x 시스템에 접근할 수 없어 테스트는 불가능함

GN⁺의 정리

  • 이 기사는 macOS Sequoia 15에서 DNS 암호화가 우회될 수 있는 버그를 다루고 있음
  • DNS 암호화는 인터넷 사용자의 프라이버시를 보호하는 중요한 기능임
  • 이 버그는 특히 저수준 레거시 API를 통해 이루어진 DNS 요청에 영향을 미침
  • Apple이 이 문제를 해결할 때까지 사용자는 일부 DNS 조회가 암호화되지 않을 수 있음을 인지해야 함
  • 유사한 기능을 제공하는 다른 프로젝트로는 Pi-hole과 같은 DNS 필터링 솔루션이 있음

중요한 정보 감사합니다.
일단 사파리, 크롬은 안심할 수 있다고 하니 다행입니다.