0xNews - 17년만에 발견된 Windows DNS 서버에 영향을 주는 RCE 취약점 발견

0xNews - 17년만에 발견된 Windows DNS 서버에 영향을 주는 RCE 취약점 발견

Check Point 보안연구팀 발표

CVE-2020-1350 지정
SIGRed 라고 명명
이번 취약점을 공격자가 악용한다면
대상 서버에 대한 도메인 관리자에 대한 권한 획득
해당 조직 내 IT 인프라에 대한 완전 제어
- Windows AD 는 Windows DNS 서버와 함께 연동되서 사용되기 때문에 가능

조작된 악성 DNS 쿼리를 Windows DNS 서버에 전송
임의의 코드를 실행하여 SIGRed 취약점 악용

공격자는 사용자의 전자메일이나 네트워크 트래픽을 중간에 가로채서 조작하거나
서비스를 사용할 수 없게 방해하거나
네트워크 트래픽을 통한 사용자 정보 수집 가능

이번 취약점의 가장 큰 문제점은 웜 Worm 
공격자는 특별한 상호 작용없이 취약한 컴퓨터에서 다른 컴퓨터로 확산될 수 있는 공격을 수행할 수 있음을 확인

취약점 형태가 웜이기 때문에 한번의 악용으로 인해
공격이 취약한 시스템에서 공격이 수행되면 연쇄적으로, 10여분 정도면 퍼질 수 있음

이번 취약점을 보고 받은 MS 에서는
7월 정기 업데이트 때 일괄 패치 적용
이번 취약점에 대한 패치는 추가로 우선 공개

윈도우에서 발표한 이번 취약점 정보 사이트 링크

이번 취약점을 발표한 연구팀에서는
인증되지 않은 공격자가 Windows DNS 서버를 공격하기 위해서는
DNS 서버에 들어오는 쿼리 query 나 응답 response 에 대해 구문 분석을 수행

분석 결과
전달된 쿼리가 DNS 서버가 지정된 도메인 이름의 IP 주소를 확인할 수 없어서
신뢰할 수 있는 DNS 네임 서버(NS)로 쿼리가 전달될 때 발생

데모 동영상

테스트를 위해 연구팀에서는 악성 네임 서버를 ns1.31313131.club 로 가리키도록 도메인 deadbeef.fun NS 리소크 레코드를 구성
도메인의 대상 DNS 서버를 쿼리하여 후자는 도메인이나 해당 하위 도메인과 관련된 모든 후속 쿼리에 대한 네임서버의 응답을 구분 분석 수행

이를 통해 공격자는 전달된 쿼리에 대한 들어오는 응답을 구문 분석하는 함수에서 정수 오버플로 취약점 integer overflow 을 트리거
64KB 보다 큰 SIG 리소스 레코드가 포함된 DNS 응답을 보내고
적게 할당된 버퍼에 대해 64KB의 제어된 힙 기반 버퍼 오버 플로우 heap-based buffer overflow 를 다르게 포함시킴 include

SIG 리소스 레코드 관련 정보 사이트 링크

이렇게 해서 DNS 서버의 자원 레코드 RR_AllocateEX 에 대한 메모리 할당을 담당하는 함수를 대상으로 65535 byte 보다 큰 결과를 생성
예상보다 훨씬 작은 할당량을 야기하는 정수 오버 플로우를 발생

그러나 단일 DNS 메시지는 
UDP 에서는 512 byte(서버가 확장 메커니즘을 지원하는 경우 4096byte)
TCP 에서는 65535 byte 로 제한이 되어있기 때문에
긴 시그니처만 있는 SIG 응답으로는 취약점을 트리거 하기에 충분하지 않다는 점을 발견

이를 달성하기 위해 공격은 DNS 응답에서 DNS 이름 압축 name compression 을 효과적으로 활용
위에서 언급한 기술을 사용하여 버퍼 오버플로를 생성하여 할당 크기를 크게 증가

이번 취약점 분석과 함께 SIGRed 는 일부 브라우저를 통해 원격으로 트리거 될 수도 있음을 확인
MS Internet Explorer 과 MS Edge 브라우저 등에서 공격자는 Windows DNS 서버의 연결 재사용 및 쿼리 파이프 라이닝 기능에 대한 지원을 남용
DNS 쿼리를 밀수 muggle 가능

또한, 제어 대상 웹 사이트를 방문할 때 대상 DNS 서버에 대한 HTTP 요청 페이로드 내부에 대한 버그는 DNS 리소스 레코드의 메타 데이터를 손상
메모리 주소를 유출하여 어디곳에서나 쓰기 가능 write-what-where 공격 가능

어디곳에서나 쓰기 가능 write-what-where 관련 CWE 사이트 링크

악의적인 사용자가 실행 흐름을 가로채어 의도하지 않은 명령을 실행하도록 버그를 악용 가능

연구팀에서는 DNS 서버와 DNS 클라이언트에서 사용 중인 파일 dnsapi.dll 에서 동일한 버그에 취약하지 않은 것을 확인
서버와 클라이언트에 대한 완전히 다른 두 개의 코드 기반 관리에 대한 버그 패치 동기화가 되지 않은 점은 추후 문제가 될 수 있기에 연구 진행 중

이번 문제 대응을 위해 Windows DNS 서버 패치를 진행하는 것을 권고
임시 해결 방법으로 TCP 를 통한 DNS 메시지 최대 길이를 0xFF00 설정
버퍼 오버플로 가능성 수동 제거

WIndows DNS 서버에서 관리자 모드에서 명령 프롬프트에서 입력
reg add "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ DNS \ Parameters"/ v "TcpReceivePacketSize"/ t REG_DWORD / d 0xFF00 / f

net stop DNS && net start DNS

댓글

이 블로그의 인기 게시물

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

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

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