0xNews - DNSMasq DNS 전달자에 영향을 미치는 심각한 취약점 발견

0xNews - DNSMasq DNS 전달자에 영향을 미치는 심각한 취약점 발견


이스라엘 보안회사 JSOF 발표

https://www.jsof-tech.com/disclosures/dnspooq/


DNSpooq 고 총칭하는 7가지 취약점

이전에 공개된 DNS 아키텍처의 약점을 반영하여 DNSMasq 서버에 다양한 공격에 대해 무력하게 만듬

연구팀은 DNSMasq 가 외부 경로 공격자, 즉 DNS 전달자와 DNS 서버간 통신을 관찰하지 않은 공격자의 DNS 캐시 포이즈닝 공격에 취약하다는 것을 발견


CVE-2020-25681 CVSS 8.1

CVE-2020-25682 CVSS 8.1

CVE-2020-25683 CVSS 5.9

CVE-2020-25687 CVSS 5.9

CVE-2020-25684 CVSS 4

CVE-2020-25685 CVSS 4

CVE-2020-25686 CVSS 4

등 총 7가지 취약점 확인


연구팀은 이번 공격에 대한 분석 결과

한번에 여러 도메인의 이름에 대한 포이즈닝 공격이 허용되며 발견된 여러 취약점의 결과

공격은 몇초나 몇분 내 성공적으로 완료

이에 대한 특별한 요구 사항이나 준비 사항 없음


또한 DNSMasq 의 많은 인스턴스가 잘못 구성되어 있음을 발견

인터넷에서 직접 공격이 가능하도록 WAN 인터페이스에서 수신 대기


DNSMasq 는 DNS masquerade 의 약자

DNS 레코드를 로컬로 캐싱하는데 사용되는 DNS 전달 기능을 갖춘 경량 소프트웨어

결과적으로 업스트림 네임 서버의 부하를 줄이고 성능 향상에 도움을 줌


연구팀이 분석을 수행한 2020년 9월 기준

약 1백만개의 취약한 DNSMasq 인스턴스 발견

안드로이드 스마트폰에 포함된 소프트웨어, Cisco, Aruba, Technicolor, Redhat, Siemens, Ubiquiti, Comcast 등 수백만개의 라우터나 기타 네트워크 기기에 포함되어 있음


DNS Cache Poisoning Flow


DNS 캐시 포이즈닝은 2008년 최초 발견

공격자가 대부분 네임 서버에 대해 캐시 포이즈닝 공격을 시작할 수 있는 광범위하고 중요한 DNS 취약점 발견


DNS 캐시 포이즈닝 Cache Poisoning 최초 발표한 블랙햇 발표

https://www.blackhat.com/html/webinars/kaminsky-DNS.html


DNS 의 근본적인 설계에 대한 결함을 악용

가능한 트랜잭션 Transaction ID TXID 는 65536개 뿐

DNS 서버에 위조된 응답이 넘쳐나면 캐시가 되고 사용자를 위조된 웹 사이트로 라우팅하는데 활용


트랜잭션 ID 는 권한있는 네임 서버가 악의적인 응답을 만들기 위해 가장 잘될 가능성을 막기 위한 메커니즘으로 도입

이 새로운 설정을 통해 DNS 해석기 DNS resolvers 는 네임 서버에 대한 요청에 16bit ID 를 첨부

이후 동일한 ID 로 응답을 다시 전달


그러나 트랜잭션 ID 의 제한은 재귀 확인자가 주어진 도메인(ex: www.google.com 등)에 대한 권한 있는 네임 서버를 쿼리할 때마다 공격자가 6만 5천개 중 일부 혹은 전부에 대한 DNS 응답으로 확인자를 넘치게 될 수 있음을 의미


공격자의 올바른 트랜잭션 ID 를 가진 악의적인 응답이 권한있는 서버의 응답보다 먼저 도착하려면 DNS 캐시가 효과적으로 감염되어 DNS 응답이 유효한 정당한 주소 대신 공격자가 선택한 IP 주소로 반환


이 공격은 전체 조회 프로세스가 인증되지 않았기 때문에 권한 있는 서버의 신원을 확인할 방법이 없음

DNS 요청과 응답이 TCP 대신 UDP 를 사용함으로 응답을 스푸핑 함


이 문제를 해결하기 위해 DNS 조회와 응답을 위해 53 포트를 사용하는 대신 무작위 UDP 포트를 트랜잭션 ID 와 함께 두번째 식별자로 사용하여 엔트로피 entropy 를 수십억 단위로 증가

공격자에게 실질적으로 불가능하게 만듬

소스 포트와 트랜잭션 ID 의 올바른 조합을 추측


