ClickCease SAD DNS용 KernelCare 패치 출시 - TuxCare

인기 뉴스레터 구독하기

4,500명 이상의 Linux 및 오픈소스 전문가와 함께하세요!

한 달에 두 번. 스팸이 없습니다.

SAD DNS용 KernelCare 패치 출시

2020년 11월 18일 TuxCare 홍보팀

SAD DNS용 KernelCare 패치 출시 예정Sad DNS(사이드 채널 공격 DNS)는 캘리포니아 대학교와 칭화 대학교의 학자들이 컴퓨터 및 통신 보안에 관한 ACM 컨퍼런스 CCS 2020에서 공개한 취약점입니다. 이 취약점은 다음에 할당되었습니다. CVE-2020-25705. 7.0 버전부터 배포에 영향을 미칩니다(즉, Kernel에 아직 ICMP 응답 스로틀링 기능이 포함되어 있지 않으므로 RHEL6은 영향을 받지 않습니다). KernelCare 패치는 곧 릴리스될 예정입니다. 이 새로운 학술적 발견은 악의적인 공격자가 DNS 서버의 캐시를 오염시켜 사용자 트래픽을 원치 않거나 위험한 콘텐츠를 호스팅하는 사이트나 서비스로 리디렉션할 수 있게 해줍니다. 


콘텐츠:

  1. 슬픈 DNS의 작동 방식
  2. 새드 DNS 완화
  3. 근본 원인
  4. KernelCare 패치 릴리스 일정

 

슬픈 DNS의 작동 방식

슬픈 DNS의 작동 방식

DNS 캐시 중독은 2008년 보안 연구원에 의해 처음 발견되었습니다. 댄 카민스키. 대부분의 관리자가 알고 있듯이 DNS(도메인 이름 시스템)는 인터넷의 기본 구성 요소입니다. 사용자가 브라우저에 도메인을 입력하면 브라우저는 DNS 서버에서 쿼리를 수행하여 도메인 이름에 해당하는 IP 주소를 확인합니다. 

 

대부분의 DNS 쿼리는 인증이나 핸드셰이크가 필요 없는 상태 비저장 프로토콜인 UDP를 사용합니다. UDP를 사용하는 DNS 쿼리에는 소스 주소(사용자 컴퓨터)와 포트 쌍(소스 및 대상)만 필요합니다. 인증이 필요하지 않으므로 누구나 등록된 도메인과 연결된 IP 주소를 DNS 서버에 쿼리할 수 있습니다.

 

UDP는 OSI 모델의 전송 계층에서 실행되지만 설계자는 일종의 보안을 추가하기 위해 DNS 쿼리에 엔트로피를 설계했습니다. 쿼리에는 쿼리와 응답에서 동일해야 하는 무작위 트랜잭션 ID가 포함됩니다. 이 값의 무작위화는 엔트로피로 인해 요청 위조 가능성을 낮춥니다. 그러나 쿼리 ID는 16비트에 불과하므로 공격자가 무차별 대입을 통해 일치하는 항목을 찾으려면 10만 개 미만의 "추측"이 필요합니다. 오늘날의 컴퓨팅 성능으로는 10만 개의 가능성만 있는 무차별 암호 대입 공격도 몇 초 안에 실행할 수 있습니다.

 

인터넷의 규모가 매우 크기 때문에 DNS 확인자는 권한 있는 서버에 대한 쿼리를 중앙 집중화하고 클라이언트 요청에 도메인 IP를 배포하는 데 사용됩니다. 재귀 DNS 서버가 권한 있는 서버에 쿼리할 때 일반적으로 포트 53을 사용하여 메시지를 보내고 받습니다. 이 포트는 이미 알려져 있으므로 공격자는 16비트 쿼리 ID만 알면 됩니다. 캐시 포이즈닝 공격에서 공격자는 재귀 서버에 가능한 모든 약 65,000개의 ID가 포함된 응답을 쏟아붓습니다. DNS 재귀 서버가 권한 있는 서버 응답보다 먼저 공격자의 응답을 받으면 대상 도메인의 DNS 캐시가 포이즈닝됩니다. 인증이나 핸드셰이크가 발생하지 않기 때문에 확인자는 의심 없이 공격자의 응답을 수락하고 악성 IP가 표적 도메인에 대해 확인합니다. 

 

공격자가 DNS 재귀 서버 캐시를 포이즈닝하면 해당 도메인을 쿼리하는 모든 사용자는 해당 도메인에 대해 공격자가 할당하는 IP 주소를 얻게 됩니다. 즉, 사용자는 공격자가 제어하는 서버로 연결됩니다. 사용자에게 표시되는 콘텐츠는 일반적으로 합법적인 도메인과 동일한 모양과 느낌을 가진 피싱 사이트입니다. 공격자는 이 공격을 사용하여 사용자가 속아서 콘텐츠를 업로드할 경우 자격 증명, 금융 데이터 및 잠재적으로 민감한 파일을 훔칠 수 있습니다.

 

이 문제를 해결하기 위해 DNS 확인자는 무작위 포트를 사용합니다. 즉, 공격자는 쿼리 ID뿐만 아니라 포트도 추측해야 하므로 공격이 불가능합니다. UDP 대신 TCP를 사용하고 프로세스에 DNSSec을 추가하는 등 다른 보안이 DNS 아키텍처에 포함되었습니다. DNSSec은 쿼리 메시지에 서명이 필요하지만 아직 초기 단계의 프로토콜이며 보편적으로 채택되지는 않았습니다.

 

