Network Working Group                                          A. Hubert
Request for Comments: 5452            Netherlabs Computer Consulting BV.
Updates: 2181                                                R. van Mook
Category: Standards Track                                        Equinix
                                                           January 2009


    Measures for Making DNS More Resilient against Forged Answers

Status of This Memo

  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 (c) 2009 IETF Trust and the persons identified as the
  document authors.  All rights reserved.

  This document is subject to BCP 78 and the IETF Trust's Legal
  Provisions Relating to IETF Documents (http://trustee.ietf.org/
  license-info) in effect on the date of publication of this document.
  Please review these documents carefully, as they describe your rights
  and restrictions with respect to this document.

Abstract

  The current Internet climate poses serious threats to the Domain Name
  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
  'spoofing' a recursing nameserver many orders of magnitude harder.

  Even a cryptographically secured DNS benefits from having the ability
  to discard bogus responses quickly, as this potentially saves large
  amounts of computation.

  By describing certain behavior that has previously not been
  standardized, this document sets out how to make the DNS more
  resilient against accepting incorrect responses.  This document
  updates RFC 2181.








Hubert & van Mook           Standards Track                     [Page 1]

RFC 5452         DNS Resilience against Forged Answers      January 2009


Table of Contents

  1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
  2.  Requirements and Definitions . . . . . . . . . . . . . . . . .  4
    2.1.  Definitions  . . . . . . . . . . . . . . . . . . . . . . .  4
    2.2.  Key Words  . . . . . . . . . . . . . . . . . . . . . . . .  5
  3.  Description of DNS Spoofing  . . . . . . . . . . . . . . . . .  5
  4.  Detailed Description of Spoofing Scenarios . . . . . . . . . .  6
    4.1.  Forcing a Query  . . . . . . . . . . . . . . . . . . . . .  6
    4.2.  Matching the Question Section  . . . . . . . . . . . . . .  7
    4.3.  Matching the ID Field  . . . . . . . . . . . . . . . . . .  7
    4.4.  Matching the Source Address of the Authentic Response  . .  7
    4.5.  Matching the Destination Address and Port of the
          Authentic Response . . . . . . . . . . . . . . . . . . . .  8
    4.6.  Have the Response Arrive before the Authentic Response . .  8
  5.  Birthday Attacks . . . . . . . . . . . . . . . . . . . . . . .  9
  6.  Accepting Only In-Domain Records . . . . . . . . . . . . . . .  9
  7.  Combined Difficulty  . . . . . . . . . . . . . . . . . . . . . 10
    7.1.  Symbols Used in Calculation  . . . . . . . . . . . . . . . 10
    7.2.  Calculation  . . . . . . . . . . . . . . . . . . . . . . . 11
  8.  Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . 12
    8.1.  Repetitive Spoofing Attempts for a Single Domain Name  . . 13
  9.  Forgery Countermeasures  . . . . . . . . . . . . . . . . . . . 13
    9.1.  Query Matching Rules . . . . . . . . . . . . . . . . . . . 13
    9.2.  Extending the Q-ID Space by Using Ports and Addresses  . . 14
      9.2.1.  Justification and Discussion . . . . . . . . . . . . . 14
    9.3.  Spoof Detection and Countermeasure . . . . . . . . . . . . 15
  10. Security Considerations  . . . . . . . . . . . . . . . . . . . 15
  11. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 16
  12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 16
    12.1. Normative References . . . . . . . . . . . . . . . . . . . 16
    12.2. Informative References . . . . . . . . . . . . . . . . . . 17



















Hubert & van Mook           Standards Track                     [Page 2]

RFC 5452         DNS Resilience against Forged Answers      January 2009


