Wins blog

글로벌 정보보안 파트너! Global Security  No.1 윈스는 국가대표 정보보안 기업에서 글로벌 강소기업으로 도약합니다.

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보BIND TKEY Queries Input validation Error DoS 취약점(C
작성일 2015-08-10 조회 2467

1. 개요

ISC BIND 9은 대표적인 DNS 서버 구축용 프로그램입니다. 금번에 발표된 취약점은 DNS 서버가 DNS 데이터베이스 업데이트 인증을 위해 사용되는 TKEY 메시지를 처리하는 과정에서 발생되는 취약점(CVE-2015-5477)입니다. 이 취약점을 활용하면 DNS 서버에 에러를 유발하여 대상 서버를 서비스 거부 상태로 만들 수 있습니다.

 

2. 취약점 설명

일반적으로 DNS는 아래의 구조로 정의되어 있다.

그림 1 DNS 구조

각각의 RR(Resource Record)는 DNS 트래픽 목적에 따라 DNS Header에 명시된 영역에 의해 표시된다.

해당 취약점은 주로 서버로 DNS를 요청하는 과정에서 발생된다.(Header에 명시된 Query(QR=0))

그림 2 DNS Header 구조

 

해당 취약점에서 문제가 되는 TKEY Type은 DNS 데이터베이스 업데이트 인증시 사용되는 Key값과 관련한 메시지이다.  

그림 3 DNS RR 구조

그림 4 DNS RR 구조(TKEY RR)

 

TKEY 메시지는 해당 메시지를 처리하는 과정에서 적절한 레코드를 찾기 위해서 Answer Record Section 과 Additional Record Section 두 개의 Section을 검색합니다. 해당 과정에서 코드를 확인하면 초기에 NULL 값으로 세팅된 name변수가 첫 번째 Lookup 함수(additional Record)를 거치면서 Non-NULL 값으로 세팅됩니다.

그림 5 lib/dns/tkey.c additional Record Lookup 부분

이후 이 값은 두 번째 Lookup 함수(answer Record)로 넘겨지면서 NULL 검사코드를 통해 REQUIRE assertion fail를 발생시키고 BIND DNS 서버를 종료시킵니다.

즉, 이는 Question Section에서 TKEY Type으로 설정되고, Name 필드에 어떤 값이 존재하는 상황에서 Additional Section에 Question Section과 같은 Name 값을 보유하면, dns_tkey_processquery()에서 dns_message_findname()로 넘어가는 과정에서 dns_message_findname()에 의해서 에러가 발생되고 서비스가 종료된다.

그림 6 lib/dns/message.c NULL 검사코드

 

취약버전

ISC BIND 9.9.x prior to 9.9.7-P2

ISC BIND 9.10.x prior to 9.10.2-P3

ISC BIND 9.8.x and prior

 

3. 취약점 테스트 방법

3-1. 취약점 테스트(시스템 운영자)

테스트 버전 : ISC BIND9.7.2-P2

테스트 환경 : Ubuntu 12.04

해당 취약점을 이용하여 악의적인 DNS 패킷을 발생시키는 공격 코드를 대상 DNS에서 전송합니다.

tkill [대상서버 IP]

그림 7 취약점 테스트(취약버전)

취약한 버전의 대상서버의 반응결과를 확인한 결과 DNS 데몬의 crash로 인한 종료를 확인합니다.

그림 8 취약점으로 발생된 DNS 서비스 거부 로그

동일한 방법으로 패치가 적용한 DNS에 공격 트래픽을 발생시킨 경우 로그상에서 변화가 없고, 서비스상에 영향이 없음을 확인했습니다.

그림 9 취약점 테스트(패치버전)

그림 10 패치 버전에 대한 로그

추가로 알려진 공격 이외에 DNS Answer Record Section 과 Additional Record Section 의 영향을 테스트를 했습니다.

 

- Answer Record Section 만 설정한 결과

Crash 미발생

그림 11 Answer Record Section 적용 트래픽

- Additional Record Section 만 설정한 결과

Crash 발생

그림 12 Additional Record Section 적용 트래픽

- Answer Record Section, Additional Record Section 모두 설정한 결과

Crash 발생

그림 13 Answer Record Section, Additional Record Section 적용 트래픽

 

4. 대응 방안

5-1) 해당 취약점에 영향 받는 버전 사용자 (시스템 운영자)

해당 취약 버전에 대한 패치를 적용합니다https://kb.isc.org/article/AA-01272 )

패치적용에 제한 사항이 존재할 경우 를 이용하여에 대해 차단합니다

# iptables -A INPUT -p udp --dport 53 -m string --algo bm --hex-string '|00F900FF|' –j LOG

# iptables -A INPUT -p udp --dport 53 -m string --algo bm --hex-string '|00F900FF|' –j DROP.

5-2) Sniper 제품군은 해당 취약점과 관련하여 아래의 두 가지의 정책으로 대응합니다.

패턴블럭 3172 BIND DNS TKEY Query Input Error DoS

패턴블럭 3173 BIND DNS TKEY Query Input Error DoS.A

 

5. 참고

Published Exploit

https://packetstormsecurity.com/files/132926/BIND-TKEY-Query-Denial-Of-Service.html

https://github.com/robertdavidgraham/cve-2015-5477

http://pastebin.com/raw.php?i=j68PwWZh

Vendor's Advisory

https://kb.isc.org/article/AA-01272

첨부파일 첨부파일이 없습니다.
태그