소스 포트 무작위화 Source Port Randomization SPR 과 DNSSEC Domain Name System Security Extensions 와 같은 프로토콜로 인해 캐시 포이즈닝 공격의 효과가 줄어들었음

이번 연구팀은 2020년 11월 분석 결과 무작위화의 무력화를 할 수 있는 새로운 사이드 채널 공격 발견

ICMP 속도 제한을 사이드 채널로 사용하여 주어진 포트가 열려있는지 여부를 표시


SAD DNS Side-channel AttackeD DNS 이라는 공격은 스푸핑된 UDP 패킷 버스트를 DNS 해석기로 전송

속도 제한이 충족되었는지의 여부를 식별 후 결국 요청이 시작된 정확한 소스 포트로 점차 범위 축소

각각 다른 포트를 통해 전송한 후 ICMP Port Unreachable 메시지로 응답


CVE-2020-25684

CVE-2020-25685

CVE-2020-25686

등 이번 취약점을 발견한 연구팀은 DNS 캐시 포이즈닝 공격은 위 3가지 취약점이 핵심으로 분석

3가지 취약점이 트랜잭션 ID 의 엔트로피를 줄이는 것을 목표

이는 SAD DNS 와 유사

응답을 수락하는데 필요한 소스 포트을 점차 줄여서 결국 정상 사용 불가와 공격자가 원하는 방향으로 접속 유도


연구팀은 DNSMasq 의 SPR 지원에도 불구하고 하나의 포트 위에 여러 트랜잭션 ID 를 다중화하고 각 포트를 특정 트랜잭션 ID 에 연결하지 않음을 발견

DNS 스푸핑을 방지하는데 사용되는 CRC32 알고리즘이 공격자가 포트 중 하나와 트랜잭션 ID 중 하나를 올바르게 가져와야 함


DNSMasq v.2.78 ~ v.2.82 에서는 위 3가지 취약점 모두 영향을 받음

연구팀에서 발표한 4가지 취약점은 힙 기반 버퍼 오버 플로우 heap-based buffer overflows 로 취약한 기기에서 잠재적인 원격 코드 실행으로 이어질 수 있음

이러한 취약점은 그 자체로 위험이 제한적

하지만 캐시 포이즈닝 취약점과 결합하여 강력한 공격 트리거가 되고 원격 코드 실행을 허용할 수 있기 때문에 더욱 강력해짐


또한 이러한 취약점은 SAD DNS 나 NAT Slipstreaming 과 같은 다른 네트워크 공격과 연결

53 포트에서 수신하는 DNSMasq 해석기에 대한 다중 단계 공격을 마운트할 수 있음

내부 네트워크 내에서 수신된 연결만 수신하도록 구성된 경우와 동일

악성 코드가 웹 브라우저 혹은 동일한 네트워크의 다른 감염된 기기를 통해 전송되면 위험한 결과 초래


공격은 캐시 포이즈닝에 취약하게 만드는 것 외

공격자가 라우터나 네트워크 기기를 제어

트래픽을 악성 도메인으로 전달하여 DDoS 공격을 준비

사용자가 접속하는 것을 방해


Massive DDoS Attack Flow


Reverse DDoS Attack Flow




감염된 DNSMasq 서버를 사용하는 네트워크에 연결된 모바일 기기가 잘못된 DNS 레코드를 수신

이후 연결시 새로운 네트워크를 감염시키는데 사용되는 웜 공격 Worm 가능성에 대한 추적 분석 중


이번 공격을 방어하기 위해 DNSMasq 소프트웨어를 이후 업데이트 v.2.83 이상으로 권고

업데이트 전까지는 전달이 허용되는 최대 쿼리를 낮추고 DoH DNS-over-HTTPS 혹은 DoT DNS-over-TLS 를 사용

업스트림 서버에 연결할 것을 제안


DNS 는 인터넷 사용자의 보안에 큰 영향을 미치는 인터넷 핵심 프로토콜

이러한 문제로 인해 네트워크 기기가 손상될 위험이 있으며 다수의 인터넷 사용자에게 영향을 미치며 이번에 발견된 캐시 포이즈닝 공격으로 피해를 받을 수 있음


DNS 보안의 중요성과 DNS 전달자 forwarders 의 보안이 중요

DNSSEC, DNS 전송 보안, DNS 쿠키와 같은 DNS 보안 조치의 배치에 대한 필요성과 관심을 가져야 함


댓글

이 블로그의 인기 게시물

0xNews - 미군을 주제로 하여 한국인을 노리는 피싱 공격 캠페인 경고

0xNews - 리눅스 커널에서 StackRot 라는 이름의 취약점으로 권한 상승 취약점 발견

0xNews - 리눅스 시스템에 원격 명령어 인젝션 공격이 가능한 새로운 openSSH 취약점 발견