1.  Introduction

  This document describes several common problems in DNS
  implementations, which, although previously recognized, remain
  largely unsolved.  Besides briefly recapping these problems, this
  document contains rules that, if implemented, make complying
  resolvers vastly more resistant to the attacks described.  The goal
  is to make the existing DNS as secure as possible within the current
  protocol boundaries.

  The words below are aimed at authors of resolvers: it is up to
  operators to decide which nameserver implementation to use, or which
  options to enable.  Operational constraints may override the security
  concerns described below.  However, implementations are expected to
  allow an operator to enable functionality described in this document.

  Almost every transaction on the Internet involves the Domain Name
  System, which is described in [RFC1034], [RFC1035], and beyond.

  Additionally, it has recently become possible to acquire Secure
  Socket Layer/Transport Layer Security (SSL/TLS) certificates with no
  other confirmation of identity than the ability to respond to a
  verification email sent via SMTP ([RFC5321]) -- which generally uses
  DNS for its routing.

  In other words, any party that (temporarily) controls the Domain Name
  System is in a position to reroute most kinds of Internet
  transactions, including the verification steps in acquiring an SSL/
  TLS certificate for a domain.  This in turn means that even
  transactions protected by SSL/TLS could be diverted.

  It is entirely conceivable that such rerouted traffic could be used
  to the disadvantage of Internet users.

  These and other developments have made the security and
  trustworthiness of DNS of renewed importance.  Although the DNS
  community is working hard on finalizing and implementing a
  cryptographically enhanced DNS protocol, steps should be taken to
  make sure that the existing use of DNS is as secure as possible
  within the bounds of the relevant standards.

  It should be noted that the most commonly used resolvers currently do
  not perform as well as possible in this respect, making this document
  of urgent importance.

  A thorough analysis of risks facing DNS can be found in [RFC3833].





Hubert & van Mook           Standards Track                     [Page 3]

RFC 5452         DNS Resilience against Forged Answers      January 2009


  This document expands on some of the risks mentioned in RFC 3833,
  especially those outlined in the sections on "ID Guessing and Query
  Prediction" and "Name Chaining".  Furthermore, it emphasizes a number
  of existing rules and guidelines embodied in the relevant DNS
  protocol specifications.  The following also specifies new
  requirements to make sure the Domain Name System can be relied upon
  until a more secure protocol has been standardized and deployed.

  It should be noted that even when all measures suggested below are
  implemented, protocol users are not protected against third parties
  with the ability to observe, modify, or inject packets in the traffic
  of a resolver.

  For protocol extensions that offer protection against these
  scenarios, see [RFC4033] and beyond.

2.  Requirements and Definitions

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.





Hubert & van Mook           Standards Track                     [Page 4]

RFC 5452         DNS Resilience against Forged Answers      January 2009


     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
  packets.  Once spoofed, a caching server will repeat the data it
  wrongfully accepted, and make its clients contact the wrong, and
  possibly malicious, servers.

  To understand how this process works it is important to know what
  makes a resolver accept a response.

  The following sentence in Section 5.3.3 of [RFC1034] presaged the
  present problem:

    The resolver should be highly paranoid in its parsing of responses.
    It should also check that the response matches the query it sent
    using the ID field in the response.

  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
      a question packet currently waiting for a response.

  2.  The ID field of the reply packet matches that of the question
      packet.

  3.  The response comes from the same network address to which the
      question was sent.

  4.  The response comes in on the same network address, including port
      number, from which the question was sent.

  In general, the first response matching these four conditions is
  accepted.



Hubert & van Mook           Standards Track                     [Page 5]

RFC 5452         DNS Resilience against Forged Answers      January 2009


  If a third party succeeds in meeting the four conditions before the
  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
  "attacker", attempting to spoof in fake data.

  All conditions mentioned above can theoretically be met by a third
  party, with the difficulty being a function of the resolver
  implementation and zone configuration.

4.  Detailed Description of Spoofing Scenarios

  The previous paragraph discussed a number of requirements an attacker
  must match in order to spoof in manipulated (or fake) data.  This
  section discusses the relative difficulties and how implementation-
  defined choices impact the amount of work an attacker has to perform
  to meet said difficulties.

  Some more details can be found in Section 2.2 of [RFC3833].

4.1.  Forcing a Query

  Formally, there is no need for a nameserver to perform service except
  for its operator, its customers, or more generally its users.
  Recently, open recursing nameservers have been used to amplify
  denial-of-service attacks.

  Providing full service enables the third party to send the target
  resolver a query for the domain name it intends to spoof.  On
  receiving this query, and not finding the answer in its cache, the
  resolver will transmit queries to relevant authoritative nameservers.
  This opens up a window of opportunity for getting fake answer data
  accepted.

  Queries may however be forced indirectly, for example, by inducing a
  mail server to perform DNS lookups.

  Some operators restrict access by not recursing for unauthorized IP
  addresses, but only respond with data from the cache.  This makes
  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
  determine a time range when this will happen, because nameservers
  helpfully publish the decreasing time to live (TTL) of entries in the
  cache, which indicate from which absolute time onwards a new query
  could be sent to refresh the expired entry.

  The time to live of the target domain name's RRSets determines how
  often a window of opportunity is available, which implies that a
  short TTL makes spoofing far more viable.



Hubert & van Mook           Standards Track                     [Page 6]

RFC 5452         DNS Resilience against Forged Answers      January 2009


  Note that the attacker might very well have authorized access to the
  target resolver by virtue of being a customer or employee of its
  operator.  In addition, access may be enabled through the use of
  reflectors as outlined in [RFC5358].

4.2.  Matching the Question Section

  DNS packets, both queries and responses, contain a question section.
  Incoming responses should be verified to have a question section that
  is equivalent to that of the outgoing query.

4.3.  Matching the ID Field

  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
  require on average 32768 attempts to guess.  Anecdotal evidence
  suggests there are implementations utilizing only 14 bits, meaning on
  average 8192 attempts will suffice.

  Additionally, if the target nameserver can be forced into having
  multiple identical queries outstanding, the "Birthday Attack"
  phenomenon means that any fake data sent by the attacker is matched
  against multiple outstanding queries, significantly raising the
  chance of success.  Further details in Section 5.

4.4.  Matching the Source Address of the Authentic Response

  It should be noted that meeting this condition entails being able to
  transmit packets on behalf of the address of the authoritative
  nameserver.  While two Best Current Practice documents ([RFC2827] and
  [RFC3013] specifically) direct Internet access providers to prevent
  their customers from assuming IP addresses that are not assigned to
  them, these recommendations are not universally (nor even widely)
  implemented.

  Many zones have two or three authoritative nameservers, which make
  matching the source address of the authentic response very likely
  with even a naive choice having a double digit success rate.

  Most recursing nameservers store relative performance indications of
  authoritative nameservers, which may make it easier to predict which
  nameserver would originally be queried -- the one most likely to
  respond the quickest.

  Generally, this condition requires at most two or three attempts
  before it is matched.





Hubert & van Mook           Standards Track                     [Page 7]

RFC 5452         DNS Resilience against Forged Answers      January 2009


4.5.  Matching the Destination Address and Port of the Authentic
     Response

  Note that the destination address of the authentic response is the
  source address of the original query.

  The actual address of a recursing nameserver is generally known; the
  port used for asking questions is harder to determine.  Most current
  resolvers pick an arbitrary port at startup (possibly at random) and
  use this for all outgoing queries.  In quite a number of cases, the
  source port of outgoing questions is fixed at the traditional DNS
  assigned server port number of 53.

  If the source port of the original query is random, but static, any
  authoritative nameserver under observation by the attacker can be
  used to determine this port.  This means that matching this
  conditions often requires no guess work.

  If multiple ports are used for sending queries, this enlarges the
  effective ID space by a factor equal to the number of ports used.

  Less common resolving servers choose a random port per outgoing
  query.  If this strategy is followed, this port number can be
  regarded as an additional ID field, again containing up to 16 bits.

  If the maximum ports range is utilized, on average, around 32256
  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, leaving 64512 options.

  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.
  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 short time and migrate to a different port.  Only in the case of a
  high-volume resolver is it possible that an application wanting a
  particular UDP port suffers a long term block-out.

  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
  the correct address, offering no additional security.

4.6.  Have the Response Arrive before the Authentic Response

  Once any packet has matched the previous four conditions (plus
  possible additional conditions), no further responses are generally
  accepted.




Hubert & van Mook           Standards Track                     [Page 8]

RFC 5452         DNS Resilience against Forged Answers      January 2009


  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
  order of at most 100 ms (depending on the network distance to the
  authentic authoritative nameserver).

  This time period can be far longer if the authentic authoritative
  nameservers are (briefly) overloaded by queries, perhaps by the
  attacker.

5.  Birthday Attacks

  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
  members of the group share a birthday.

  An attacker can benefit from this exact phenomenon if it can force
  the target resolver to have multiple equivalent (identical QNAME,
  QTYPE, and QCLASS) outstanding queries at any one time to the same
  authoritative server.

  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
  for that single domain.  Compared to the birthday analogy above, of
  the group composed of queries and responses, the chance of having any
  of these share an ID rises quickly.

  As long as small numbers of queries are sent out, the chance of
  successfully spoofing a response rises linearly with the number of
  outstanding queries for the exact domain and nameserver.

  For larger numbers, this effect is less pronounced.

  More details are available in US-CERT [vu-457875].

6.  Accepting Only In-Domain Records

  Responses from authoritative nameservers often contain information
  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
  responses a mail exchanger in another domain, and additionally the IP
  address of this mail exchanger.

  If accepted uncritically, the resolver stands the chance of accepting
  data from an untrusted source.  Care must be taken to only accept
  data if it is known that the originator is authoritative for the
  QNAME or a parent of the QNAME.





Hubert & van Mook           Standards Track                     [Page 9]

RFC 5452         DNS Resilience against Forged Answers      January 2009


  One very simple way to achieve this is to only accept data if it is
  part of the domain for which the query was intended.

7.  Combined Difficulty

  Given a known or static destination port, matching ID field, the
  source and destination address requires on average in the order of 2
  * 2^15 = 65000 packets, assuming a zone has 2 authoritative
  nameservers.

  If the window of opportunity available is around 100 ms, as assumed
  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
  first attempt.

  A realistic minimal DNS response consists of around 80 bytes,
  including IP headers, making the packet rate above correspond to a
  respectable burst of 416 Mbit/s.

  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.

  These numbers change when a window of a full second is assumed,
  possibly because the arrival of the authentic response can be
  prevented by overloading the bona fide authoritative hosts with decoy
  queries.  This reduces the needed bandwidth to 42 Mbit/s.

  If, in addition, the attacker is granted more than a single chance
  and allowed up to 60 minutes of work on a domain with a time to live
  of 300 seconds, a meager 4 Mbit/s suffices for a 50% chance at
  getting fake data accepted.  Once equipped with a longer time,
  matching condition 1 mentioned above is straightforward -- any
  popular domain will have been queried a number of times within this
  hour, and given the short TTL, this would lead to queries to
  authoritative nameservers, opening windows of opportunity.

7.1.  Symbols Used in Calculation

  Assume the following symbols are used:

  I: Number distinct IDs available (maximum 65536)

  P: Number of ports used (maximum around 64000 as ports under 1024 are
     not always available, but often 1)

  N: Number of authoritative nameservers for a domain (averages around
     2.5)




Hubert & van Mook           Standards Track                    [Page 10]

RFC 5452         DNS Resilience against Forged Answers      January 2009


  F: Number of "fake" packets sent by the attacker

  R: Number of packets sent per second by the attacker

  W: Window of opportunity, in seconds.  Bounded by the response time
     of the authoritative servers (often 0.1s)

  D: Average number of identical outstanding queries of a resolver
     (typically 1, see Section 5)

  A: Number of attempts, one for each window of opportunity

7.2.  Calculation

  The probability of spoofing a resolver is equal to the amount of fake
  packets that arrive within the window of opportunity, divided by the
  size of the problem space.

  When the resolver has 'D' multiple identical outstanding queries,
  each fake packet has a proportionally higher chance of matching any
  of these queries.  This assumption only holds for small values of
  'D'.

  In symbols, if the probability of being spoofed is denoted as P_s:

             D * F
  P_s =    ---------
           N * P * I

  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
  needed.

  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
  candidates to be accepted is:

                         D * R * W
  F = R * W  ->   P_s  = ---------
                         N * P * I

  Finally, to calculate the combined chance 'P_cs' of spoofing over 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
  domain expires.  This means that the number of attempts 'A' is equal
  to 'T / TTL'.





Hubert & van Mook           Standards Track                    [Page 11]

RFC 5452         DNS Resilience against Forged Answers      January 2009


  To calculate the combined chance of at least one success, the
  following formula holds:

                                                       (T / TTL)
                        A          (       D * R * W )
  P_cs = 1 - ( 1 - P_s )    =  1 - ( 1  -  --------- )
                                   (       N * P * I )

  When common numbers (as listed above) for D, W, N, P, and I are
  inserted, this formula reduces to:

                              (T / TTL)
             (         R    )
  P_cs = 1 - ( 1 -  ------- )
             (      1638400 )

  From this formula, it can be seen that, if the nameserver
  implementation is unchanged, only raising the TTL offers protection.
  Raising N, the number of authoritative nameservers, is not feasible
  beyond a small number.

  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'
  above, the response time of the authoritative server.

  This last case also holds for spoofing techniques that do not rely on
  TTL expiry, but use repeated and changing queries.

8.  Discussion

  The calculations above indicate the relative ease with which DNS data
  can be spoofed.  For example, using the formula derived earlier on an
  RRSet with a 3600 second TTL, an attacker sending 7000 fake response
  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.

  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.

  For some classes of attacks, the effective TTL is near zero, as noted
  above.

  Note that the attacks mentioned above can be detected by watchful
  server operators - an unexpected incoming stream of 4.5 Mbit/s of
  packets might be noticed.

  An important assumption however in these calculations is a known or
  static destination port of the authentic response.



Hubert & van Mook           Standards Track                    [Page 12]

RFC 5452         DNS Resilience against Forged Answers      January 2009


  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
  need in excess of 285Gb/s to achieve similar success rates.

  Such bandwidth is not generally available, nor is it expected to be
  so in the foreseeable future.

  Note that some firewalls may need reconfiguring if they are currently
  set up to only allow outgoing queries from a single DNS source port.

8.1.  Repetitive Spoofing Attempts for a Single Domain Name

  Techniques are available to use an effectively infinite number of
  queries to achieve a desired spoofing goal.  In the math above, this
  reduces the effective TTL to 0.

  If such techniques are employed, using the same 7000 packets/s rate
  mentioned above, and using 1 source port, the spoofing chance rises
  to 50% within 7 seconds.

  If 64000 ports are used, as recommended in this document, using the
  same query rate, the 50% level is reached after around 116 hours.

9.  Forgery Countermeasures

9.1.  Query Matching Rules

  A resolver implementation MUST match responses to all of the
  following attributes of the query:

  o  Source address against query destination address

  o  Destination address against query source address

  o  Destination port against query source port

  o  Query ID

  o  Query name

  o  Query class and type

  before applying DNS trustworthiness rules (see Section 5.4.1 of
  [RFC2181]).

  A mismatch and the response MUST be considered invalid.





Hubert & van Mook           Standards Track                    [Page 13]

RFC 5452         DNS Resilience against Forged Answers      January 2009


