diff options
Diffstat (limited to 'doc/rfc/rfc9520.txt')
-rw-r--r-- | doc/rfc/rfc9520.txt | 734 |
1 files changed, 734 insertions, 0 deletions
diff --git a/doc/rfc/rfc9520.txt b/doc/rfc/rfc9520.txt new file mode 100644 index 0000000..645fb7c --- /dev/null +++ b/doc/rfc/rfc9520.txt @@ -0,0 +1,734 @@ + + + + +Internet Engineering Task Force (IETF) D. Wessels +Request for Comments: 9520 W. Carroll +Updates: 2308, 4035, 4697 M. Thomas +Category: Standards Track Verisign +ISSN: 2070-1721 December 2023 + + + Negative Caching of DNS Resolution Failures + +Abstract + + In the DNS, resolvers employ caching to reduce both latency for end + users and load on authoritative name servers. The process of + resolution may result in one of three types of responses: (1) a + response containing the requested data, (2) a response indicating the + requested data does not exist, or (3) a non-response due to a + resolution failure in which the resolver does not receive any useful + information regarding the data's existence. This document concerns + itself only with the third type. + + RFC 2308 specifies requirements for DNS negative caching. There, + caching of TYPE 2 responses is mandatory and caching of TYPE 3 + responses is optional. This document updates RFC 2308 to require + negative caching for DNS resolution failures. + + RFC 4035 allows DNSSEC validation failure caching. This document + updates RFC 4035 to require caching for DNSSEC validation failures. + + RFC 4697 prohibits aggressive requerying for NS records at a failed + zone's parent zone. This document updates RFC 4697 to expand this + requirement to all query types and to all ancestor zones. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc9520. + +Copyright Notice + + Copyright (c) 2023 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 + (https://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. Code Components extracted from this document must + include Revised BSD License text as described in Section 4.e of the + Trust Legal Provisions and are provided without warranty as described + in the Revised BSD License. + +Table of Contents + + 1. Introduction + 1.1. Motivation + 1.2. Related Work + 1.3. Terminology + 2. Conditions That Lead to DNS Resolution Failures + 2.1. SERVFAIL Responses + 2.2. REFUSED Responses + 2.3. Timeouts and Unreachable Servers + 2.4. Delegation Loops + 2.5. Alias Loops + 2.6. DNSSEC Validation Failures + 2.7. FORMERR Responses + 3. Requirements for Caching DNS Resolution Failures + 3.1. Retries and Timeouts + 3.2. Caching + 3.3. Requerying Delegation Information + 3.4. DNSSEC Validation Failures + 4. IANA Considerations + 5. Security Considerations + 6. Privacy Considerations + 7. References + 7.1. Normative References + 7.2. Informative References + Acknowledgments + Authors' Addresses + +1. Introduction + + Caching has always been a fundamental component of DNS resolution on + the Internet. For example, [RFC0882] states: + + | The sheer size of the database and frequency of updates suggest + | that it must be maintained in a distributed manner, with local + | caching to improve performance. + + The early DNS RFCs ([RFC0882], [RFC0883], [RFC1034], and [RFC1035]) + primarily discuss caching in the context of what [RFC2308] calls + "positive responses", that is, when the response includes the + requested data. In this case, a TTL is associated with each Resource + Record (RR) in the response. Resolvers can cache and reuse the data + until the TTL expires. + + Section 4.3.4 of [RFC1034] describes negative response caching, but + notes it is optional and only talks about name errors (NXDOMAIN). + This is the origin of using the SOA MINIMUM field as a negative + caching TTL. + + [RFC2308] updated [RFC1034] to specify new requirements for DNS + negative caching, including making it mandatory for caching resolvers + to cache name error (NXDOMAIN) and no data (NODATA) responses when an + SOA record is available to provide a TTL. [RFC2308] further + specified optional negative caching for two DNS resolution failure + cases: server failure and dead/unreachable servers. + + This document updates [RFC2308] to require negative caching of all + DNS resolution failures and provides additional examples of + resolution failures, [RFC4035] to require caching for DNSSEC + validation failures, as well as [RFC4697] to expand the scope of + prohibiting aggressive requerying for NS records at a failed zone's + parent zone to all query types and to all ancestor zones. + +1.1. Motivation + + Operators of DNS services have known for some time that recursive + resolvers become more aggressive when they experience resolution + failures. A number of different anecdotes, experiments, and + incidents support this claim. + + In December 2009, a secondary server for a number of in-addr.arpa + subdomains saw its traffic suddenly double, and queries of type + DNSKEY in particular increase by approximately two orders of + magnitude, coinciding with a DNSSEC key rollover by the zone operator + [DNSSEC-ROLLOVER]. This predated a signed root zone, and an + operating system vendor was providing non-root trust anchors to the + recursive resolver, which became out of date following the rollover. + Unable to validate responses for the affected in-addr.arpa zones, + recursive resolvers aggressively retried their queries. + + In 2016, the Internet infrastructure company Dyn experienced a large + attack that impacted many high-profile customers. As documented in a + technical presentation detailing the attack (see [RETRY-STORM]), Dyn + staff wrote: + + | At this point we are now experiencing botnet attack traffic and + | what is best classified as a "retry storm" + | + | Looking at certain large recursive platforms > 10x normal volume + + In 2018, the root zone Key Signing Key (KSK) was rolled over + [KSK-ROLLOVER]. Throughout the rollover period, the root servers + experienced a significant increase in DNSKEY queries. Before the + rollover, a.root-servers.net and j.root-servers.net together received + about 15 million DNSKEY queries per day. At the end of the + revocation period, they received 1.2 billion per day: an 80x + increase. Removal of the revoked key from the zone caused DNSKEY + queries to drop to post-rollover but pre-revoke levels, indicating + there is still a population of recursive resolvers using the previous + root trust anchor and aggressively retrying DNSKEY queries. + + In 2021, Verisign researchers used botnet query traffic to + demonstrate that certain large public recursive DNS services exhibit + very high query rates when all authoritative name servers for a zone + return refused (REFUSED) or server failure (SERVFAIL) responses (see + [BOTNET]). When the authoritative servers were configured normally, + query rates for a single botnet domain averaged approximately 50 + queries per second. However, with the servers configured to return + SERVFAIL, the query rate increased to 60,000 per second. + Furthermore, increases were also observed at the root and Top-Level + Domain (TLD) levels, even though delegations at those levels were + unchanged and continued operating normally. + + Later that same year, on October 4, Facebook experienced a widespread + and well-publicized outage [FB-OUTAGE]. During the 6-hour outage, + none of Facebook's authoritative name servers were reachable and did + not respond to queries. Recursive name servers attempting to resolve + Facebook domains experienced timeouts. During this time, query + traffic on the .COM/.NET infrastructure increased from 7,000 to + 900,000 queries per second [OUTAGE-RESOLVER]. + +1.2. Related Work + + [RFC2308] describes negative caching for four types of DNS queries + and responses: name errors, no data, server failures, and dead/ + unreachable servers. It places the strongest requirements on + negative caching for name errors and no data responses, while server + failures and dead servers are left as optional. + + [RFC4697] is a Best Current Practice that documents observed + resolution misbehaviors. It describes a number of situations that + can lead to excessive queries from recursive resolvers, including + requerying for delegation data, lame servers, responses blocked by + firewalls, and records with zero TTL. [RFC4697] makes a number of + recommendations, varying from "SHOULD" to "MUST". + + [THUNDERING-HERD] describes "The DNS thundering herd problem" as a + situation arising when cached data expires at the same time for a + large number of users. Although that document is not focused on + negative caching, it does describe the benefits of combining multiple + identical queries to upstream name servers. That is, when a + recursive resolver receives multiple queries for the same name, + class, and type that cannot be answered from cached data, it should + combine or join them into a single upstream query rather than emit + repeated identical upstream queries. + + [RFC5452], "Measures for Making DNS More Resilient against Forged + Answers", includes a section that describes the phenomenon known as + "Birthday Attacks". Here, again, the problem arises when a recursive + resolver emits multiple identical upstream queries. Multiple + outstanding queries make it easier for an attacker to guess and + correctly match some of the DNS message parameters, such as the port + number and ID field. This situation is further exacerbated in the + case of timeout-based resolution failures. Of course, DNSSEC is a + suitable defense to spoofing attacks. + + [RFC8767] describes "Serving Stale Data to Improve DNS Resiliency". + This permits a recursive resolver to return possibly stale data when + it is unable to refresh cached, expired data. It introduces the idea + of a failure recheck timer and says: + + | Attempts to refresh from non-responsive or otherwise failing + | authoritative nameservers are recommended to be done no more + | frequently than every 30 seconds. + +1.3. Terminology + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and + "OPTIONAL" in this document are to be interpreted as described in + BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all + capitals, as shown here. + + DNS transport: In this document, "DNS transport" means a protocol + used to transport DNS messages between a client and a server. + This includes "classic DNS" transports, i.e., DNS-over-UDP and + DNS-over-TCP [RFC1034] [RFC7766], as well as newer encrypted DNS + transports, such as DNS-over-TLS [RFC7858], DNS-over-HTTPS + [RFC8484], DNS-over-QUIC [RFC9250], and similar communication of + DNS messages using other protocols. Note: at the time of writing, + not all DNS transports are standardized for all types of servers + but may become standardized in the future. + +2. Conditions That Lead to DNS Resolution Failures + + A DNS resolution failure occurs when none of the servers available to + a resolver client provide any useful response data for a particular + query name, type, and class. A response is considered useful when it + provides either the requested data, a referral to a descendant zone, + or an indication that no data exists at the given name. + + It is common for resolvers to have multiple servers from which to + choose for a particular query. For example, in the case of stub-to- + recursive, the stub resolver may be configured with multiple + recursive resolver addresses. In the case of recursive-to- + authoritative, a given zone usually has more than one name server (NS + record), each of which can have multiple IP addresses and multiple + DNS transports. + + Nothing in this document prevents a resolver from retrying a query at + a different server or the same server over a different DNS transport. + In the case of timeouts, a resolver can retry the same server and DNS + transport a limited number of times. + + If any one of the available servers provides a useful response, then + it is not considered a resolution failure. However, if none of the + servers for a given query tuple <name, type, class> provide a useful + response, the result is a resolution failure. + + Note that NXDOMAIN and NOERROR/NODATA responses are not conditions + for resolution failure. In these cases, the server is providing a + useful response, indicating either that a name does not exist or that + no data of the requested type exists at the name. These negative + responses can be cached as described in [RFC2308]. + + The remainder of this section describes a number of different + conditions that can lead to resolution failure. This section is not + exhaustive. Additional conditions may be expected to cause similar + resolution failures. + +2.1. SERVFAIL Responses + + Server failure is defined in [RFC1035] as: "The name server was + unable to process this query due to a problem with the name server." + A server failure is signaled by setting the RCODE field to SERVFAIL. + + Authoritative servers return SERVFAIL when they don't have any valid + data for a zone. For example, a secondary server has been configured + to serve a particular zone but is unable to retrieve or refresh the + zone data from the primary server. + + Recursive servers return SERVFAIL in response to a number of + different conditions, including many described below. + + Although the extended DNS errors method exists "primarily to extend + SERVFAIL to provide additional information," it "does not change the + processing of RCODEs" [RFC8914]. This document operates at the level + of resolution failure and does not concern particular causes. + +2.2. REFUSED Responses + + A name server returns a message with the RCODE field set to REFUSED + when it refuses to process the query, e.g., for policy or other + reasons [RFC1035]. + + Authoritative servers generally return REFUSED when processing a + query for which they are not authoritative. For example, a server + that is configured to be authoritative for only the example.net zone + may return REFUSED in response to a query for example.com. + + Recursive servers generally return REFUSED for query sources that do + not match configured access control lists. For example, a server + that is configured to allow queries from only 2001:db8:1::/48 may + return REFUSED in response to a query from 2001:db8:5::1. + +2.3. Timeouts and Unreachable Servers + + A timeout occurs when a resolver fails to receive any response from a + server within a reasonable amount of time. Additionally, a DNS + transport may more quickly indicate lack of reachability in a way + that wouldn't be considered a timeout: for example, an ICMP port + unreachable message, a TCP "connection refused" error, or a TLS + handshake failure. [RFC2308] refers to these conditions collectively + as "dead / unreachable servers". + + Note that resolver implementations may have two types of timeouts: a + smaller timeout that might trigger a query retry and a larger timeout + after which the server is considered unresponsive. Section 3.1 + discusses the requirements for resolvers when retrying queries. + + Timeouts can present a particular problem for negative caching, + depending on how the resolver handles multiple outstanding queries + for the same <query name, type, class> tuple. For example, consider + a very popular website in a zone whose name servers are all + unresponsive. A recursive resolver might receive tens or hundreds of + queries per second for that website. If the recursive server + implementation joins these outstanding queries together, then it only + sends one recursive-to-authoritative query for the numerous pending + stub-to-recursive queries. However, if the implementation does not + join outstanding queries together, then it sends one recursive-to- + authoritative query for each stub-to-recursive query. If the + incoming query rate is high and the timeout is large, this might + result in hundreds or thousands of recursive-to-authoritative queries + while waiting for an authoritative server to time out. + + A recursive resolver that does not join outstanding queries together + is more susceptible to Birthday Attacks ([RFC5452], Section 5), + especially when those queries result in timeouts. + +2.4. Delegation Loops + + A delegation loop, or cycle, can occur when one domain utilizes name + servers in a second domain, and the second domain uses name servers + in the first. For example: + + FOO.EXAMPLE. NS NS1.EXAMPLE.COM. + FOO.EXAMPLE. NS NS2.EXAMPLE.COM. + + EXAMPLE.COM. NS NS1.FOO.EXAMPLE. + EXAMPLE.COM. NS NS2.FOO.EXAMPLE. + + In this example, no names under foo.example or example.com can be + resolved because of the delegation loop. Note that a delegation loop + may involve more than two domains. A resolver that does not detect + delegation loops may generate DDoS-levels of attack traffic to + authoritative name servers, as documented in the TsuNAME + vulnerability [TsuNAME]. + +2.5. Alias Loops + + An alias loop, or cycle, can occur when one CNAME or DNAME RR refers + to a second name, which, in turn, is specified as an alias for the + first. For example: + + APP.FOO.EXAMPLE. CNAME APP.EXAMPLE.NET. + APP.EXAMPLE.NET. CNAME APP.FOO.EXAMPLE. + + The need to detect CNAME loops has been known since at least + [RFC1034], which states in Section 3.6.2: + + | Of course, by the robustness principle, domain software should not + | fail when presented with CNAME chains or loops; CNAME chains + | should be followed and CNAME loops signalled as an error. + +2.6. DNSSEC Validation Failures + + For zones that are signed with DNSSEC, a resolution failure can occur + when a security-aware resolver believes it should be able to + establish a chain of trust for an RRset but is unable to do so, + possibly after trying multiple authoritative name servers. DNSSEC + validation failures may be due to signature mismatch, missing DNSKEY + RRs, problems with denial-of-existence records, clock skew, or other + reasons. + + Section 4.7 of [RFC4035] already discusses the requirements and + reasons for caching validation failures. Section 3.4 of this + document strengthens those requirements. + +2.7. FORMERR Responses + + A name server returns a message with the RCODE field set to FORMERR + when it is unable to interpret the query [RFC1035]. FORMERR + responses are often associated with problems processing Extension + Mechanisms for DNS (EDNS(0)) [RFC6891]. Authoritative servers may + return FORMERR when they do not implement EDNS(0), or when EDNS(0) + option fields are malformed, but not for unknown EDNS(0) options. + + Upon receipt of a FORMERR response, some recursive clients will retry + their queries without EDNS(0), while others will not. Nonetheless, + resolution failures from FORMERR responses are rare. + +3. Requirements for Caching DNS Resolution Failures + +3.1. Retries and Timeouts + + A resolver MUST NOT retry a given query to a server address over a + given DNS transport more than twice (i.e., three queries in total) + before considering the server address unresponsive over that DNS + transport for that query. + + A resolver MAY retry a given query over a different DNS transport to + the same server if it has reason to believe the DNS transport is + available for that server and is compatible with the resolver's + security policies. + + This document does not place any requirements on how long an + implementation should wait before retrying a query (aka a timeout + value), which may be implementation or configuration dependent. It + is generally expected that typical timeout values range from 3 to 30 + seconds. + +3.2. Caching + + Resolvers MUST implement a cache for resolution failures. The + purpose of this cache is to eliminate repeated upstream queries that + cannot be resolved. When an incoming query matches a cached + resolution failure, the resolver MUST NOT send any corresponding + outgoing queries until after the cache entries expire. + + Implementation details for such a cache are not specified in this + document. The implementation might cache different resolution + failure conditions differently. For example, DNSSEC validation + failures might be cached according to the queried name, class, and + type, whereas unresponsive servers might be cached only according to + the server's IP address. Developers should document their + implementation choices so that operators know what behaviors to + expect when resolution failures are cached. + + Resolvers MUST cache resolution failures for at least 1 second. + Resolvers MAY cache different types of resolution failures for + different (i.e., longer) amounts of time. Consistent with [RFC2308], + resolution failures MUST NOT be cached for longer than 5 minutes. + + The minimum cache duration SHOULD be configurable by the operator. A + longer cache duration for resolution failures will reduce the + processing burden from repeated queries but may also increase the + time to recover from transitory issues. + + Resolvers SHOULD employ an exponential or linear backoff algorithm to + increase the cache duration for persistent resolution failures. For + example, the initial time for negatively caching a resolution failure + might be set to 5 seconds and increased after each retry that results + in another resolution failure, up to a configurable maximum, not to + exceed the 5-minute upper limit. + + Notwithstanding the above, resolvers SHOULD implement measures to + mitigate resource exhaustion attacks on the failed resolution cache. + That is, the resolver should limit the amount of memory and/or + processing time devoted to this cache. + +3.3. Requerying Delegation Information + + Section 2.1 of [RFC4697] identifies circumstances in which: + + | ...every name server in a zone's NS RRSet is unreachable (e.g., + | during a network outage), unavailable (e.g., the name server + | process is not running on the server host), or misconfigured + | (e.g., the name server is not authoritative for the given zone, + | also known as "lame"). + + It prohibits unnecessary "aggressive requerying" to the parent of a + non-responsive zone by sending NS queries. + + The problem of aggressive requerying to parent zones is not limited + to queries of type NS. This document updates the requirement from + Section 2.1.1 of [RFC4697] to apply more generally: + + | Upon encountering a zone whose name servers are all non- + | responsive, a resolver MUST cache the resolution failure. + | Furthermore, the resolver MUST limit queries to the non-responsive + | zone's parent zone (and to other ancestor zones) just as it would + | limit subsequent queries to the non-responsive zone. + +3.4. DNSSEC Validation Failures + + Section 4.7 of [RFC4035] states: + + | To prevent such unnecessary DNS traffic, security-aware resolvers + | MAY cache data with invalid signatures, with some restrictions. + + This document updates [RFC4035] with the following, stronger, + requirement: + + | To prevent such unnecessary DNS traffic, security-aware resolvers + | MUST cache DNSSEC validation failures, with some restrictions. + + One of the restrictions mentioned in [RFC4035] is to use a small TTL + when caching data that fails DNSSEC validation. This is, in part, + because the provided TTL cannot be trusted. The advice from + Section 3.2 herein can be used as guidance on TTLs for caching DNSSEC + validation failures. + +4. IANA Considerations + + This document has no IANA actions. + +5. Security Considerations + + As noted in Section 3.2, an attacker might attempt a resource + exhaustion attack by sending queries for a large number of names and/ + or types that result in resolution failure. Resolvers SHOULD + implement measures to protect themselves and bound the amount of + memory devoted to caching resolution failures. + + A cache poisoning attack (see Section 2.2 of [RFC7873]) resulting in + denial of service may be possible because failure messages cannot be + signed. An attacker might generate queries and send forged failure + messages, causing the resolver to cease sending queries to the + authoritative name server (see Section 2.6 of [RFC4732] for a similar + "data corruption attack" and Section 5.2 of [TuDoor] for a "DNSDoS + attack"). However, this would require continued spoofing throughout + the backoff period and repeated attacks due to the 5-minute cache + limit. As in Section 4.1.12 of [RFC4686], this attack's effects + would be "localized and of limited duration". + +6. Privacy Considerations + + This specification has no impact on user privacy. + +7. References + +7.1. Normative References + + [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", + STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, + <https://www.rfc-editor.org/info/rfc1034>. + + [RFC1035] Mockapetris, P., "Domain names - implementation and + specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, + November 1987, <https://www.rfc-editor.org/info/rfc1035>. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, + DOI 10.17487/RFC2119, March 1997, + <https://www.rfc-editor.org/info/rfc2119>. + + [RFC2308] Andrews, M., "Negative Caching of DNS Queries (DNS + NCACHE)", RFC 2308, DOI 10.17487/RFC2308, March 1998, + <https://www.rfc-editor.org/info/rfc2308>. + + [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S. + Rose, "Protocol Modifications for the DNS Security + Extensions", RFC 4035, DOI 10.17487/RFC4035, March 2005, + <https://www.rfc-editor.org/info/rfc4035>. + + [RFC4697] Larson, M. and P. Barber, "Observed DNS Resolution + Misbehavior", BCP 123, RFC 4697, DOI 10.17487/RFC4697, + October 2006, <https://www.rfc-editor.org/info/rfc4697>. + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC + 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, + May 2017, <https://www.rfc-editor.org/info/rfc8174>. + +7.2. Informative References + + [BOTNET] Wessels, D. and M. Thomas, "Botnet Traffic Observed at + Various Levels of the DNS Hierarchy", May 2021, + <https://indico.dns-oarc.net/event/38/contributions/841/>. + + [DNSSEC-ROLLOVER] + Michaleson, G., Wallström, P., Arends, R., and G. Huston, + "Roll Over and Die?", February 2010, + <https://www.potaroo.net/ispcol/2010-02/rollover.html>. + + [FB-OUTAGE] + Janardhan, S., "More details about the October 4 outage", + October 2021, <https://engineering.fb.com/2021/10/05/ + networking-traffic/outage-details/>. + + [KSK-ROLLOVER] + Müller, M., Thomas, M., Wessels, D., Hardaker, W., Chung, + T., Toorop, W., and R. van Rijswijk-Deij, "Roll, Roll, + Roll Your Root: A Comprehensive Analysis of the First Ever + DNSSEC Root KSK Rollover", IMC '19: Proceedings of the + Internet Measurement Conference, Pages 1-14, + DOI 10.1145/3355369.3355570, October 2019, + <https://doi.org/10.1145/3355369.3355570>. + + [OUTAGE-RESOLVER] + Verisign, "Observations on Resolver Behavior During DNS + Outages", January 2022, + <https://blog.verisign.com/security/facebook-dns-outage/>. + + [RETRY-STORM] + Sullivan, A., "Dyn, DDoS, and DNS", March 2017, + <https://ccnso.icann.org/sites/default/files/file/field- + file-attach/2017-04/presentation-oracle-dyn-ddos-dns- + 13mar17-en.pdf>. + + [RFC0882] Mockapetris, P., "Domain names: Concepts and facilities", + RFC 882, DOI 10.17487/RFC0882, November 1983, + <https://www.rfc-editor.org/info/rfc882>. + + [RFC0883] Mockapetris, P., "Domain names: Implementation + specification", RFC 883, DOI 10.17487/RFC0883, November + 1983, <https://www.rfc-editor.org/info/rfc883>. + + [RFC4686] Fenton, J., "Analysis of Threats Motivating DomainKeys + Identified Mail (DKIM)", RFC 4686, DOI 10.17487/RFC4686, + September 2006, <https://www.rfc-editor.org/info/rfc4686>. + + [RFC4732] Handley, M., Ed., Rescorla, E., Ed., and IAB, "Internet + Denial-of-Service Considerations", RFC 4732, + DOI 10.17487/RFC4732, December 2006, + <https://www.rfc-editor.org/info/rfc4732>. + + [RFC5452] Hubert, A. and R. van Mook, "Measures for Making DNS More + Resilient against Forged Answers", RFC 5452, + DOI 10.17487/RFC5452, January 2009, + <https://www.rfc-editor.org/info/rfc5452>. + + [RFC6891] Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms + for DNS (EDNS(0))", STD 75, RFC 6891, + DOI 10.17487/RFC6891, April 2013, + <https://www.rfc-editor.org/info/rfc6891>. + + [RFC7766] Dickinson, J., Dickinson, S., Bellis, R., Mankin, A., and + D. Wessels, "DNS Transport over TCP - Implementation + Requirements", RFC 7766, DOI 10.17487/RFC7766, March 2016, + <https://www.rfc-editor.org/info/rfc7766>. + + [RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D., + and P. Hoffman, "Specification for DNS over Transport + Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May + 2016, <https://www.rfc-editor.org/info/rfc7858>. + + [RFC7873] Eastlake 3rd, D. and M. Andrews, "Domain Name System (DNS) + Cookies", RFC 7873, DOI 10.17487/RFC7873, May 2016, + <https://www.rfc-editor.org/info/rfc7873>. + + [RFC8484] Hoffman, P. and P. McManus, "DNS Queries over HTTPS + (DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018, + <https://www.rfc-editor.org/info/rfc8484>. + + [RFC8767] Lawrence, D., Kumari, W., and P. Sood, "Serving Stale Data + to Improve DNS Resiliency", RFC 8767, + DOI 10.17487/RFC8767, March 2020, + <https://www.rfc-editor.org/info/rfc8767>. + + [RFC8914] Kumari, W., Hunt, E., Arends, R., Hardaker, W., and D. + Lawrence, "Extended DNS Errors", RFC 8914, + DOI 10.17487/RFC8914, October 2020, + <https://www.rfc-editor.org/info/rfc8914>. + + [RFC9250] Huitema, C., Dickinson, S., and A. Mankin, "DNS over + Dedicated QUIC Connections", RFC 9250, + DOI 10.17487/RFC9250, May 2022, + <https://www.rfc-editor.org/info/rfc9250>. + + [THUNDERING-HERD] + Sivaraman, M. and C. Liu, "The DNS thundering herd + problem", Work in Progress, Internet-Draft, draft-muks- + dnsop-dns-thundering-herd-00, 25 June 2020, + <https://datatracker.ietf.org/doc/html/draft-muks-dnsop- + dns-thundering-herd-00>. + + [TsuNAME] Moura, G. C. M., Castro, S., Heidemann, J., and W. + Hardaker, "TsuNAME: exploiting misconfiguration and + vulnerability to DDoS DNS", IMC '21: Proceedings of the + 21st ACM Internet Measurement Conference, Pages 398-418, + DOI 10.1145/3487552.3487824, November 2021, + <https://doi.org/10.1145/3487552.3487824>. + + [TuDoor] Li, X., Xu, W., Liu, B., Zhang, M., Li, Z., Zhang, J., + Chang, D., Zheng, X., Wang, C., Chen, J., Duan, H., and Q. + Li, "TuDoor Attack: Systematically Exploring and + Exploiting Logic Vulnerabilities in DNS Response Pre- + processing with Malformed Packets", IEEE Symposium on + Security and Privacy (SP), DOI 10.1109/SP54263.2024.00046, + 2024, <https://doi.ieeecomputersociety.org/10.1109/ + SP54263.2024.00046>. + +Acknowledgments + + The authors wish to thank Mukund Sivaraman, Petr Spacek, Peter van + Dijk, Tim Wicinksi, Joe Abley, Evan Hunt, Barry Leiba, Lucas Pardue, + Paul Wouters, and other members of the DNSOP Working Group for their + feedback and contributions. + +Authors' Addresses + + Duane Wessels + Verisign + 12061 Bluemont Way + Reston, VA 20190 + United States of America + Phone: +1 703 948-3200 + Email: dwessels@verisign.com + URI: https://verisign.com + + + William Carroll + Verisign + 12061 Bluemont Way + Reston, VA 20190 + United States of America + Phone: +1 703 948-3200 + Email: wicarroll@verisign.com + URI: https://verisign.com + + + Matthew Thomas + Verisign + 12061 Bluemont Way + Reston, VA 20190 + United States of America + Phone: +1 703 948-3200 + Email: mthomas@verisign.com + URI: https://verisign.com |