새드 DNS 공격은 ICMP( 인터넷 제어 메시지 프로토콜 ) 오류 메시지를 사용하여 포트 무작위화를 극복합니다. 포트가 닫히면 ICMP 요청은 "포트에 연결할 수 없음" 오류 메시지를 반환합니다. 공격자는 이 프로토콜과 닫힌 포트 스캔을 사용하여 어떤 포트가 DNS 응답에 열려 있는지 유추할 수 있습니다. 제한된 포트와 쿼리 ID로 '추측'을 줄임으로써 공격자는 이제 약 10만 개의 응답을 무차별 대입하기만 하면 됩니다. 일부 확인자는 개방형 소켓이 아닌 연결된 UDP 소켓을 사용하기 때문에 이 공격이 항상 가능한 것은 아닙니다. 연결된 소켓을 사용하면 두 DNS 서버가 운영 체제를 사용하는 피어로 "연결"됩니다.

 

일부 서버는 속도 제한을 사용하여 반사 공격으로 인한 ICMP 포트의 플러딩을 차단합니다. 이 방어 기능은 DNS 서버의 DoS(서비스 거부)에 대해 작동하지만, 새드 DNS 공격에 활용될 수 있습니다. ICMP 응답이 제한되면 서버는 전송률 제한이 충족될 때 오류 메시지와 함께 응답하지 않습니다. 공격자는 대상 서버에 전송률 제한에 도달할 수 있을 만큼의 ICMP 메시지를 대량으로 전송한 다음 어떤 포트가 열려 있는지 확인하여 무차별 암호 대입 공격에서 추측할 수 있는 수를 없앱니다.

 

공격자가 새드 DNS 공격을 수행하려면 다음이 필요합니다:

 

  • 취약한 DNS 서버에 대해 DNS 쿼리를 수행할 수 있는 시스템
  • 해당 DNS 서버로부터 ICMP 응답을 수신하는 기능

 

 

새드 DNS 완화

새드 DNS 완화

새드 DNS 공격을 성공적으로 익스플로잇하려면 몇 가지 기존 조건이 필요하므로 완화 조치를 사용하면 공격이 실행 불가능하게 만드는 추가 조건이 추가됩니다. 다음 전략 중 하나를 DNS 프로세스에 추가하면 공격자가 새드 DNS 공격을 실행할 수 없게 됩니다:

 

  • DNSSec을 구성할 수 있지만 이 프로토콜의 광범위한 채택은 더디게 이루어지고 있습니다.
  • ICMP 회신을 허용하지 않습니다. 이 트래픽은 모니터링과 같은 다른 용도로 합법적으로 사용되므로 잠재적인 부작용이 있습니다.
  • 문제의 근본 원인을 해결하기 위해 Kernel 패치를 적용하여 사용된 포트의 식별을 방지합니다. KernelCare는 현재 CloudLinux7용 패치를 작업 중입니다. 지원되는 다른 배포판에 대한 패치는 곧 출시될 예정입니다.

 

 

근본 원인

근본 원인

새드 DNS 공격은 DNS 서버의 Kernel에 정의된 예측 가능한 ICMP 응답률 제한으로 인해 가능합니다. 초당 최대 ICMP 응답 수가 고정되어 있기 때문에 공격자는 DNS 통신에서 어떤 포트가 사용되고 있는지 유추하여 특수하게 조작된 패킷을 해당 포트로 보낼 수 있습니다. 다른 운영 체제도 이 문제의 영향을 받으며, 제한은 다르지만 고정되어 있습니다.

 

이론적으로 Sad DNS는 비효율적인 ICMP 포트 무작위화를 악용하는 데 사용되는 여러 취약점 중 하나에 불과할 수 있습니다. 다른 서비스도 유사한 공격에 취약할 수 있지만, 아직까지 공개된 취약점은 없습니다. Kernel을 패치하면 알려지지 않은 취약성에 대비할 수 있습니다.

A 패치 를 해결하는 패치가 Linux Kernel용으로 제출되었으며, Linux 공급업체는 다음과 같은 배포판에 대해 적절한 수정 사항을 릴리스하고 있습니다. Redhat, Debian, Suse, Ubuntu. 공급업체에서 제공하는 소프트웨어를 사용한 패치의 단점은 프로세스를 완료하기 위해 재부팅이 필요하다는 것입니다. KernelCare를 사용하면 관리자는 재부팅 없이 서버에 실시간 패치를 적용하고 Sad DNS 및 ICMP 프로토콜 및 속도 제한 익스플로잇을 대상으로 하는 향후 취약점을 해결할 수 있습니다.

 

 

KernelCare 패치 릴리스 일정

11월 23일에 출시되었습니다:

  • CloudLinux 6 하이브리드,
  • CloudLinux 7, 
  • Oracle 엔터프라이즈 Linux 7,
  • RHEL 7,
  • CentOS 7,
  • CentOS 7 Plus

패치는 재부팅하지 않아도 4시간 이내에 자동으로 적용됩니다. 수동으로 업데이트하려면 실행하세요:

/usr/bin/kcarectl --update

48주차에 출시될 예정입니다:

  • Ubuntu 패치
  • 데비안 패치

49주차에 출시될 예정입니다:

  • Amazon Linux

업데이트를 계속 지켜봐 주세요.

Kernel 재부팅, 시스템 다운타임 또는 예정된 유지 보수 기간 없이 취약성 패치를 자동화하고 싶으신가요?

TuxCare로 라이브 패치에 대해 알아보기

TuxCare 게스트 작가 되기

시작하기

메일

가입

4,500

Linux & 오픈 소스
전문가!


뉴스레터 구독하기