티스토리 뷰

# 취약점 정보 :


  • 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 ( 깨끗… ^^* )


   

 

- 끝 -

댓글
  • 프로필사진 Kitsune 안녕하세요 전 17세 고등학교 1학년 학생 입니다. 수학도 못하고 컴맹이지만 최근에 프로그래머들, 그 중에서도 해커들에 찾아보다가 그 직종의 매력에 '뿅 갔습니다.' 의욕은 넘치지만 모르는 것이 너무 많아 몇가지 물어보고 싶어요! 아, 그리고 블로그는 '씽커'에서 기술 자문 해주신 조주봉 팀장님(?)
    에 대해 찾아보다가 알게 되었습니다.
    (문체가 거슬리거나 거만하다면 죄송합니다ㅠㅠㅠ)

    Q1. 고1로써 능력있는 해커가 되려면 너무 늦은 걸까요?

    Q2. 저는 고양국제고등학교에 다니는데, 한마디로 이과 IT업계와는 인연이 거의 없는 인문계 특목고 입니다. 여기서 제가 화이트햇해커가 되기 위해서 할 수 있는 노력은 뭐가 있을까요?

    Q3. 좋은 프로그래머(해커)가 되려면 순수 수학(학교에서 배우는 거)을 얼마나 잘해야 하나요? 해커가 실무 중심의 직업이라곤 하지만 코드를 쓰려면 '수학에 대한 높은 이해가 필요하다는데...'
    2015.08.06 20:40 신고
댓글쓰기 폼