9.2.  Extending the Q-ID Space by Using Ports and Addresses

  Resolver implementations MUST:

  o  Use an unpredictable source port for outgoing queries from the
     range of available ports (53, or 1024 and above) that is as large
     as possible and practicable;

  o  Use multiple different source ports simultaneously in case of
     multiple outstanding queries;

  o  Use an unpredictable query ID for outgoing queries, utilizing the
     full range available (0-65535).

  Resolvers that have multiple IP addresses SHOULD use them in an
  unpredictable manner for outgoing queries.

  Resolver implementations SHOULD provide means to avoid usage of
  certain ports.

  Resolvers SHOULD favor authoritative nameservers with which a trust
  relation has been established; stub-resolvers SHOULD be able to use
  Transaction Signature (TSIG) ([RFC2845]) or IPsec ([RFC4301]) when
  communicating with their recursive resolver.

  In case a cryptographic verification of response validity is
  available (TSIG, SIG(0)), resolver implementations MAY waive above
  rules, and rely on this guarantee instead.

  Proper unpredictability can be achieved by employing a high quality
  (pseudo-)random generator, as described in [RFC4086].

9.2.1.  Justification and Discussion

  Since an attacker can force a full DNS resolver to send queries to
  the attacker's own nameservers, any constant or sequential state held
  by such a resolver can be measured, and it must not be trivially easy
  to reverse engineer the resolver's internal state in a way that
  allows low-cost, high-accuracy prediction of future state.

  A full DNS resolver with only one or a small number of upstream-
  facing endpoints is effectively using constants for IP source address
  and UDP port number, and these are very predictable by potential
  attackers, and must therefore be avoided.

  A full DNS resolver that uses a simple increment to get its next DNS
  query ID is likewise very predictable and so very spoofable.




Hubert & van Mook           Standards Track                    [Page 14]

RFC 5452         DNS Resilience against Forged Answers      January 2009


  Finally, weak random number generators have been shown to expose
  their internal state, such that an attacker who witnesses several
  sequential "random" values can easily predict the next ones.  A
  crypto-strength random number generator is one whose output cannot be
  predicted no matter how many successive values are witnessed.

9.3.  Spoof Detection and Countermeasure

  If a resolver detects that an attempt is being made to spoof it,
  perhaps by discovering that many packets fail the criteria as
  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
  resilient against forgery by third parties.

10.  Security Considerations

  This document provides clarification of the DNS specification to
  decrease the probability that DNS responses can be successfully
  forged.  Recommendations found above should be considered
  complementary to possible cryptographical enhancements of the domain
  name system, which protect against a larger class of attacks.

  This document recommends the use of UDP source port number
  randomization to extend the effective DNS transaction ID beyond the
  available 16 bits.

  A resolver that does not implement the recommendations outlined above
  can easily be forced to accept spoofed responses, which in turn are
  passed on to client computers -- misdirecting (user) traffic to
  possibly malicious entities.

  This document directly impacts the security of the Domain Name
  System, implementers are urged to follow its recommendations.

  Most security considerations can be found in Sections 4 and 5, while
  proposed countermeasures are described in Section 9.

  For brevity's sake, in lieu of repeating the security considerations
  references, the reader is referred to these sections.

  Nothing in this document specifies specific algorithms for operators
  to use; it does specify algorithms implementations SHOULD or MUST
  support.

  It should be noted that the effects of source port randomization may
  be dramatically reduced by NAT devices that either serialize or limit
  in volume the UDP source ports used by the querying resolver.




Hubert & van Mook           Standards Track                    [Page 15]

RFC 5452         DNS Resilience against Forged Answers      January 2009


  DNS recursive servers sitting behind at NAT or a statefull firewall
  may consume all available NAT translation entries/ports when
  operating under high query load.  Port randomization will cause
  translation entries to be consumed faster than with fixed query port.

  To avoid this, NAT boxes and statefull firewalls can/should purge
  outgoing DNS query translation entries 10-17 seconds after the last
  outgoing query on that mapping was sent.  [RFC4787]-compliant devices
  need to treat UDP messages with port 53 differently than most other
  UDP protocols.

  To minimize the potential that port/state exhaustion attacks can be
  staged from the outside, it is recommended that services that
  generate a number of DNS queries for each connection should be rate
  limited.  This applies in particular to email servers.

11.  Acknowledgments

  Source port randomization in DNS was first implemented and possibly
  invented by Dan J. Bernstein.

  Although any mistakes remain our own, the authors gratefully
  acknowledge the help and contributions of:
     Stephane Bortzmeyer
     Alfred Hoenes
     Peter Koch
     Sean Leach
     Norbert Sendetzky
     Paul Vixie
     Florian Weimer
     Wouter Wijngaards
     Dan Wing

12.  References

12.1.  Normative References

  [RFC1034]    Mockapetris, P., "Domain names - concepts and
               facilities", STD 13, RFC 1034, November 1987.

  [RFC1035]    Mockapetris, P., "Domain names - implementation and
               specification", STD 13, RFC 1035, November 1987.

  [RFC2119]    Bradner, S., "Key words for use in RFCs to Indicate
               Requirement Levels", BCP 14, RFC 2119, March 1997.

  [RFC2181]    Elz, R. and R. Bush, "Clarifications to the DNS
               Specification", RFC 2181, July 1997.



Hubert & van Mook           Standards Track                    [Page 16]

RFC 5452         DNS Resilience against Forged Answers      January 2009


  [RFC2827]    Ferguson, P. and D. Senie, "Network Ingress Filtering:
               Defeating Denial of Service Attacks which employ IP
               Source Address Spoofing", BCP 38, RFC 2827, May 2000.

  [RFC2845]    Vixie, P., Gudmundsson, O., Eastlake, D., and B.
               Wellington, "Secret Key Transaction Authentication for
               DNS (TSIG)", RFC 2845, May 2000.

  [RFC3013]    Killalea, T., "Recommended Internet Service Provider
               Security Services and Procedures", BCP 46, RFC 3013,
               November 2000.

  [RFC4033]    Arends, R., Austein, R., Larson, M., Massey, D., and S.
               Rose, "DNS Security Introduction and Requirements",
               RFC 4033, March 2005.

  [RFC4086]    Eastlake, D., Schiller, J., and S. Crocker, "Randomness
               Requirements for Security", BCP 106, RFC 4086,
               June 2005.

  [RFC5321]    Klensin, J., "Simple Mail Transfer Protocol", RFC 5321,
               October 2008.

12.2.  Informative References

  [RFC1123]    Braden, R., "Requirements for Internet Hosts -
               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
               Internet Protocol", RFC 4301, December 2005.

  [RFC4787]    Audet, F. and C. Jennings, "Network Address Translation
               (NAT) Behavioral Requirements for Unicast UDP", BCP 127,
               RFC 4787, January 2007.

  [RFC5358]    Damas, J. and F. Neves, "Preventing Use of Recursive
               Nameservers in Reflector Attacks", BCP 140, RFC 5358,
               October 2008.

  [vu-457875]  United States CERT, "Various DNS service implementations
               generate multiple simultaneous queries for the same
               resource record", VU 457875, November 2002.






Hubert & van Mook           Standards Track                    [Page 17]

RFC 5452         DNS Resilience against Forged Answers      January 2009


Authors' Addresses

  Bert Hubert
  Netherlabs Computer Consulting BV.
  Braillelaan 10
  Rijswijk (ZH)  2289 CM
  The Netherlands

  EMail: [email protected]


  Remco van Mook
  Equinix
  Auke Vleerstraat 1
  Enschede  7521 PE
  The Netherlands

  EMail: [email protected]

































Hubert & van Mook           Standards Track                    [Page 18]