Systems running Microsoft Windows 98, NT, Windows 2000, or Windows XP DNS resolvers accept DNS replies from any IP address, not just the ones being sent DNS requests. This may lead to domain information spoofing or DNS cache poisoning.
Microsoft Windows systems use a caching domain name resolver service running on the computer to handle domain name service (DNS) requests and responses for applications. For example, when a user browses to www.microsoft.com in Internet Explorer, a DNS request is sent to some predetermined nameserver for an answer to the question, "What IP address should I connect to when looking for the machine that goes by the name 'www.microsoft.com'?" The answer returned (typically from the nameserver) is then stored in a cache which can then be reused when future requests for the same name information are made by other applications.
Without QueryIpMatching being set, an attacker "only" needs the outstanding query id. As noted in CA-2001-09, this may not be a difficult precondition to fulfill, depending on the implementation of the resolvers in question.
In the presence of an attacker capable of sniffing local network traffic (garnering queryids, spoofing valid DNS servers), other risks become apparent. Obviously matching IP addresses in this scenario adds little to no security benefit since the target nameserver IP address can be easily known and spoofed in the absence of any cryptographic protection (e.g., IPSEC, DNSSEC).
Attackers able to successfully predict the query id of DNS requests initiated by client systems would be able to corrupt DNS responses and potentially misdirect network traffic and mislead victims. This could result in identity masquerading, loss of confidential information, denial of service, and other impacts typically associated with DNS cache corruption (cache pollution) or domain name information spoofing.
The previously-published solution utilizing the registry key IpQueryMatching does not work for all versions of Windows. Microsoft is currently investigating this issue and expects to provide more complete solution information in the near future.
Use cryptographic protection of either the site DNS or network traffic (i.e., use DNSSEC or IPSEC). Note use of DNSSEC may not be feasible by sites with older resolvers unable to validate DNSSEC-secured domain name information.
The CERT/CC thanks Hank Nussbacher
This document was written by Jeffrey S. Havrilla.
|Date First Published:||2002-07-22|
|Date Last Updated:||2002-08-30 21:19 UTC|