# 취약점 정보 :
- CVE Number : CVE-2015-5477
- 영향을 받는 버전 :
: 9.1.0 -> 9.8.x
: 9.9.0-> 9.9.7-P1
: 9.10.0->9.10.2-P2
- 요약 :
: DNS 서버는 DNS 데이터베이스 업데이트를 인증하기 위해 TSIG(Transaction Signature) 라는 프로토콜을 사용함. 이 때, 사용하는 키를 TKEY 메시지를 통해서 공유.
: TKEY 메시지를 처리하는 과정에 적절한 레코드 데이터를 찾기 위해 아래 2 섹션에서 뒤짐(Lookup).
Answer Record Section
Additional Records Section
: 이때, 아래와 같이 초기에 NULL로 세팅된 name 변수가 첫 번째 Lookup 함수(additional records) 과정을 거치면서 non-null 값으로 세팅. 이 값이 다시 두 번째 lookup 함수(answer records) 안으로 넘겨지면서 Null 검사코드 에서 REQUIRE assertion fail 이 발생하고 Bind 서버를 종료시킴(Crash).
[그림] lib/dns/tkey.c 코드 일부
[그림] lib/dns/message.c 코드 일부
# 취약점 테스트 :
- 공개된 POC
[01] http://pastebin.com/raw.php?i=j68PwWZh
[02] https://github.com/robertdavidgraham/cve-2015-5477
[그림] 첫 번째 PoC 코드
- 대상 시스템
우분투 / Bind 9.8.0-P1 (취약한 버전)
http://tw.archive.ubuntu.com/Unix/isc/bind9/9.8.0-P1/
- 공격코드 실행
[그림] 두 번째 PoC 실행화면
- Bind 서버 종료 (Bind 서버 DoS)
[그림] tail –f /var/log/syslog 에러 메시지
- 트래픽 정보
: Queries(Type = TKEY(00 F9) + Class = IN (0x0001)) + Answers + Additional Records
[그림] 첫 번째 PoC 공격패킷
: Queries(Type = TKEY ( 00 F9 ) + Class :=ANY( 00 FF )) + Additional Records
[그림] 두 번째 PoC 공격패킷
- 패치 적용 후,
우분투 / Bind 9.8.1-P1 (패치된 버전)
>> apt-get install bind9
>> tail –f /var/log/syslog ( 깨끗… ^^* )
– 끝 –