draft-ietf-dnsext-forgery-resilience-10.txt | rfc5452.txt | |||
---|---|---|---|---|
DNS Extensions (DNSEXT) A. Hubert | Network Working Group A. Hubert | |||
Internet-Draft Netherlabs Computer Consulting BV. | Request for Comments: 5452 Netherlabs Computer Consulting BV. | |||
Updates: 2181 (if approved) R. van Mook | Updates: 2181 R. van Mook | |||
Intended status: Standards Track Equinix | Category: Standards Track Equinix | |||
Expires: June 18, 2009 December 15, 2008 | January 2009 | |||
Measures for making DNS more resilient against forged answers | ||||
draft-ietf-dnsext-forgery-resilience-10.txt | ||||
Status of this Memo | ||||
This Internet-Draft is submitted to IETF in full conformance with the | ||||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF), its areas, and its working groups. Note that | ||||
other groups may also distribute working documents as Internet- | ||||
Drafts. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | ||||
and may be updated, replaced, or obsoleted by other documents at any | ||||
time. It is inappropriate to use Internet-Drafts as reference | ||||
material or to cite them other than as "work in progress." | ||||
The list of current Internet-Drafts can be accessed at | Measures for Making DNS More Resilient against Forged Answers | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | ||||
The list of Internet-Draft Shadow Directories can be accessed at | Status of This Memo | |||
http://www.ietf.org/shadow.html. | ||||
This Internet-Draft will expire on June 18, 2009. | This document specifies an Internet standards track protocol for the | |||
Internet community, and requests discussion and suggestions for | ||||
improvements. Please refer to the current edition of the "Internet | ||||
Official Protocol Standards" (STD 1) for the standardization state | ||||
and status of this protocol. Distribution of this memo is unlimited. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2008 IETF Trust and the persons identified as the | Copyright (c) 2009 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents (http://trustee.ietf.org/ | |||
(http://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
publication of this document. Please review these documents | Please review these documents carefully, as they describe your rights | |||
carefully, as they describe your rights and restrictions with respect | and restrictions with respect to this document. | |||
to this document. | ||||
Abstract | Abstract | |||
The current Internet climate poses serious threats to the Domain Name | The current Internet climate poses serious threats to the Domain Name | |||
System. In the interim period before the DNS protocol can be secured | System. In the interim period before the DNS protocol can be secured | |||
more fully, measures can already be taken to harden the DNS to make | more fully, measures can already be taken to harden the DNS to make | |||
'spoofing' a recursing nameserver many orders of magnitude harder. | 'spoofing' a recursing nameserver many orders of magnitude harder. | |||
Even a cryptographically secured DNS benefits from having the ability | Even a cryptographically secured DNS benefits from having the ability | |||
to discard bogus responses quickly, as this potentially saves large | to discard bogus responses quickly, as this potentially saves large | |||
amounts of computation. | amounts of computation. | |||
By describing certain behaviour that has previously not been | By describing certain behavior that has previously not been | |||
standardised, this document sets out how to make the DNS more | standardized, this document sets out how to make the DNS more | |||
resilient against accepting incorrect responses. This document | resilient against accepting incorrect responses. This document | |||
updates RFC 2181. | updates RFC 2181. | |||
Table of Contents | Table of Contents | |||
1. Requirements and definitions . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Requirements and Definitions . . . . . . . . . . . . . . . . . 4 | |||
1.2. Key words . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.2. Key Words . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3. Description of DNS spoofing . . . . . . . . . . . . . . . . . 7 | 3. Description of DNS Spoofing . . . . . . . . . . . . . . . . . 5 | |||
4. Detailed Description of Spoofing Scenarios . . . . . . . . . . 8 | 4. Detailed Description of Spoofing Scenarios . . . . . . . . . . 6 | |||
4.1. Forcing a query . . . . . . . . . . . . . . . . . . . . . 8 | 4.1. Forcing a Query . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.2. Matching the question section . . . . . . . . . . . . . . 9 | 4.2. Matching the Question Section . . . . . . . . . . . . . . 7 | |||
4.3. Matching the ID field . . . . . . . . . . . . . . . . . . 9 | 4.3. Matching the ID Field . . . . . . . . . . . . . . . . . . 7 | |||
4.4. Matching the source address of the authentic response . . 9 | 4.4. Matching the Source Address of the Authentic Response . . 7 | |||
4.5. Matching the destination address and port of the | 4.5. Matching the Destination Address and Port of the | |||
authentic response . . . . . . . . . . . . . . . . . . . . 9 | Authentic Response . . . . . . . . . . . . . . . . . . . . 8 | |||
4.6. Have the response arrive before the authentic response . . 10 | 4.6. Have the Response Arrive before the Authentic Response . . 8 | |||
5. Birthday attacks . . . . . . . . . . . . . . . . . . . . . . . 12 | 5. Birthday Attacks . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
6. Accepting only in-domain records . . . . . . . . . . . . . . . 13 | 6. Accepting Only In-Domain Records . . . . . . . . . . . . . . . 9 | |||
7. Combined difficulty . . . . . . . . . . . . . . . . . . . . . 14 | 7. Combined Difficulty . . . . . . . . . . . . . . . . . . . . . 10 | |||
7.1. Symbols used in calculation . . . . . . . . . . . . . . . 14 | 7.1. Symbols Used in Calculation . . . . . . . . . . . . . . . 10 | |||
7.2. Calculation . . . . . . . . . . . . . . . . . . . . . . . 15 | 7.2. Calculation . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
8. Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 8. Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
8.1. Repetitive spoofing attempts for a single domain name . . 17 | 8.1. Repetitive Spoofing Attempts for a Single Domain Name . . 13 | |||
9. Forgery countermeasures . . . . . . . . . . . . . . . . . . . 18 | 9. Forgery Countermeasures . . . . . . . . . . . . . . . . . . . 13 | |||
9.1. Query matching rules . . . . . . . . . . . . . . . . . . . 18 | 9.1. Query Matching Rules . . . . . . . . . . . . . . . . . . . 13 | |||
9.2. Extending the Q-ID space by using ports and addresses . . 18 | 9.2. Extending the Q-ID Space by Using Ports and Addresses . . 14 | |||
9.2.1. Justification and Discussion . . . . . . . . . . . . . 19 | 9.2.1. Justification and Discussion . . . . . . . . . . . . . 14 | |||
9.3. Spoof detection and countermeasure . . . . . . . . . . . . 19 | 9.3. Spoof Detection and Countermeasure . . . . . . . . . . . . 15 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | |||
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 23 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 12.1. Normative References . . . . . . . . . . . . . . . . . . . 16 | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . . 24 | 12.2. Informative References . . . . . . . . . . . . . . . . . . 17 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . . 24 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 26 | ||||
1. Requirements and definitions | ||||
1.1. Definitions | ||||
This document uses the following definitions: | ||||
Client: typically a 'stub-resolver' on an end-user's computer | ||||
Resolver: a nameserver performing recursive service for clients, | ||||
also known as a caching server, or a full service resolver | ||||
([RFC1123], paragraph 6.1.3.1) | ||||
Stub resolver: a very limited Resolver on a client computer, that | ||||
leaves the recursing work to a full resolver | ||||
Query: a question sent out by a resolver, typically in a UDP | ||||
packet | ||||
Response: the answer sent back by an authoritative nameserver, | ||||
typically in a UDP packet | ||||
Third party: any entity other than the resolver or the intended | ||||
recipient of a question. The third party may have access to an | ||||
arbitrary authoritative nameserver, but has no access to packets | ||||
transmitted by the Resolver or authoritative server | ||||
Attacker: malicious third party. | ||||
Spoof: the activity of attempting to subvert the DNS process by | ||||
getting a chosen answer accepted | ||||
Authentic response: the correct answer that comes from the right | ||||
authoritative server | ||||
Target domain name: domain for which the attacker wishes to spoof | ||||
in an answer | ||||
Fake data: response chosen by the attacker | ||||
1.2. Key words | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | ||||
document are to be interpreted as described in [RFC2119]. | ||||
2. Introduction | 1. Introduction | |||
This document describes several common problems in DNS | This document describes several common problems in DNS | |||
implementations which, although previously recognized, remain largely | implementations, which, although previously recognized, remain | |||
unsolved. Besides briefly recapping these problems, this document | largely unsolved. Besides briefly recapping these problems, this | |||
contains rules that, if implemented, make complying resolvers vastly | document contains rules that, if implemented, make complying | |||
more resistant to the attacks described. The goal is to make the | resolvers vastly more resistant to the attacks described. The goal | |||
existing DNS as secure as possible within the current protocol | is to make the existing DNS as secure as possible within the current | |||
boundaries. | protocol boundaries. | |||
The words below are aimed at authors of resolvers: it is up to | The words below are aimed at authors of resolvers: it is up to | |||
operators to decide which nameserver implementation to use, or which | operators to decide which nameserver implementation to use, or which | |||
options to enable. Operational constraints may override the security | options to enable. Operational constraints may override the security | |||
concerns described below. However, implementations are expected to | concerns described below. However, implementations are expected to | |||
allow an operator to enable functionality described in this document. | allow an operator to enable functionality described in this document. | |||
Almost every transaction on the Internet involves the Domain Name | Almost every transaction on the Internet involves the Domain Name | |||
System, which is described in [RFC1034], [RFC1035] and beyond. | System, which is described in [RFC1034], [RFC1035], and beyond. | |||
Additionally, it has recently become possible to acquire SSL/TLS | Additionally, it has recently become possible to acquire Secure | |||
certificates with no other confirmation of identity than the ability | Socket Layer/Transport Layer Security (SSL/TLS) certificates with no | |||
to respond to a verification email sent via SMTP ([RFC2821]) - which | other confirmation of identity than the ability to respond to a | |||
generally uses DNS for its routing. | verification email sent via SMTP ([RFC5321]) -- which generally uses | |||
DNS for its routing. | ||||
In other words, any party that (temporarily) controls the Domain Name | In other words, any party that (temporarily) controls the Domain Name | |||
System is in a position to reroute most kinds of Internet | System is in a position to reroute most kinds of Internet | |||
transactions, including the verification steps in acquiring an SSL/ | transactions, including the verification steps in acquiring an SSL/ | |||
TLS certificate for a domain. This in turn means that even | TLS certificate for a domain. This in turn means that even | |||
transactions protected by SSL/TLS could be diverted. | transactions protected by SSL/TLS could be diverted. | |||
It is entirely conceivable that such rerouted traffic could be used | It is entirely conceivable that such rerouted traffic could be used | |||
to the disadvantage of Internet users. | to the disadvantage of Internet users. | |||
These and other developments have made the security and | These and other developments have made the security and | |||
trustworthiness of DNS of renewed importance. Although the DNS | trustworthiness of DNS of renewed importance. Although the DNS | |||
community is working hard on finalising and implementing a | community is working hard on finalizing and implementing a | |||
cryptographically enhanced DNS protocol, steps should be taken to | cryptographically enhanced DNS protocol, steps should be taken to | |||
make sure that the existing use of DNS is as secure as possible | make sure that the existing use of DNS is as secure as possible | |||
within the bounds of the relevant standards. | within the bounds of the relevant standards. | |||
It should be noted that the most commonly used resolvers currently do | It should be noted that the most commonly used resolvers currently do | |||
not perform as well as possible in this respect, making this document | not perform as well as possible in this respect, making this document | |||
of urgent importance. | of urgent importance. | |||
A thorough analysis of risks facing DNS can be found in [RFC3833]. | A thorough analysis of risks facing DNS can be found in [RFC3833]. | |||
This document expands on some of the risks mentioned in RFC 3833, | This document expands on some of the risks mentioned in RFC 3833, | |||
especially those outlined in the sections on 'ID Guessing and Query | especially those outlined in the sections on "ID Guessing and Query | |||
Prediction' and 'Name Chaining'. Furthermore, it emphasises a number | Prediction" and "Name Chaining". Furthermore, it emphasizes a number | |||
of existing rules and guidelines embodied in the relevant DNS | of existing rules and guidelines embodied in the relevant DNS | |||
protocol specifications. The following also specifies new | protocol specifications. The following also specifies new | |||
requirements to make sure the Domain Name System can be relied upon | requirements to make sure the Domain Name System can be relied upon | |||
until a more secure protocol has been standardised and deployed. | until a more secure protocol has been standardized and deployed. | |||
It should be noted that even when all measures suggested below are | It should be noted that even when all measures suggested below are | |||
implemented, protocol users are not protected against third parties | implemented, protocol users are not protected against third parties | |||
with the ability to observe, modify or inject packets in the traffic | with the ability to observe, modify, or inject packets in the traffic | |||
of a resolver. | of a resolver. | |||
For protocol extensions that offer protection against these | For protocol extensions that offer protection against these | |||
scenarios, see [RFC4033] and beyond. | scenarios, see [RFC4033] and beyond. | |||
3. Description of DNS spoofing | 2. Requirements and Definitions | |||
When certain steps are taken it is feasible to 'spoof' the current | 2.1. Definitions | |||
This document uses the following definitions: | ||||
Client: typically a 'stub-resolver' on an end-user's computer. | ||||
Resolver: a nameserver performing recursive service for clients, | ||||
also known as a caching server, or a full service resolver | ||||
([RFC1123], Section 6.1.3.1). | ||||
Stub resolver: a very limited resolver on a client computer, that | ||||
leaves the recursing work to a full resolver. | ||||
Query: a question sent out by a resolver, typically in a UDP | ||||
packet | ||||
Response: the answer sent back by an authoritative nameserver, | ||||
typically in a UDP packet. | ||||
Third party: any entity other than the resolver or the intended | ||||
recipient of a question. The third party may have access to an | ||||
arbitrary authoritative nameserver, but has no access to packets | ||||
transmitted by the resolver or authoritative server. | ||||
Attacker: malicious third party. | ||||
Spoof: the activity of attempting to subvert the DNS process by | ||||
getting a chosen answer accepted. | ||||
Authentic response: the correct answer that comes from the right | ||||
authoritative server. | ||||
Target domain name: domain for which the attacker wishes to spoof | ||||
in an answer | ||||
Fake data: response chosen by the attacker. | ||||
2.2. Key Words | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | ||||
document are to be interpreted as described in [RFC2119]. | ||||
3. Description of DNS Spoofing | ||||
When certain steps are taken, it is feasible to "spoof" the current | ||||
deployed majority of resolvers with carefully crafted and timed DNS | deployed majority of resolvers with carefully crafted and timed DNS | |||
packets. Once spoofed, a caching server will repeat the data it | packets. Once spoofed, a caching server will repeat the data it | |||
wrongfully accepted, and make its clients contact the wrong, and | wrongfully accepted, and make its clients contact the wrong, and | |||
possibly malicious, servers. | possibly malicious, servers. | |||
To understand how this process works it is important to know what | To understand how this process works it is important to know what | |||
makes a resolver accept a response. | makes a resolver accept a response. | |||
The following sentence in section 5.3.3 of [RFC1034] presaged the | The following sentence in Section 5.3.3 of [RFC1034] presaged the | |||
present problem: | present problem: | |||
The resolver should be highly paranoid in its parsing of responses. | The resolver should be highly paranoid in its parsing of responses. | |||
It should also check that the response matches the query it sent | It should also check that the response matches the query it sent | |||
using the ID field in the response. | using the ID field in the response. | |||
DNS data is to be accepted by a resolver if and only if: | DNS data is to be accepted by a resolver if and only if: | |||
1. The question section of the reply packet is equivalent to that of | 1. The question section of the reply packet is equivalent to that of | |||
a question packet currently waiting for a response | a question packet currently waiting for a response. | |||
2. The ID field of the reply packet matches that of the question | 2. The ID field of the reply packet matches that of the question | |||
packet | packet. | |||
3. The response comes from the same network address the question was | 3. The response comes from the same network address to which the | |||
sent to | question was sent. | |||
4. The response comes in on the same network address, including port | 4. The response comes in on the same network address, including port | |||
number, as the question was sent from | number, from which the question was sent. | |||
In general, the first response matching these four conditions is | In general, the first response matching these four conditions is | |||
accepted. | accepted. | |||
If a third party succeeds in meeting the four conditions before the | If a third party succeeds in meeting the four conditions before the | |||
response from the authentic nameserver does so, it is in a position | response from the authentic nameserver does so, it is in a position | |||
to feed a resolver fabricated data. When it does so, we dub it an | to feed a resolver fabricated data. When it does so, we dub it an | |||
attacker, attempting to spoof in fake data. | "attacker", attempting to spoof in fake data. | |||
All conditions mentioned above can theoretically be met by a third | All conditions mentioned above can theoretically be met by a third | |||
party, with the difficulty being a function of the resolver | party, with the difficulty being a function of the resolver | |||
implementation and zone configuration. | implementation and zone configuration. | |||
4. Detailed Description of Spoofing Scenarios | 4. Detailed Description of Spoofing Scenarios | |||
The previous paragraph discussed a number of requirements an attacker | The previous paragraph discussed a number of requirements an attacker | |||
must match in order to spoof in manipulated (or fake) data. This | must match in order to spoof in manipulated (or fake) data. This | |||
section discusses the relative difficulties and how implementation | section discusses the relative difficulties and how implementation- | |||
defined choices impact the amount of work an attacker has to perform | defined choices impact the amount of work an attacker has to perform | |||
to meet said difficulties. | to meet said difficulties. | |||
Some more details can be found in section 2.2 of [RFC3833]. | Some more details can be found in Section 2.2 of [RFC3833]. | |||
4.1. Forcing a query | 4.1. Forcing a Query | |||
Formally, there is no need for a nameserver to perform service except | Formally, there is no need for a nameserver to perform service except | |||
for its operator, its customers or more generally its users. | for its operator, its customers, or more generally its users. | |||
Recently, open recursing nameservers have been used to amplify denial | Recently, open recursing nameservers have been used to amplify | |||
of service attacks. | denial-of-service attacks. | |||
Providing full service enables the third party to send the target | Providing full service enables the third party to send the target | |||
resolver a query for the domain name it intends to spoof. On | resolver a query for the domain name it intends to spoof. On | |||
receiving this query, and not finding the answer in its cache, the | receiving this query, and not finding the answer in its cache, the | |||
resolver will transmit queries to relevant authoritative nameservers. | resolver will transmit queries to relevant authoritative nameservers. | |||
This opens up a window of opportunity for getting fake answer data | This opens up a window of opportunity for getting fake answer data | |||
accepted. | accepted. | |||
Queries may however be forced indirectly, for example by inducing a | Queries may however be forced indirectly, for example, by inducing a | |||
mail server to perform DNS lookups. | mail server to perform DNS lookups. | |||
Some operators restrict access by not recursing for unauthorised IP | Some operators restrict access by not recursing for unauthorized IP | |||
addresses, but only respond with data from the cache. This makes | addresses, but only respond with data from the cache. This makes | |||
spoofing harder for a third party as it cannot then force the exact | spoofing harder for a third party as it cannot then force the exact | |||
moment a question will be asked. It is still possible however to | moment a question will be asked. It is still possible however to | |||
determine a time range when this will happen, because nameservers | determine a time range when this will happen, because nameservers | |||
helpfully publish the decreasing TTL of entries in the cache, which | helpfully publish the decreasing time to live (TTL) of entries in the | |||
indicate from which absolute time onwards a new query could be sent | cache, which indicate from which absolute time onwards a new query | |||
to refresh the expired entry. | could be sent to refresh the expired entry. | |||
The time to live of the target domain name's RRSets determines how | The time to live of the target domain name's RRSets determines how | |||
often a window of opportunity is available, which implies that a | often a window of opportunity is available, which implies that a | |||
short TTL makes spoofing far more viable. | short TTL makes spoofing far more viable. | |||
Note that the attacker might very well have authorised access to the | Note that the attacker might very well have authorized access to the | |||
target resolver by virtue of being a customer or employee of its | target resolver by virtue of being a customer or employee of its | |||
operator. In addition, access may be enabled through the use of | operator. In addition, access may be enabled through the use of | |||
reflectors as outlined in [RFC5358]. | reflectors as outlined in [RFC5358]. | |||
4.2. Matching the question section | 4.2. Matching the Question Section | |||
DNS packets, both queries and responses, contain a question section. | DNS packets, both queries and responses, contain a question section. | |||
Incoming responses should be verified to have a question section that | Incoming responses should be verified to have a question section that | |||
is equivalent to that of the outgoing query. | is equivalent to that of the outgoing query. | |||
4.3. Matching the ID field | 4.3. Matching the ID Field | |||
The DNS ID field is 16 bits wide, meaning that if full use is made of | The DNS ID field is 16 bits wide, meaning that if full use is made of | |||
all these bits, and if their contents are truly random, it will | all these bits, and if their contents are truly random, it will | |||
require on average 32768 attempts to guess. Anecdotal evidence | require on average 32768 attempts to guess. Anecdotal evidence | |||
suggests there are implementations utilising only 14 bits, meaning on | suggests there are implementations utilizing only 14 bits, meaning on | |||
average 8192 attempts will suffice. | average 8192 attempts will suffice. | |||
Additionally, if the target nameserver can be forced into having | Additionally, if the target nameserver can be forced into having | |||
multiple identical queries outstanding, the 'Birthday Attack' | multiple identical queries outstanding, the "Birthday Attack" | |||
phenomenon means that any fake data sent by the attacker is matched | phenomenon means that any fake data sent by the attacker is matched | |||
against multiple outstanding queries, significantly raising the | against multiple outstanding queries, significantly raising the | |||
chance of success. Further details in Section 5. | chance of success. Further details in Section 5. | |||
4.4. Matching the source address of the authentic response | 4.4. Matching the Source Address of the Authentic Response | |||
It should be noted that meeting this condition entails being able to | It should be noted that meeting this condition entails being able to | |||
transmit packets on behalf of the address of the authoritative | transmit packets on behalf of the address of the authoritative | |||
nameserver. While two Best Current Practice documents ([RFC2827] and | nameserver. While two Best Current Practice documents ([RFC2827] and | |||
[RFC3013] specifically) direct Internet access providers to prevent | [RFC3013] specifically) direct Internet access providers to prevent | |||
their customers from assuming IP addresses that are not assigned to | their customers from assuming IP addresses that are not assigned to | |||
them, these recommendations are not universally (nor even widely) | them, these recommendations are not universally (nor even widely) | |||
implemented. | implemented. | |||
Many zones have two or three authoritative nameservers, which make | Many zones have two or three authoritative nameservers, which make | |||
matching the source address of the authentic response very likely | matching the source address of the authentic response very likely | |||
with even a naive choice having a double digit success rate. | with even a naive choice having a double digit success rate. | |||
Most recursing nameservers store relative performance indications of | Most recursing nameservers store relative performance indications of | |||
authoritative nameservers, which may make it easier to predict which | authoritative nameservers, which may make it easier to predict which | |||
nameserver would originally be queried - the one most likely to | nameserver would originally be queried -- the one most likely to | |||
respond the quickest. | respond the quickest. | |||
Generally, this condition requires at most two or three attempts | Generally, this condition requires at most two or three attempts | |||
before it is matched. | before it is matched. | |||
4.5. Matching the destination address and port of the authentic | 4.5. Matching the Destination Address and Port of the Authentic | |||
response | Response | |||
Note that the destination address of the authentic response is the | Note that the destination address of the authentic response is the | |||
source address of the original query. | source address of the original query. | |||
The actual address of a recursing nameserver is generally known; the | The actual address of a recursing nameserver is generally known; the | |||
port used for asking questions is harder to determine. Most current | port used for asking questions is harder to determine. Most current | |||
resolvers pick an arbitrary port at startup (possibly at random) and | resolvers pick an arbitrary port at startup (possibly at random) and | |||
use this for all outgoing queries. In quite a number of cases the | use this for all outgoing queries. In quite a number of cases, the | |||
source port of outgoing questions is fixed at the traditional DNS | source port of outgoing questions is fixed at the traditional DNS | |||
assigned server port number of 53. | assigned server port number of 53. | |||
If the source port of the original query is random, but static, any | If the source port of the original query is random, but static, any | |||
authoritative nameserver under observation by the attacker can be | authoritative nameserver under observation by the attacker can be | |||
used to determine this port. This means that matching this | used to determine this port. This means that matching this | |||
conditions often requires no guess work. | conditions often requires no guess work. | |||
If multiple ports are used for sending queries, this enlarges the | If multiple ports are used for sending queries, this enlarges the | |||
effective ID space by a factor equal to the number of ports used. | effective ID space by a factor equal to the number of ports used. | |||
Less common resolving servers choose a random port per outgoing | Less common resolving servers choose a random port per outgoing | |||
query. If this strategy is followed, this port number can be | query. If this strategy is followed, this port number can be | |||
regarded as an additional ID field, again containing up to 16 bits. | regarded as an additional ID field, again containing up to 16 bits. | |||
If the maximum ports range is utilized, on average, around 32256 | If the maximum ports range is utilized, on average, around 32256 | |||
source ports would have to be tried before matching the source port | source ports would have to be tried before matching the source port | |||
of the original query as ports below 1024 may be unavailable for use, | of the original query, as ports below 1024 may be unavailable for | |||
leaving 64512 options. | use, leaving 64512 options. | |||
It is in general safe for DNS to use ports in the range 1024-49152 | It is in general safe for DNS to use ports in the range 1024-49152 | |||
even though some of these ports are allocated to other protocols. | even though some of these ports are allocated to other protocols. | |||
DNS resolvers will not be able to use any ports that are already in | DNS resolvers will not be able to use any ports that are already in | |||
use. If a DNS resolver uses a port it will release that port after a | use. If a DNS resolver uses a port, it will release that port after | |||
short time and migrate to a different port. Only in the case of high | a short time and migrate to a different port. Only in the case of a | |||
volume resolver is it possible that an application wanting a | high-volume resolver is it possible that an application wanting a | |||
particular UDP port suffers a long term block-out. | particular UDP port suffers a long term block-out. | |||
It should be noted that a firewall will not prevent the matching of | It should be noted that a firewall will not prevent the matching of | |||
this address, as it will accept answers that (appear) to come from | this address, as it will accept answers that (appear to) come from | |||
the correct address, offering no additional security. | the correct address, offering no additional security. | |||
4.6. Have the response arrive before the authentic response | 4.6. Have the Response Arrive before the Authentic Response | |||
Once any packet has matched the previous four conditions (plus | Once any packet has matched the previous four conditions (plus | |||
possible additional conditions), no further responses are generally | possible additional conditions), no further responses are generally | |||
accepted. | accepted. | |||
This means that the third party has a limited time in which to inject | This means that the third party has a limited time in which to inject | |||
its spoofed response. For calculations we will assume a window in | its spoofed response. For calculations, we will assume a window in | |||
order of at most 100ms (depending on the network distance to the | order of at most 100ms (depending on the network distance to the | |||
authentic authoritative nameserver). | authentic authoritative nameserver). | |||
This time period can be far longer if the authentic authoritative | This time period can be far longer if the authentic authoritative | |||
nameservers are (briefly) overloaded by queries, perhaps by the | nameservers are (briefly) overloaded by queries, perhaps by the | |||
attacker. | attacker. | |||
5. Birthday attacks | 5. Birthday Attacks | |||
The so called birthday paradox implies that a group of 23 people | The so-called "birthday paradox" implies that a group of 23 people | |||
suffices to have a more than even chance of having two or more | suffices to have a more than even chance of having two or more | |||
members of the group share a birthday. | members of the group share a birthday. | |||
An attacker can benefit from this exact phenomenon if it can force | An attacker can benefit from this exact phenomenon if it can force | |||
the target resolver to have multiple equivalent (identical QNAME, | the target resolver to have multiple equivalent (identical QNAME, | |||
QTYPE and QCLASS) outstanding queries at any one time to the same | QTYPE, and QCLASS) outstanding queries at any one time to the same | |||
authoritative server. | authoritative server. | |||
Any packet the attacker sends then has a much higher chance of being | Any packet the attacker sends then has a much higher chance of being | |||
accepted because it only has to match any of the outstanding queries | accepted because it only has to match any of the outstanding queries | |||
for that single domain. Compared to the birthday analogy above, of | for that single domain. Compared to the birthday analogy above, of | |||
the group composed of queries and responses, the chance of having any | the group composed of queries and responses, the chance of having any | |||
of these share an ID rises quickly. | of these share an ID rises quickly. | |||
As long as small numbers of queries are sent out, the chance of | As long as small numbers of queries are sent out, the chance of | |||
successfully spoofing a response rises linearly with the number of | successfully spoofing a response rises linearly with the number of | |||
outstanding queries for the exact domain and nameserver. | outstanding queries for the exact domain and nameserver. | |||
For larger numbers this effect is less pronounced. | For larger numbers, this effect is less pronounced. | |||
More details are available in US-CERT [vu-457875]. | More details are available in US-CERT [vu-457875]. | |||
6. Accepting only in-domain records | 6. Accepting Only In-Domain Records | |||
Responses from authoritative nameservers often contain information | Responses from authoritative nameservers often contain information | |||
that is not part of the zone for which we deem it authoritative. As | that is not part of the zone for which we deem it authoritative. As | |||
an example, a query for the MX record of a domain might get as its | an example, a query for the MX record of a domain might get as its | |||
responses a mail exchanger in another domain, and additionally the IP | responses a mail exchanger in another domain, and additionally the IP | |||
address of this mail exchanger. | address of this mail exchanger. | |||
If accepted uncritically, the resolver stands the chance of accepting | If accepted uncritically, the resolver stands the chance of accepting | |||
data from an untrusted source. Care must be taken to only accept | data from an untrusted source. Care must be taken to only accept | |||
data if it is known that the originator is authoritative for the | data if it is known that the originator is authoritative for the | |||
QNAME or a parent of the QNAME. | QNAME or a parent of the QNAME. | |||
One very simple way to achieve this is to only accept data if it is | One very simple way to achieve this is to only accept data if it is | |||
part of the domain the query was for. | part of the domain for which the query was intended. | |||
7. Combined difficulty | 7. Combined Difficulty | |||
Given a known or static destination port, matching ID field, source | Given a known or static destination port, matching ID field, the | |||
and destination address requires on average in the order of 2 * 2^15 | source and destination address requires on average in the order of 2 | |||
= 65000 packets, assuming a zone has 2 authoritative nameservers. | * 2^15 = 65000 packets, assuming a zone has 2 authoritative | |||
nameservers. | ||||
If the window of opportunity available is around 100ms, as assumed | If the window of opportunity available is around 100ms, as assumed | |||
above, an attacker would need to be able to briefly transmit 650000 | above, an attacker would need to be able to briefly transmit 650000 | |||
packets/s to have a 50% chance to get spoofed data accepted on the | packets/s to have a 50% chance to get spoofed data accepted on the | |||
first attempt. | first attempt. | |||
A realistic minimal DNS response consists of around 80 bytes, | A realistic minimal DNS response consists of around 80 bytes, | |||
including IP headers, making the packet rate above correspond to a | including IP headers, making the packet rate above correspond to a | |||
respectable burst of 416Mb/s. | respectable burst of 416 Mbit/s. | |||
As of mid-2006, this kind of bandwidth was not common but not scarce | As of mid-2006, this kind of bandwidth was not common but not scarce | |||
either, especially among those in a position to control many servers. | either, especially among those in a position to control many servers. | |||
These numbers change when a window of a full second is assumed, | These numbers change when a window of a full second is assumed, | |||
possibly because the arrival of the authentic response can be | possibly because the arrival of the authentic response can be | |||
prevented by overloading the bonafide authoritative hosts with decoy | prevented by overloading the bonafide authoritative hosts with decoy | |||
queries. This reduces the needed bandwidth to 42 Mb/s. | queries. This reduces the needed bandwidth to 42 Mbit/s. | |||
If in addition the attacker is granted more than a single chance and | If, in addition, the attacker is granted more than a single chance | |||
allowed up to 60 minutes of work on a domain with a time to live of | and allowed up to 60 minutes of work on a domain with a time to live | |||
300 seconds, a meagre 4Mb/s suffices for a 50% chance at getting fake | of 300 seconds, a meager 4 Mbit/s suffices for a 50% chance at | |||
data accepted. Once equipped with a longer time, matching condition | getting fake data accepted. Once equipped with a longer time, | |||
1 mentioned above is straightforward - any popular domain will have | matching condition 1 mentioned above is straightforward -- any | |||
been queried a number of times within this hour, and given the short | popular domain will have been queried a number of times within this | |||
TTL, this would lead to queries to authoritative nameservers, opening | hour, and given the short TTL, this would lead to queries to | |||
windows of opportunity. | authoritative nameservers, opening windows of opportunity. | |||
7.1. Symbols used in calculation | 7.1. Symbols Used in Calculation | |||
Assume the following symbols are used: | Assume the following symbols are used: | |||
I: Number distinct IDs available (maximum 65536) | I: Number distinct IDs available (maximum 65536) | |||
P: Number of ports used (maximum around 64000 as ports under 1024 | P: Number of ports used (maximum around 64000 as ports under 1024 are | |||
are not always available, but often 1) | not always available, but often 1) | |||
N: Number of authoritative nameservers for a domain (averages | N: Number of authoritative nameservers for a domain (averages around | |||
around 2.5) | 2.5) | |||
F: Number of "fake" packets sent by the attacker | ||||
F: Number of 'fake' packets sent by the attacker | ||||
R: Number of packets sent per second by the attacker | R: Number of packets sent per second by the attacker | |||
W: Window of opportunity, in seconds. Bounded by the response | W: Window of opportunity, in seconds. Bounded by the response time | |||
time of the authoritative servers (often 0.1s) | of the authoritative servers (often 0.1s) | |||
D: Average number of identical outstanding queries of a resolver | D: Average number of identical outstanding queries of a resolver | |||
(typically 1, see Section 5) | (typically 1, see Section 5) | |||
A: Number of attempts, one for each window of opportunity | A: Number of attempts, one for each window of opportunity | |||
7.2. Calculation | 7.2. Calculation | |||
The probability of spoofing a resolver is equal to the amount of fake | The probability of spoofing a resolver is equal to the amount of fake | |||
packets that arrive within the window of opportunity, divided by the | packets that arrive within the window of opportunity, divided by the | |||
skipping to change at page 15, line 35 | skipping to change at page 11, line 37 | |||
In symbols, if the probability of being spoofed is denoted as P_s: | In symbols, if the probability of being spoofed is denoted as P_s: | |||
D * F | D * F | |||
P_s = --------- | P_s = --------- | |||
N * P * I | N * P * I | |||
It is more useful to reason not in terms of aggregate packets but to | It is more useful to reason not in terms of aggregate packets but to | |||
convert to packet rate, which can easily be converted to bandwidth if | convert to packet rate, which can easily be converted to bandwidth if | |||
needed. | needed. | |||
If the Window of opportunity length is 'W' and the attacker can send | If the window of opportunity length is 'W' and the attacker can send | |||
'R' packets per second, the number of fake packets 'F' that are | 'R' packets per second, the number of fake packets 'F' that are | |||
candidates to be accepted is: | candidates to be accepted is: | |||
D * R * W | D * R * W | |||
F = R * W -> P_s = --------- | F = R * W -> P_s = --------- | |||
N * P * I | N * P * I | |||
Finally, to calculate the combined chance 'P_cs' of spoofing over a | Finally, to calculate the combined chance 'P_cs' of spoofing over a | |||
chosen time period 'T', it should be realised that the attacker has a | chosen time period 'T', it should be realized that the attacker has a | |||
new window of opportunity each time the TTL 'TTL' of the target | new window of opportunity each time the TTL 'TTL' of the target | |||
domain expires. This means that the number of attempts 'A' is equal | domain expires. This means that the number of attempts 'A' is equal | |||
to 'T / TTL'. | to 'T / TTL'. | |||
To calculate the combined chance of at least one success, the | To calculate the combined chance of at least one success, the | |||
following formula holds: | following formula holds: | |||
(T / TTL) | (T / TTL) | |||
A ( D * R * W ) | A ( D * R * W ) | |||
P_cs = 1 - ( 1 - P_s ) = 1 - ( 1 - --------- ) | P_cs = 1 - ( 1 - P_s ) = 1 - ( 1 - --------- ) | |||
( N * P * I ) | ( N * P * I ) | |||
When common numbers (as listed above) for D, W, N, P and I are | When common numbers (as listed above) for D, W, N, P, and I are | |||
inserted, this formula reduces to: | inserted, this formula reduces to: | |||
(T / TTL) | (T / TTL) | |||
( R ) | ( R ) | |||
P_cs = 1 - ( 1 - ------- ) | P_cs = 1 - ( 1 - ------- ) | |||
( 1638400 ) | ( 1638400 ) | |||
From this formula it can be seen that, if the nameserver | From this formula, it can be seen that, if the nameserver | |||
implementation is unchanged, only raising the TTL offers protection. | implementation is unchanged, only raising the TTL offers protection. | |||
Raising N, the number of authoritative nameservers, is not feasible | Raising N, the number of authoritative nameservers, is not feasible | |||
beyond a small number. | beyond a small number. | |||
For the degenerate case of a zero-second TTL, a window of opportunity | For the degenerate case of a zero-second TTL, a window of opportunity | |||
opens for each query sent, making the effective TTL equal to 'W' | opens for each query sent, making the effective TTL equal to 'W' | |||
above, the response time of the authoritative server. | above, the response time of the authoritative server. | |||
This last case also holds for spoofing techniques which do not rely | This last case also holds for spoofing techniques that do not rely on | |||
on TTL expiry, but use repeated and changing queries. | TTL expiry, but use repeated and changing queries. | |||
8. Discussion | 8. Discussion | |||
The calculations above indicate the relative ease with which DNS data | The calculations above indicate the relative ease with which DNS data | |||
can be spoofed. For example, using the formula derived earlier on an | can be spoofed. For example, using the formula derived earlier on an | |||
RRSet with a 3600 second TTL, an attacker sending 7000 fake response | RRSet with a 3600 second TTL, an attacker sending 7000 fake response | |||
packets/s (a rate of 4.5Mb/s), stands a 10% chance of spoofing a | packets/s (a rate of 4.5 Mbit/s), stands a 10% chance of spoofing a | |||
record in the first 24 hours, which rises to 50% after a week. | record in the first 24 hours, which rises to 50% after a week. | |||
For an RRSet with a TTL of 60 seconds, the 10% level is hit after 24 | For an RRSet with a TTL of 60 seconds, the 10% level is hit after 24 | |||
minutes, 50% after less than 3 hours, 90% after around 9 hours. | minutes, 50% after less than 3 hours, 90% after around 9 hours. | |||
For some classes of attacks, the effective TTL is near zero, as noted | For some classes of attacks, the effective TTL is near zero, as noted | |||
above. | above. | |||
Note that the attacks mentioned above can be detected by watchful | Note that the attacks mentioned above can be detected by watchful | |||
server operators - an unexpected incoming stream of 4.5mbit/s of | server operators - an unexpected incoming stream of 4.5 Mbit/s of | |||
packets might be noticed. | packets might be noticed. | |||
An important assumption however in these calculations is a known or | An important assumption however in these calculations is a known or | |||
static destination port of the authentic response. | static destination port of the authentic response. | |||
If that port number is unknown and needs to be guessed as well, the | If that port number is unknown and needs to be guessed as well, the | |||
problem space expands by a factor of 64000, leading the attacker to | problem space expands by a factor of 64000, leading the attacker to | |||
need in excess of 285Gb/s to achieve similar success rates. | need in excess of 285Gb/s to achieve similar success rates. | |||
Such bandwidth is not generally available, nor expected to be so in | Such bandwidth is not generally available, nor is it expected to be | |||
the foreseeable future. | so in the foreseeable future. | |||
Note that some firewalls may need reconfiguring if they are currently | Note that some firewalls may need reconfiguring if they are currently | |||
setup to only allow outgoing queries from a single DNS source port. | setup to only allow outgoing queries from a single DNS source port. | |||
8.1. Repetitive spoofing attempts for a single domain name | 8.1. Repetitive Spoofing Attempts for a Single Domain Name | |||
Techniques are available to use an effectively infinite number of | Techniques are available to use an effectively infinite number of | |||
queries to achieve a desired spoofing goal. In the math above, this | queries to achieve a desired spoofing goal. In the math above, this | |||
reduces the effective TTL to 0. | reduces the effective TTL to 0. | |||
If such techniques are employed, using the same 7000 packets/s rate | If such techniques are employed, using the same 7000 packets/s rate | |||
mentioned above, and using 1 source port, the spoofing chance rises | mentioned above, and using 1 source port, the spoofing chance rises | |||
to 50% within 7 seconds. | to 50% within 7 seconds. | |||
If 64000 ports are used, as recommended in this document, using the | If 64000 ports are used, as recommended in this document, using the | |||
same query rate, the 50% level is reached after around 116 hours. | same query rate, the 50% level is reached after around 116 hours. | |||
9. Forgery countermeasures | 9. Forgery Countermeasures | |||
9.1. Query matching rules | 9.1. Query Matching Rules | |||
A resolver implementation MUST match responses to all of the | A resolver implementation MUST match responses to all of the | |||
following attributes of the query: | following attributes of the query: | |||
o Source address against query destination address | o Source address against query destination address | |||
o Destination address against query source address | o Destination address against query source address | |||
o Destination port against query source port | o Destination port against query source port | |||
o Query ID | o Query ID | |||
o Query name | o Query name | |||
o Query class and type | o Query class and type | |||
before applying DNS trustworthiness rules (see [RFC2181], section | before applying DNS trustworthiness rules (see Section 5.4.1 of | |||
5.4.1). | [RFC2181]). | |||
A mismatch and the response MUST be considered invalid. | A mismatch and the response MUST be considered invalid. | |||
9.2. Extending the Q-ID space by using ports and addresses | 9.2. Extending the Q-ID Space by Using Ports and Addresses | |||
Resolver implementations MUST: | Resolver implementations MUST: | |||
o Use an unpredictable source port for outgoing queries from the | o Use an unpredictable source port for outgoing queries from the | |||
range of available ports (53, or 1024 and above) that is as large | range of available ports (53, or 1024 and above) that is as large | |||
as possible and practicable; | as possible and practicable; | |||
o Use multiple different source ports simultaneously in case of | o Use multiple different source ports simultaneously in case of | |||
multiple outstanding queries; | multiple outstanding queries; | |||
o Use an unpredictable query ID for outgoing queries, utilizing the | o Use an unpredictable query ID for outgoing queries, utilizing the | |||
full range available (0-65535) | full range available (0-65535). | |||
Resolvers that have multiple IP addresses SHOULD use them in an | Resolvers that have multiple IP addresses SHOULD use them in an | |||
unpredictable manner for outgoing queries. | unpredictable manner for outgoing queries. | |||
Resolver implementations SHOULD provide means to avoid usage of | Resolver implementations SHOULD provide means to avoid usage of | |||
certain ports. | certain ports. | |||
Resolvers SHOULD favour authoritative nameservers with which a trust | Resolvers SHOULD favor authoritative nameservers with which a trust | |||
relation has been established; Stub-resolvers SHOULD be able to use | relation has been established; stub-resolvers SHOULD be able to use | |||
TSIG ([RFC2845]) or IPsec ([RFC4301]) when communicating with their | Transaction Signature (TSIG) ([RFC2845]) or IPsec ([RFC4301]) when | |||
recursive resolver | communicating with their recursive resolver. | |||
In case a cryptographic verification of response validity is | In case a cryptographic verification of response validity is | |||
available (TSIG, SIG(0)), resolver implementations MAY waive above | available (TSIG, SIG(0)), resolver implementations MAY waive above | |||
rules, and rely on this guarantee instead. | rules, and rely on this guarantee instead. | |||
Proper unpredictability can be achieved by employing a high quality | Proper unpredictability can be achieved by employing a high quality | |||
(pseudo-)random generator, as described in [RFC4086]. | (pseudo-)random generator, as described in [RFC4086]. | |||
9.2.1. Justification and Discussion | 9.2.1. Justification and Discussion | |||
Since an attacker can force a full DNS resolver to send queries to | Since an attacker can force a full DNS resolver to send queries to | |||
the attacker's own name servers, any constant or sequential state | the attacker's own nameservers, any constant or sequential state held | |||
held by such a resolver can be measured, and it must not be trivially | by such a resolver can be measured, and it must not be trivially easy | |||
easy to reverse engineer the resolver's internal state in a way that | to reverse engineer the resolver's internal state in a way that | |||
allows low-cost high-accuracy prediction of future state. | allows low-cost, high-accuracy prediction of future state. | |||
A full DNS resolver with only one or a small number of upstream- | A full DNS resolver with only one or a small number of upstream- | |||
facing endpoints is effectively using constants for IP source address | facing endpoints is effectively using constants for IP source address | |||
and UDP port number, and these are very predictable by potential | and UDP port number, and these are very predictable by potential | |||
attackers, and must therefore be avoided. | attackers, and must therefore be avoided. | |||
A full DNS resolver that uses a simple increment to get its next DNS | A full DNS resolver that uses a simple increment to get its next DNS | |||
query ID is likewise very predictable and so very spoofable. | query ID is likewise very predictable and so very spoofable. | |||
Finally, weak random number generators have been shown to expose | Finally, weak random number generators have been shown to expose | |||
their internal state, such that an attacker who witnesses several | their internal state, such that an attacker who witnesses several | |||
sequential "random" values can easily predict the next ones. A | sequential "random" values can easily predict the next ones. A | |||
crypto-strength random number generator is one whose output cannot be | crypto-strength random number generator is one whose output cannot be | |||
predicted no matter how many successive values are witnessed. | predicted no matter how many successive values are witnessed. | |||
9.3. Spoof detection and countermeasure | 9.3. Spoof Detection and Countermeasure | |||
If a resolver detects that an attempt is being made to spoof it, | If a resolver detects that an attempt is being made to spoof it, | |||
perhaps by discovering that many packets fail the criteria as | perhaps by discovering that many packets fail the criteria as | |||
outlined above, it MAY abandon the UDP query and re-issue it over | outlined above, it MAY abandon the UDP query and re-issue it over | |||
TCP. TCP, by the nature of its use of sequence numbers, is far more | TCP. TCP, by the nature of its use of sequence numbers, is far more | |||
resilient against forgery by third parties. | resilient against forgery by third parties. | |||
10. Security Considerations | 10. Security Considerations | |||
This document provides clarification of the DNS specification to | This document provides clarification of the DNS specification to | |||
skipping to change at page 20, line 19 | skipping to change at page 15, line 33 | |||
forged. Recommendations found above should be considered | forged. Recommendations found above should be considered | |||
complementary to possible cryptographical enhancements of the domain | complementary to possible cryptographical enhancements of the domain | |||
name system, which protect against a larger class of attacks. | name system, which protect against a larger class of attacks. | |||
This document recommends the use of UDP source port number | This document recommends the use of UDP source port number | |||
randomization to extend the effective DNS transaction ID beyond the | randomization to extend the effective DNS transaction ID beyond the | |||
available 16 bits. | available 16 bits. | |||
A resolver that does not implement the recommendations outlined above | A resolver that does not implement the recommendations outlined above | |||
can easily be forced to accept spoofed responses, which in turn are | can easily be forced to accept spoofed responses, which in turn are | |||
passed on to client computers - misdirecting (user) traffic to | passed on to client computers -- misdirecting (user) traffic to | |||
possibly malicious entities. | possibly malicious entities. | |||
This document directly impacts the security of the Domain Name | This document directly impacts the security of the Domain Name | |||
System, implementers are urged to follow its recommendations. | System, implementers are urged to follow its recommendations. | |||
Most security considerations can be found in Section 4 and Section 5, | Most security considerations can be found in Sections 4 and 5, while | |||
while proposed countermeasures are described in Section 9. | proposed countermeasures are described in Section 9. | |||
For brevity's sake, in lieu of repeating the security considerations | For brevity's sake, in lieu of repeating the security considerations | |||
references, the reader is referred to these sections. | references, the reader is referred to these sections. | |||
Nothing in this document specifies specific algorithms for operators | Nothing in this document specifies specific algorithms for operators | |||
to use; it does specify algorithms implementations SHOULD or MUST | to use; it does specify algorithms implementations SHOULD or MUST | |||
support. | support. | |||
It should be noted that the effects of source port randomization may | It should be noted that the effects of source port randomization may | |||
be dramatically reduced by NAT devices which either serialize or | be dramatically reduced by NAT devices that either serialize or limit | |||
limit in volume the UDP source ports used by the querying resolver. | in volume the UDP source ports used by the querying resolver. | |||
DNS recursive servers sitting behind at NAT or a statefull firewall | DNS recursive servers sitting behind at NAT or a statefull firewall | |||
may consume all available NAT translation entries/ports when | may consume all available NAT translation entries/ports when | |||
operating under high query load. Port randomization will cause | operating under high query load. Port randomization will cause | |||
translation entries to be consumed faster than with fixed query port | translation entries to be consumed faster than with fixed query port. | |||
. To avoid this NAT boxes and statefull firewalls can/should purge | To avoid this, NAT boxes and statefull firewalls can/should purge | |||
outgoing DNS query translation entries 10-17 seconds after the last | outgoing DNS query translation entries 10-17 seconds after the last | |||
outgoing query on that mapping was sent. [RFC4787] compliant devices | outgoing query on that mapping was sent. [RFC4787]-compliant devices | |||
need to treat UDP messages with port 53 differently than most other | need to treat UDP messages with port 53 differently than most other | |||
UDP protocols. | UDP protocols. | |||
To minimize the potential that port/state exhaustion attacks can be | To minimize the potential that port/state exhaustion attacks can be | |||
staged from the outside, it is recommended that services which | staged from the outside, it is recommended that services that | |||
generate number of DNS queries for each connection, should be rate | generate a number of DNS queries for each connection should be rate | |||
limited. This applies in particular to e-mail servers | limited. This applies in particular to email servers. | |||
11. IANA Considerations | ||||
This document does not make any assignments and has no actions for | ||||
IANA. | ||||
12. Acknowledgments | 11. Acknowledgments | |||
Source port randomisation in DNS was first implemented and possibly | Source port randomization in DNS was first implemented and possibly | |||
invented by Dan. J. Bernstein. | invented by Dan J. Bernstein. | |||
Although any mistakes remain our own, the authors gratefully | Although any mistakes remain our own, the authors gratefully | |||
acknowledge the help and contributions of: | acknowledge the help and contributions of: | |||
Stephane Bortzmeyer | ||||
Stephane Bortzmeyer, | Alfred Hoenes | |||
Peter Koch | ||||
Alfred Hoenes, | Sean Leach | |||
Norbert Sendetzky | ||||
Peter Koch, | Paul Vixie | |||
Florian Weimer | ||||
Sean Leach, | Wouter Wijngaards | |||
Norbert Sendetzky, | ||||
Paul Vixie, | ||||
Florian Weimer, | ||||
Wouter Wijngaards, | ||||
Dan Wing | Dan Wing | |||
13. References | 12. References | |||
13.1. Normative References | 12.1. Normative References | |||
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | [RFC1034] Mockapetris, P., "Domain names - concepts and | |||
STD 13, RFC 1034, November 1987. | facilities", STD 13, RFC 1034, November 1987. | |||
[RFC1035] Mockapetris, P., "Domain names - implementation and | [RFC1035] Mockapetris, P., "Domain names - implementation and | |||
specification", STD 13, RFC 1035, November 1987. | specification", STD 13, RFC 1035, November 1987. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS | [RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS | |||
Specification", RFC 2181, July 1997. | Specification", RFC 2181, July 1997. | |||
[RFC2821] Klensin, J., "Simple Mail Transfer Protocol", RFC 2821, | ||||
April 2001. | ||||
[RFC2827] Ferguson, P. and D. Senie, "Network Ingress Filtering: | [RFC2827] Ferguson, P. and D. Senie, "Network Ingress Filtering: | |||
Defeating Denial of Service Attacks which employ IP Source | Defeating Denial of Service Attacks which employ IP | |||
Address Spoofing", BCP 38, RFC 2827, May 2000. | Source Address Spoofing", BCP 38, RFC 2827, May 2000. | |||
[RFC2845] Vixie, P., Gudmundsson, O., Eastlake, D., and B. | [RFC2845] Vixie, P., Gudmundsson, O., Eastlake, D., and B. | |||
Wellington, "Secret Key Transaction Authentication for DNS | Wellington, "Secret Key Transaction Authentication for | |||
(TSIG)", RFC 2845, May 2000. | DNS (TSIG)", RFC 2845, May 2000. | |||
[RFC3013] Killalea, T., "Recommended Internet Service Provider | [RFC3013] Killalea, T., "Recommended Internet Service Provider | |||
Security Services and Procedures", BCP 46, RFC 3013, | Security Services and Procedures", BCP 46, RFC 3013, | |||
November 2000. | November 2000. | |||
[RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
Rose, "DNS Security Introduction and Requirements", | Rose, "DNS Security Introduction and Requirements", | |||
RFC 4033, March 2005. | RFC 4033, March 2005. | |||
[RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness | [RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness | |||
Requirements for Security", BCP 106, RFC 4086, June 2005. | Requirements for Security", BCP 106, RFC 4086, | |||
June 2005. | ||||
13.2. Informative References | [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | |||
October 2008. | ||||
[RFC1123] Braden, R., "Requirements for Internet Hosts - Application | 12.2. Informative References | |||
and Support", STD 3, RFC 1123, October 1989. | ||||
[RFC3833] Atkins, D. and R. Austein, "Threat Analysis of the Domain | [RFC1123] Braden, R., "Requirements for Internet Hosts - | |||
Name System (DNS)", RFC 3833, August 2004. | Application and Support", STD 3, RFC 1123, October 1989. | |||
[RFC3833] Atkins, D. and R. Austein, "Threat Analysis of the | ||||
Domain Name System (DNS)", RFC 3833, August 2004. | ||||
[RFC4301] Kent, S. and K. Seo, "Security Architecture for the | [RFC4301] Kent, S. and K. Seo, "Security Architecture for the | |||
Internet Protocol", RFC 4301, December 2005. | Internet Protocol", RFC 4301, December 2005. | |||
[RFC4787] Audet, F. and C. Jennings, "Network Address Translation | [RFC4787] Audet, F. and C. Jennings, "Network Address Translation | |||
(NAT) Behavioral Requirements for Unicast UDP", BCP 127, | (NAT) Behavioral Requirements for Unicast UDP", BCP 127, | |||
RFC 4787, January 2007. | RFC 4787, January 2007. | |||
[RFC5358] Damas, J. and F. Neves, "Preventing Use of Recursive | [RFC5358] Damas, J. and F. Neves, "Preventing Use of Recursive | |||
Nameservers in Reflector Attacks", BCP 140, RFC 5358, | Nameservers in Reflector Attacks", BCP 140, RFC 5358, | |||
October 2008. | October 2008. | |||
[vu-457875] | [vu-457875] United States CERT, "Various DNS service implementations | |||
United States CERT, "Various DNS service implementations | ||||
generate multiple simultaneous queries for the same | generate multiple simultaneous queries for the same | |||
resource record", VU 457875, November 2002. | resource record", VU 457875, November 2002. | |||
Authors' Addresses | Authors' Addresses | |||
Bert Hubert | Bert Hubert | |||
Netherlabs Computer Consulting BV. | Netherlabs Computer Consulting BV. | |||
Braillelaan 10 | Braillelaan 10 | |||
Rijswijk (ZH) 2289 CM | Rijswijk (ZH) 2289 CM | |||
The Netherlands | The Netherlands | |||
Email: bert.hubert@netherlabs.nl | EMail: bert.hubert@netherlabs.nl | |||
Remco van Mook | Remco van Mook | |||
Equinix | Equinix | |||
Auke Vleerstraat 1 | Auke Vleerstraat 1 | |||
Enschede 7521 PE | Enschede 7521 PE | |||
The Netherlands | The Netherlands | |||
Email: remco@eu.equinix.com | EMail: remco@eu.equinix.com | |||
End of changes. 101 change blocks. | ||||
278 lines changed or deleted | 248 lines changed or added | |||
This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |