-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 ============================================================================= FreeBSD-SA-10:01.bind Security Advisory The FreeBSD Project Topic: BIND named(8) cache poisoning with DNSSEC validation Category: contrib Module: bind Announced: 2010-01-06 Credits: Michael Sinatra Affects: All supported versions of FreeBSD. Corrected: 2009-12-11 01:23:58 UTC (RELENG_8, 8.0-STABLE) 2010-01-06 21:45:30 UTC (RELENG_8_0, 8.0-RELEASE-p2) 2009-12-11 02:23:04 UTC (RELENG_7, 7.2-STABLE) 2010-01-06 21:45:30 UTC (RELENG_7_2, 7.2-RELEASE-p6) 2010-01-06 21:45:30 UTC (RELENG_7_1, 7.1-RELEASE-p10) 2010-01-06 21:45:30 UTC (RELENG_6, 6.4-STABLE) 2010-01-06 21:45:30 UTC (RELENG_6_4, 6.4-RELEASE-p9) 2010-01-06 21:45:30 UTC (RELENG_6_3, 6.3-RELEASE-p15) CVE Name: CVE-2009-4022 For general information regarding FreeBSD Security Advisories, including descriptions of the fields above, security branches, and the following sections, please visit . I. Background BIND 9 is an implementation of the Domain Name System (DNS) protocols. The named(8) daemon is an Internet Domain Name Server. DNS Security Extensions (DNSSEC) provides data integrity, origin authentication and authenticated denial of existence to resolvers. II. Problem Description If a client requests DNSSEC records with the Checking Disabled (CD) flag set, BIND may cache the unvalidated responses. These responses may later be returned to another client that has not set the CD flag. III. Impact If a client can send such queries to a server, it can exploit this problem to mount a cache poisoning attack, seeding the cache with unvalidated information. IV. Workaround Disabling DNSSEC validation will prevent BIND from caching unvalidated records, but also prevent DNSSEC authentication of records. Systems not using DNSSEC validation are not affected. V. Solution Perform one of the following: 1) Upgrade your vulnerable system to 6-STABLE, 7-STABLE or 8-STABLE, or to the RELENG_8_0, RELENG_7_2, RELENG_7_1, RELENG_6_4, or RELENG_6_3 security branch dated after the correction date. 2) To patch your present system: The following patches have been verified to apply to FreeBSD 6.3, 6.4, 7.1, 7.2, and 8.0 systems. a) Download the relevant patch from the location below, and verify the detached PGP signature using your PGP utility. [FreeBSD 6.3] # fetch http://security.FreeBSD.org/patches/SA-10:01/bind9-63.patch # fetch http://security.FreeBSD.org/patches/SA-10:01/bind9-63.patch.asc [FreeBSD 6.4] # fetch http://security.FreeBSD.org/patches/SA-10:01/bind9-64.patch # fetch http://security.FreeBSD.org/patches/SA-10:01/bind9-64.patch.asc [FreeBSD 7.1] # fetch http://security.FreeBSD.org/patches/SA-10:01/bind9-71.patch # fetch http://security.FreeBSD.org/patches/SA-10:01/bind9-71.patch.asc [FreeBSD 7.2] # fetch http://security.FreeBSD.org/patches/SA-10:01/bind9-72.patch # fetch http://security.FreeBSD.org/patches/SA-10:01/bind9-72.patch.asc [FreeBSD 8.0] # fetch http://security.FreeBSD.org/patches/SA-10:01/bind9-80.patch # fetch http://security.FreeBSD.org/patches/SA-10:01/bind9-80.patch.asc b) Execute the following commands as root: # cd /usr/src # patch < /path/to/patch # cd /usr/src/lib/bind # make obj && make depend && make && make install # cd /usr/src/usr.sbin/named # make obj && make depend && make && make install # /etc/rc.d/named restart NOTE WELL: Users running FreeBSD 6 and using DNSSEC are advised to get a more recent BIND version with more complete DNSSEC support. This can be done either by upgrading to FreeBSD 7.x or later, or installing BIND for the FreeBSD Ports Collection. VI. Correction details The following list contains the revision numbers of each file that was corrected in FreeBSD. CVS: Branch Revision Path - ------------------------------------------------------------------------- RELENG_6 src/contrib/bind9/lib/dns/rbtdb.c 1.1.1.1.4.4 src/contrib/bind9/lib/dns/include/dns/types.h 1.1.1.1.4.2 src/contrib/bind9/lib/dns/resolver.c 1.1.1.2.2.11 src/contrib/bind9/lib/dns/masterdump.c 1.1.1.1.4.3 src/contrib/bind9/lib/dns/validator.c 1.1.1.2.2.6 src/contrib/bind9/bin/named/query.c 1.1.1.1.4.7 RELENG_6_4 src/UPDATING 1.416.2.40.2.13 src/sys/conf/newvers.sh 1.69.2.18.2.15 src/contrib/bind9/lib/dns/rbtdb.c 1.1.1.1.4.3.2.1 src/contrib/bind9/lib/dns/include/dns/types.h 1.1.1.1.4.1.4.1 src/contrib/bind9/lib/dns/resolver.c 1.1.1.2.2.9.2.1 src/contrib/bind9/lib/dns/masterdump.c 1.1.1.1.4.1.4.1 src/contrib/bind9/lib/dns/validator.c 1.1.1.2.2.4.2.1 src/contrib/bind9/bin/named/query.c 1.1.1.1.4.5.2.1 RELENG_6_3 src/UPDATING 1.416.2.37.2.20 src/sys/conf/newvers.sh 1.69.2.15.2.19 src/contrib/bind9/lib/dns/rbtdb.c 1.1.1.1.4.2.2.1 src/contrib/bind9/lib/dns/include/dns/types.h 1.1.1.1.4.1.2.1 src/contrib/bind9/lib/dns/resolver.c 1.1.1.2.2.6.2.2 src/contrib/bind9/lib/dns/masterdump.c 1.1.1.1.4.1.2.1 src/contrib/bind9/lib/dns/validator.c 1.1.1.2.2.3.2.1 src/contrib/bind9/bin/named/query.c 1.1.1.1.4.4.2.1 RELENG_7 src/contrib/bind9/lib/dns/rbtdb.c 1.1.1.4.2.4 src/contrib/bind9/lib/dns/include/dns/types.h 1.1.1.3.2.2 src/contrib/bind9/lib/dns/resolver.c 1.1.1.9.2.6 src/contrib/bind9/lib/dns/masterdump.c 1.1.1.3.2.3 src/contrib/bind9/lib/dns/validator.c 1.1.1.6.2.5 src/contrib/bind9/bin/named/query.c 1.1.1.6.2.4 RELENG_7_2 src/UPDATING 1.507.2.23.2.9 src/sys/conf/newvers.sh 1.72.2.11.2.10 src/contrib/bind9/lib/dns/rbtdb.c 1.1.1.4.2.2.2.1 src/contrib/bind9/lib/dns/include/dns/types.h 1.1.1.3.8.1 src/contrib/bind9/lib/dns/resolver.c 1.1.1.9.2.4.2.1 src/contrib/bind9/lib/dns/masterdump.c 1.1.1.3.2.1.2.1 src/contrib/bind9/lib/dns/validator.c 1.1.1.6.2.3.2.1 src/contrib/bind9/bin/named/query.c 1.1.1.6.2.2.2.1 RELENG_7_1 src/UPDATING 1.507.2.13.2.13 src/sys/conf/newvers.sh 1.72.2.9.2.14 src/contrib/bind9/lib/dns/rbtdb.c 1.1.1.4.2.1.4.1 src/contrib/bind9/lib/dns/include/dns/types.h 1.1.1.3.6.1 src/contrib/bind9/lib/dns/resolver.c 1.1.1.9.2.3.2.1 src/contrib/bind9/lib/dns/masterdump.c 1.1.1.3.6.1 src/contrib/bind9/lib/dns/validator.c 1.1.1.6.2.1.4.1 src/contrib/bind9/bin/named/query.c 1.1.1.6.2.1.4.1 RELENG_8 src/contrib/bind9/lib/dns/rbtdb.c 1.3.2.2 src/contrib/bind9/lib/dns/include/dns/types.h 1.2.2.2 src/contrib/bind9/lib/dns/resolver.c 1.6.2.2 src/contrib/bind9/lib/dns/masterdump.c 1.3.2.2 src/contrib/bind9/lib/dns/validator.c 1.4.2.2 src/contrib/bind9/bin/named/query.c 1.3.2.2 RELENG_8_0 src/UPDATING 1.632.2.7.2.5 src/sys/conf/newvers.sh 1.83.2.6.2.5 src/contrib/bind9/lib/dns/rbtdb.c 1.3.4.1 src/contrib/bind9/lib/dns/include/dns/types.h 1.2.4.1 src/contrib/bind9/lib/dns/resolver.c 1.6.4.1 src/contrib/bind9/lib/dns/masterdump.c 1.3.4.1 src/contrib/bind9/lib/dns/validator.c 1.4.4.1 src/contrib/bind9/bin/named/query.c 1.3.4.1 - ------------------------------------------------------------------------- Subversion: Branch/path Revision - ------------------------------------------------------------------------- stable/6/ r200394 releng/6.4/ r201679 releng/6.3/ r201679 stable/7/ r200393 releng/7.2/ r201679 releng/7.1/ r201679 stable/8/ r200383 releng/8.0/ r201679 head/ r199958 - ------------------------------------------------------------------------- VII. References https://www.isc.org/node/504 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-4022 The latest revision of this advisory is available at http://security.FreeBSD.org/advisories/FreeBSD-SA-10:01.bind.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iD8DBQFLRQ9dFdaIBMps37IRAip+AJ0S55AYqLsrwrLLMo8Qi6fGxoH7EQCfU/6K RUb5Kn+O1qc/FUzEQ12AmrA= =Pfoo -----END PGP SIGNATURE-----