RFC 7646 INFORMATIONAL DNSSEC · DNS · OPERATIONS

DNSSEC NTA: Definition and Use of DNSSEC Negative Trust Anchors

A temporary way to stop validating one broken domain, so that a mistake in signing does not take a site offline.

On rfc-editor.org ↗
PUBLISHED
September 2015
AUTHORS
P. Ebersman, W. Kumari, C. Griffiths, J. Livingood, R. Weber
STREAM
IETF
ERROR CODE FOR A BROKEN DOMAIN
RCODE 2 (SERVFAIL)
RECOMMENDED MAXIMUM LIFETIME
One week
TYPICAL FREQUENCY OF USE
About once per quarter or less
DEFAULT LIFETIME IN ONE IMPLEMENTATION
One hour
TOOLS NAMED FOR DIAGNOSING FAILURES
DNSViz, the Verisign DNSSEC debugger and Zonemaster
PUBLICATION DATE
September 2015
DOI
10.17487/RFC7646

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                       P. Ebersman
Request for Comments: 7646                                       Comcast
Category: Informational                                        W. Kumari
ISSN: 2070-1721                                                   Google
                                                            C. Griffiths
                                                                 Nominet
                                                            J. Livingood
                                                                 Comcast
                                                                R. Weber
                                                                 Nominum
                                                          September 2015


          Definition and Use of DNSSEC Negative Trust Anchors

Abstract

   DNS Security Extensions (DNSSEC) is now entering widespread
   deployment.  However, domain signing tools and processes are not yet
   as mature and reliable as those for non-DNSSEC-related domain
   administration tools and processes.  This document defines Negative
   Trust Anchors (NTAs), which can be used to mitigate DNSSEC validation
   failures by disabling DNSSEC validation at specified domains.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for informational purposes.

   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).  Not all documents
   approved by the IESG are a candidate for any level of Internet
   Standard; see Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc7646.

Copyright Notice

   Copyright (c) 2015 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.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1. Introduction and Motivation .....................................3
      1.1. Definition of a Negative Trust Anchor ......................3
      1.2. Motivations for Negative Trust Anchors .....................4
           1.2.1. Mitigating Domain Validation Failures ...............4
           1.2.2. Improving End-User Experience .......................4
           1.2.3. Avoiding Switching to a Non-validating Resolver .....5
   2. Use of a Negative Trust Anchor ..................................5
      2.1. Applicability of Negative Trust Anchors ....................6
   3. Managing Negative Trust Anchors .................................7
      3.1. Alerting Users to Negative Trust Anchor Use ................7
   4. Removal of a Negative Trust Anchor ..............................7
   5. Comparison to Other DNS Misconfigurations .......................8
   6. Intentionally Broken Domains ....................................8
   7. Discovering Broken Domains ......................................9
   8. Security Considerations ........................................11
   9. References .....................................................11
      9.1. Normative References ......................................11
      9.2. Informative References ....................................12
   Appendix A.  Configuration Examples ...............................13
     A.1.  NLnet Labs Unbound ........................................13
     A.2.  Internet System Consortium (ISC) BIND .....................14
     A.3.  Nominum Vantio ............................................14
   Acknowledgements ..................................................15
   Authors' Addresses ................................................15

1.  Introduction and Motivation

   DNSSEC has now entered widespread deployment.  However, the DNSSEC
   signing tools and processes are less mature and reliable than those
   for non-DNSSEC-related administration.  As a result, operators of DNS
   recursive resolvers, such as Internet Service Providers (ISPs),
   occasionally observe domains incorrectly managing DNSSEC-related
   resource records.  This mismanagement triggers DNSSEC validation
   failures and then causes large numbers of end users to be unable to
   reach a domain.  Many end users tend to interpret this as a failure
   of their ISP or resolver operator, and they may switch to a non-
   validating resolver or contact their ISP to complain, rather than
   seeing this as a failure on the part of the domain they wanted to
   reach.  Without the techniques in this document, this pressure may
   cause the resolver operator to disable (or simply not deploy) DNSSEC
   validation.

   This document defines Negative Trust Anchors (NTAs), which can be
   used during the transition to ubiquitous DNSSEC deployment.  NTAs are
   configured locally on a validating DNS recursive resolver to shield
   end users from DNSSEC-related authoritative name server operational
   errors.  NTAs are intended to be temporary and only implemented by
   the organization requiring an NTA (and not distributed by any
   organizations outside of the administrative boundary).  Finally, NTAs
   pertain only to DNSSEC and not to Public Key Infrastructures (PKIs)
   such as X.509.

   Use of an NTA to temporarily disable DNSSEC validation for a specific
   misconfigured domain name immediately restores access for end users.
   This allows the domain's administrators to fix their misconfiguration
   while also allowing the organization using the NTA to keep DNSSEC
   validation enabled and still reach the misconfigured domain.

   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
   [RFC2119].

1.1.  Definition of a Negative Trust Anchor

   Trust anchors are defined in [RFC5914].  A trust anchor is used by a
   validating caching resolver as a starting point for building the
   authentication chain for a signed DNS response.  By way of analogy,
   NTAs stop validation of the authentication chain.  Instead, the
   validator treats any upstream responses as if the zone is unsigned
   and does not set the Authentic Data (AD) bit in responses it sends to
   clients.  Note that this is a behavior and not a separate resource
   record.  This NTA can potentially be implemented at any level within
   the chain of trust and would stop validation from that point in the
   chain down.  Validation starts again if there is a positive trust
   anchor further down in the chain.  For example, if there is an NTA at
   example.com and a positive trust anchor at foo.bar.example.com, then
   validation resumes for foo.bar.example.com and anything below it.

1.2.  Motivations for Negative Trust Anchors

1.2.1.  Mitigating Domain Validation Failures

   A domain name can fail validation for two general reasons: a
   legitimate security failure (e.g., due to an attack or compromise of
   some sort) or as a result of misconfiguration on the part of a zone
   administrator.  As domains transition to DNSSEC, the most common
   reason for a validation failure has been misconfiguration.  Thus,
   domain administrators should be sure to read [RFC6781] in full.  They
   should pay special attention to Section 4.2 of [RFC6781], which
   pertains to key rollovers, as these appear to be the cause of many
   recent validation failures.

   It is also possible that some DNSSEC validation failures could arise
   due to differences in how different software developers interpret
   DNSSEC standards and/or how those developers choose to implement
   support for DNSSEC.  For example, it is conceivable that a domain may
   be DNSSEC-signed properly, and one vendor's DNS recursive resolvers
   will validate the domain but other vendors' software may fail to
   validate the domain.

1.2.2.  Improving End-User Experience

   End users generally do not know of, understand, or care about the
   resolution process that causes connections to happen.  This is by
   design: the point of the DNS is to insulate users from having to
   remember IP addresses through a friendlier way of naming systems.  It
   follows from this that end users do not, and should not, be expected
   to know about DNSSEC, validation, or anything of the sort.  As a
   result, end users may misinterpret the failure to reach a domain due
   to DNSSEC-related misconfiguration.  They may (incorrectly) assume
   that their ISP is purposely blocking access to the domain or that it
   is a performance failure on the part of their ISP (especially of the
   ISP's DNS servers).  They may contact their ISP to complain, which
   will incur cost for their ISP.  In addition, they may use online
   tools and sites to complain about this problem, such as via a blog,
   web forum, or social media site, which may lead to dissatisfaction on
   the part of other end users or general criticism of an ISP or
   operator of a DNS recursive resolver.

   As end users publicize these failures, others may recommend they
   switch from security-aware DNS resolvers to resolvers not performing
   DNSSEC validation.  This is a shame since the ISP or other DNS
   recursive resolver operator is actually doing exactly what they are
   supposed to do in failing to resolve a domain name; this is the
   expected result when a domain can no longer be validated, and it
   protects end users from a potential security threat.  Use of an NTA
   would allow the ISP to specifically remedy the failure to reach that
   domain, without compromising security for other sites.  This would
   result in a satisfied end user, with minimal impact to the ISP, while
   maintaining the security of DNSSEC for correctly maintained domains.

   The following text from [RFC4033] is worth noting: "In the final
   analysis, however, authenticating both DNS keys and data is a matter
   of local policy, which may extend or even override the protocol
   extensions defined in this document set."  A responsibility (one of
   many) of a caching server operator is to protect the integrity of the
   cache.

1.2.3.  Avoiding Switching to a Non-validating Resolver

   As noted in Section 1.2.2, some people may consider switching to an
   alternative, non-validating resolver themselves, or may recommend
   that others do so.  But if a domain fails DNSSEC validation and is
   inaccessible, this could very well be due to a security-related
   issue.  In order to be as safe and secure as possible, end users
   should not change to DNS servers that do not perform DNSSEC
   validation as a workaround, and people should not recommend that
   others do so either.  Domains that fail DNSSEC for legitimate reasons
   (versus misconfiguration) may be in control of hackers, or there
   could be other significant security issues with the domain.

   Thus, switching to a non-validating resolver to restore access to a
   domain that fails DNSSEC validation is not a recommended practice, is
   bad advice to others, and is potentially harmful to end-user
   security.

2.  Use of a Negative Trust Anchor

   Technical personnel trained in the operation of DNS servers must
   confirm that a DNSSEC validation failure is due to misconfiguration,
   as a similar breakage could have occurred if an attacker gained
   access to a domain's authoritative servers and modified those records
   or had the domain pointed to their own rogue authoritative servers.
   They should also confirm that the domain is not intentionally broken,
   such as for testing purposes as noted in Section 6.  Finally, they
   should make a reasonable attempt to contact the domain owner of the
   misconfigured zone, preferably prior to implementing the NTA.

   Involving trained technical personnel is costly, but operational
   experience suggests that this is a very rare event, usually on the
   order of once per quarter (or even less).

   It is important for the resolver operator to confirm that the domain
   is still under the ownership/control of the legitimate owner of the
   domain in order to ensure that disabling validation for a specific
   domain does not direct users to an address under an attacker's
   control.  Contacting the domain owner and telling them the DNSSEC
   records that the resolver operator is seeing allows the resolver
   operator to determine if the issue is a DNSSEC misconfiguration or an
   attack.

   In the case of a validation failure due to misconfiguration of a Top-
   Level Domain (TLD) or popular domain name (such as a top 100
   website), content or services in the affected TLD or domain could be
   inaccessible for a large number of users.  In such cases, it may be
   appropriate to use an NTA as soon as the misconfiguration is
   confirmed.  An example of a list of "top N" websites is the Alexa
   "Top 500 Sites on the Web" [Alexa] or a list of the of the most-
   accessed names in the resolver's cache.

   Once a domain has been confirmed to fail DNSSEC validation due to a
   DNSSEC-related misconfiguration, an ISP or other DNS recursive
   resolver operator may elect to use an NTA for that domain or sub-
   domain.  This instructs their DNS recursive resolver to temporarily
   NOT perform DNSSEC validation at or in the misconfigured domain.
   This immediately restores access to the domain for end users while
   the domain's administrator corrects the misconfiguration(s).  It does
   not and should not involve turning off validation more broadly.

2.1.  Applicability of Negative Trust Anchors

   An NTA MUST only be used for a limited duration.  Implementors SHOULD
   allow the operator using the NTA to set an end time and date
   associated with any NTA.  Optimally, this time and date is set in a
   DNS recursive resolver's configuration, though in the short term,
   this may also be achieved via other systems or supporting processes.
   Use of an NTA MUST NOT be automatic.

   Finally, an NTA SHOULD be used only in a specific domain or sub-
   domain and MUST NOT affect validation of other names up the
   authentication chain.  For example, an NTA for zone1.example.com
   would affect only names at or below zone1.example.com, and validation
   would still be performed on example.com, .com, and the root (".").
   This NTA also SHOULD NOT affect names in another branch of the tree
   (such as example.net).  In another example, an NTA for example.com
   would affect only names within example.com, and validation would
   still be performed on .com and the root (".").  In this scenario, if
   there is a (probably manually configured) trust anchor for
   zone1.example.com, validation would be performed for
   zone1.example.com and subdomains of zone1.example.com.

3.  Managing Negative Trust Anchors

   While NTAs have proven useful during the early stages of DNSSEC
   adoption, domain owners are ultimately responsible for managing and
   ensuring that their DNS records are configured correctly.

   Most current implementations of DNS validating resolvers currently
   follow [RFC4033] on configuring a trust anchor using either a public
   key as in a DNSKEY resource record (RR) or a hash of a public key as
   in a DS RR.

   Different DNS validators may have different configuration names for
   an NTA.  For examples, see Appendix A.

   An NTA placed at a node where there is a configured positive trust
   anchor MUST take precedence over that trust anchor, effectively
   disabling it.  Implementations MAY issue a warning or informational
   message when this occurs, so that operators are not surprised when
   this happens.

3.1.  Alerting Users to Negative Trust Anchor Use

   End users of a DNS recursive resolver or other people may wonder why
   a domain that fails DNSSEC validation resolves with a supposedly
   validating resolver.  Therefore, implementors should consider
   transparently disclosing NTAs that are currently in place or were in
   place in the past, such as on a website [Disclosure-Example].

   This is particularly important since there is currently no special
   DNS query response code that could indicate to end users or
   applications that an NTA is in place.  Such disclosures should
   optimally include both the data and time that the NTA was put in
   place and when it was removed.

4.  Removal of a Negative Trust Anchor

   As explored in Section 8, using an NTA once the zone correctly
   validates can have security considerations.  It is therefore
   RECOMMENDED that NTA implementors should periodically attempt to
   validate the domain in question, for the period of time that the NTA
   is in place, until such validation is again successful.  NTAs MUST
   expire automatically when their configured lifetime ends.  The
   lifetime SHOULD NOT exceed a week.  There is limited experience with
   what this value should be, but at least one large vendor has
   documented customer feedback suggesting that a week is reasonable
   based on expectations of how long failures take to fix or to be
   forgotten.  Operational experience may further refine these
   expectations.

   Before removing the NTA, all authoritative resolvers listed in the
   zone should be checked (due to anycast and load balancers, it may not
   be possible to check all instances).

   Once all testing succeeds, an NTA should be removed as soon as is
   reasonably possible.  One possible method to automatically determine
   when the NTA can be removed is to send a periodic query for type
   Start of Authority (SOA) at the NTA node; if it gets a response that
   it can validate (whether the response was an actual SOA answer or a
   NOERROR/NODATA with appropriate NSEC/NSEC3 records), the NTA is
   presumed no longer to be necessary and is removed.  Implementations
   SHOULD, by default, perform this operation.  Note that under some
   circumstances, this is undesirable behavior (for example, if
   www.example.com has a bad signature, but example.com/SOA is fine), so
   implementations may wish to allow the operator to override this spot-
   check/behavior.

   When removing the NTA, the implementation SHOULD remove all cached
   entries at and below the NTA node.

5.  Comparison to Other DNS Misconfigurations

   Domain administrators are ultimately responsible for managing and
   ensuring their DNS records are configured correctly.  ISPs or other
   DNS recursive resolver operators cannot and should not correct
   misconfigured A, CNAME, MX, or other resource records of domains for
   which they are not authoritative.  Expecting non-authoritative
   entities to protect domain administrators from any misconfiguration
   of resource records is therefore unrealistic and unreasonable and, in
   the long term, is harmful to the delegated design of the DNS and
   could lead to extensive operational instability and/or variation.

   With DNSSEC breakage, it is often possible to tell that there is a
   misconfiguration by looking at the data and not needing to guess what
   it should have been.

6.  Intentionally Broken Domains

   Some domains, such as dnssec-failed.org, have been intentionally
   broken for testing purposes [Website-Visitors] [Netalyzr].  For
   example, dnssec-failed.org is a DNSSEC-signed domain that is broken.
   If an end user is querying a validating DNS recursive resolver, then
   this or other similarly intentionally broken domains should fail to
   resolve and should result in a "Server Failure" error (RCODE 2, also
   known as 'SERVFAIL').  If such a domain resolved successfully, then
   it is a sign that the DNS recursive resolver is not fully validating.

   Organizations that utilize NTAs should not add an NTA for any
   intentionally broken domain.  Such additions are prevented by the
   requirement that the operator attempt to contact the administrators
   for the zone that has broken DNSSEC.

   Organizations operating an intentionally broken domain may wish to
   consider adding a TXT record for the domain to the effect of "This
   domain is purposely DNSSEC broken for testing purposes".

7.  Discovering Broken Domains

   Discovering that a domain is DNSSEC broken as a result of an operator
   error instead of an attack is not trivial, and the examples here
   should be vetted by an experienced professional before making the
   decision to implement an NTA.

   One of the key things to look for when looking at a DNSSEC broken
   domain is consistency and history.  Therefore, it is good if you have
   the ability to look at the server's DNS traffic over a long period of
   time or have a database that stores DNS names and associated answers
   (this is often referred to as a "passive DNS database").  Another
   invaluable tool is DNSViz (http://dnsviz.net), which also stores
   DNSSEC-related data historically.  The drawback here is that you need
   for it to have tested the domain before the incident occurs.

   The first and easiest thing to check is if the failure of the domain
   is consistent across different software implementations.  If not, you
   want to inform the vendor where it fails so that the vendor can look
   more deeply into the issue.

   The next thing is to figure out what the actual failure mode is.  At
   the time of this writing, several tools that do this are available,
   including:

   o  DNSViz (http://dnsviz.net)

   o  Verisign DNSSEC debugger (http://dnssec-debugger.verisignlabs.com)

   o  Zonemaster (http://www.zonemaster.fr, https://github.com/dotse/
      zonemaster)
   Most of these tools are open source and can be installed locally.
   However, using the tools over the Internet has the advantage of
   providing visibility from a different point.  This is an incomplete
   list, and it is expected that additional tools will be developed over
   time to aid in troubleshooting DNSSEC issues.

   Once you figure out what the error is, you need to check if it shows
   consistently around the world and from all authoritative servers.
   Use DNS Tools (dig) or DNS looking glasses to verify this.  An error
   that is consistently the same is more likely to be caused by an
   operator rather than by an attack.  Also, if the output from the
   authoritative server is consistently different from the resolvers'
   output, this hints to an attack rather then an error, unless EDNS0
   client subnet [CLIENT-SUBNET] is applied to the domain.

   A last check is to look at the actual DNS data.  Is the result of the
   query still the same or has it changed?  While a lot of DNSSEC errors
   occur on events that change DNSSEC data, the actual record someone
   wants to go to often stays the same.  If the data is the same, this
   is an indication (not a guarantee) that the error is operator caused.
   Keep in mind that with DNS being used to globally balance traffic,
   the data associated to a name might be different in different parts
   of the Internet.

   Here are some examples of common DNSSEC failures that have been seen
   as operator signing errors on the Internet:

   o  RRSIG timing issue.  Each signature has an inception time and
      expiry time between which it is valid.  Letting this time expire
      without creating a new signature is one of the most common DNSSEC
      errors.  To a lesser extent, this also occurs if signatures were
      made active before the inception time.  For all of these errors,
      your primary check is to check on the data.  Signature expiration
      is also about the only error we see on actual data (like
      www.example.com).  All other errors are more or less related to
      dealing with the chain of trust established by DS records in the
      parent zone and DNSKEYs in the child zones.  These mostly occur
      during key rollovers but are not limited to that.

   o  DNSKEYs in a child zone don't match the DS record in the parent
      zone.  There is a big variation of this that can happen at any
      point in the key lifecycle.  DNSViz is the best tool to show
      problems in the chain.  If you debug it yourself, use dig
      +multiline so that you can see the key id of a DNSKEY.  Common
      variations of this can be:

      *  DS pointing to a non-existent key in the child zone.  Questions
         for consideration here include the following.  Has there ever
         been a key (and, if so, was it used)?  Has there been a recent
         change in the DNSKEY RRSet (indicating a key rollover)?  Has
         the actual data in the zone changed?  Is the zone DNSSEC signed
         at all and has it been in the past?

      *  DS pointing to an existent key, but no signatures are made with
         the key.  The checks above should be done, with the addition of
         checking if another key in the DNSKEY RRSet is now used to sign
         the records.

      *  Data in DS or DNSKEY doesn't match the other.  This is more
         common in initial setup when there was a copy-and-paste error.
         Again, checking history on data is the best you can do there.

   All of the above is just a starting point for consideration when
   deciding whether or not to deploy a trust anchor.  It is not possible
   to provide a simple checklist to run through to determine whether a
   domain is broken because of an attack or an operator error.

8.  Security Considerations

   End-to-end DNSSEC validation will be disabled during the time that an
   NTA is used.  In addition, the NTA may be in place after the time
   when the DNS misconfiguration that caused validation to break has
   been fixed.  Thus, there may be a gap between when a domain has been
   re-secured and when an NTA is removed.  In addition, an NTA may be
   put in place by DNS recursive resolver operators without the
   knowledge of the authoritative domain administrator for a given
   domain name.  However, attempts SHOULD be made to contact and inform
   the domain administrator prior to putting the NTA in place.

   One side effect of implementing an NTA is that it may break client
   applications that assume that a domain is signed and expect an AD bit
   in the response.  It is expected that many applications that require
   DNSSEC for a domain will perform their own validation, so this should
   not be a major issue.

9.  References

9.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC4033]  Arends, R., Austein, R., Larson, M., Massey, D., and S.
              Rose, "DNS Security Introduction and Requirements",
              RFC 4033, DOI 10.17487/RFC4033, March 2005,
              <http://www.rfc-editor.org/info/rfc4033>.

   [RFC5914]  Housley, R., Ashmore, S., and C. Wallace, "Trust Anchor
              Format", RFC 5914, DOI 10.17487/RFC5914, June 2010,
              <http://www.rfc-editor.org/info/rfc5914>.

   [RFC6781]  Kolkman, O., Mekking, W., and R. Gieben, "DNSSEC
              Operational Practices, Version 2", RFC 6781,
              DOI 10.17487/RFC6781, December 2012,
              <http://www.rfc-editor.org/info/rfc6781>.

9.2.  Informative References

   [Alexa]    Alexa, "The top 500 sites on the web",
              <http://www.alexa.com/topsites>.

   [CLIENT-SUBNET]
              Contavalli, C., van der Gaast, W., Lawrence, D., and W.
              Kumari, "Client Subnet in DNS Queries", Work in Progress,
              draft-ietf-dnsop-edns-client-subnet-03, August 2015.

   [Disclosure-Example]
              Comcast, "faa.gov Failing DNSSEC Validation (Fixed)",
              February 2013, <http://dns.comcast.net/index.php/entry/
              faa-gov-failing-dnssec-validation-fixed>.

   [Netalyzr] Weaver, N., Kreibich, C., Nechaev, B., and V. Paxson,
              "Implications of Netalyzr's DNS Measurements", Securing
              and Trusting Internet Names (SATIN), April 2011,
              <http://conferences.npl.co.uk/satin/presentations/
              satin2011slides-Weaver.pdf>.

   [Unbound-Config]
              Wijngaards, W., "Unbound: How to Turn Off DNSSEC", June
              2010, <http://unbound.net/documentation/
              howto_turnoff_dnssec.html>.

   [Website-Visitors]
              Mens, J., "Is my Web site being used via a DNSSEC-
              validator?", July 2012, <http://jpmens.net/2012/07/30/
              is-my-web-site-being-used-via-dnssec-validator/>.

Appendix A.  Configuration Examples

   The section contains example configurations to achieve NTA
   functionality for the zone foo.example.com.

   Note: These are simply examples -- name server operators are expected
   to test and understand the implications of these operations.  Note
   also that some of available implementations may not implement all
   recommended functionality in this document.  In that case, it is
   advisable to request the developer or vendor of the implementation to
   support the missing feature rather than start using the incomplete
   implementation.

A.1.  NLnet Labs Unbound

   Unbound [Unbound-Config] lets us simply disable validation checking
   for a specific zone by adding configuration statements to
   unbound.conf:

   server:
           domain-insecure: "foo.example.com"

   Using the 'unbound-control' command, one can add and remove NTAs
   without restarting the name server.

      Using the "unbound-control" command:
           list_insecure                 list domain-insecure zones
           insecure_add zone             add domain-insecure zone
           insecure_remove zone          remove domain-insecure zone

   Items added with the "unbound-control" command are added to the
   running server and are lost when the server is restarted.  Items from
   unbound.conf stay after restart.

   For additional information, see [Unbound-Config].

A.2.  Internet System Consortium (ISC) BIND

   Use the "rndc" command:

     nta -dump
               List all negative trust anchors.
     nta [-lifetime duration] [-force] domain [view]
               Set a negative trust anchor, disabling DNSSEC validation
               for the given domain.
               Using -lifetime specifies the duration of the NTA, up
               to one week.  The default is one hour.
               Using -force prevents the NTA from expiring before its
               full lifetime, even if the domain can validate sooner.
     nta -remove domain [view]
               Remove a negative trust anchor, re-enabling validation
               for the given domain.

A.3.  Nominum Vantio

   **

   *negative-trust-anchors*

   _Format_: name

   _Command Channel_: view.update name=world negative-trust-
   anchors=(foo.example.com)

   _Command Channel_: resolver.update name=res1 negative-trust-
   anchors=(foo.example.com)

   *Description*: Disables DNSSEC validation for a domain, even if the
   domain is under an existing security root.

Acknowledgements

   Several people made contributions to this document and/or played an
   important role in the development and evolution of it.  In some
   cases, this included performing a detailed review and then providing
   feedback and constructive criticism for future revisions, or engaging
   in a healthy debate over the subject of the document.  All of this
   was helpful, and therefore, the following individuals merit
   acknowledgement: Joe Abley, John Barnitz, Tom Creighton, Marco
   Davids, Brian Dickson, Patrik Falstrom, Tony Finch, Chris Ganster,
   Olafur Gudmundsson, Peter Hagopian, Wes Hardaker, Paul Hoffman,
   Christer Holmberg, Shane Kerr, Murray Kucherawy, Rick Lamb, Marc
   Lampo, Ted Lemon, Scott Rose, A. Schulze, Wendy Seltzer, Antoin
   Verschuren, Paul Vixie, Patrik Wallstrom, Nick Weaver,
   W.C.A. Wijngaards, and Suzanne Woolf.

   Edward Lewis, Evan Hunt, Andrew Sullivan, and Tatuya Jinmei provided
   especially large amounts of text and/or detailed review.

Authors' Addresses

   Paul Ebersman
   Comcast
   One Comcast Center
   1701 John F. Kennedy Boulevard
   Philadelphia, PA  19103
   United States

   Email: ebersman-ietf@dragon.net


   Warren Kumari
   Google
   1600 Amphitheatre Parkway
   Mountain View, CA  94043
   United States

   Email: warren@kumari.net
   URI:   http://www.google.com
   Chris Griffiths
   Nominet
   Minerva House
   Edmund Halley Road
   Oxford Science Park
   Oxford  OX4 4DQ
   United Kingdom

   Email: cgriffiths@gmail.com
   URI:   http://www.nominet.org.uk/


   Jason Livingood
   Comcast
   One Comcast Center
   1701 John F. Kennedy Boulevard
   Philadelphia, PA  19103
   United States

   Email: jason_livingood@cable.comcast.com
   URI:   http://www.comcast.com


   Ralf Weber
   Nominum

   Email: Ralf.Weber@nominum.com
   URI:   http://www.nominum.com

ISO Plain Language

On this page
PROBLEMWhen a domain owner gets DNSSEC signing wrong, a validating resolver refuses to answer, and the users of that domain cannot reach it at all. The domain owner may not know, and the users usually blame their provider.
MECHANISMRFC 7646 defines a negative trust anchor: a local setting on a validating resolver that tells it to stop validating the chain for one domain and treat it as unsigned, while everything else stays validated.
THE CATCHThe document sets tight rules on how such a setting may be used: only for a limited time, never automatically, never for more than one branch of the name tree, and only after a person has checked that the fault is a mistake rather than an attack. It also explains how to find out which it is.

§1Why a Negative Trust Anchor Exists

DNSSEC has entered widespread deployment, but the signing tools and the processes around signing are less mature and reliable than those for ordinary DNS administration. Operators of recursive resolvers, such as internet service providers, occasionally see domains managing their DNSSEC resource records incorrectly. That mismanagement causes validation failures, and then large numbers of end users cannot reach the domain at all. Users tend to read this as a failure of their provider or resolver operator, and some of them move to a resolver that does not validate, or complain to their provider, instead of seeing it as a failure of the domain they wanted to reach. Without a technique for this, that pressure may lead resolver operators to turn validation off, or never to deploy it.

The document defines negative trust anchors, which can be used during the transition to ubiquitous DNSSEC deployment. They are configured locally on a validating recursive resolver, to shield end users from DNSSEC-related errors by the authoritative name servers. They are meant to be temporary, implemented only by the organisation that needs one, and not passed on to anyone outside its administrative boundary. They concern DNSSEC only, and not public key infrastructures such as X.509.

Using one to disable validation temporarily for a specific misconfigured domain immediately restores access for end users. The domain's administrators can then fix their mistake, while the organisation that configured the anchor keeps validation switched on everywhere else and can still reach the broken domain.

There are three motivations. The first is to mitigate validation failures caused by misconfiguration: a domain can fail validation because of a genuine security problem or because the zone administrator made a mistake, and as domains move to DNSSEC the second is the more common cause, so administrators should read the operational practices document in full and pay particular attention to its section on key rollovers, which appear to cause many recent failures. Some failures also come from different software interpreting the standards differently, so a domain that is signed correctly may validate on one vendor's resolvers and fail on another's. The second motivation is the end-user experience: users neither know nor care about the resolution process, so a failure makes them suspect their provider is blocking the domain or that the provider's servers are slow, and they complain, which costs the provider money and may lead to public criticism. Using a negative trust anchor lets the provider fix access to that one domain without weakening security anywhere else. The third motivation is to stop users switching to a resolver that does not validate. A domain that fails validation may be under the control of an attacker, so switching to a non-validating resolver is not a recommended practice, is bad advice to give others, and is potentially harmful to the user's security.

Signing a domain correctly is harder than it should be, and when it goes wrong a validating resolver stops answering for it. The people affected cannot tell the difference between their provider misbehaving and the domain being broken, and some of them walk away from validation altogether. A negative trust anchor is a way for the provider to keep one broken domain working while everything else stays checked, so that providers are not pushed into turning validation off altogether.

§1.1What a Negative Trust Anchor Is

Trust anchors are defined in RFC 5914. A trust anchor is what a validating caching resolver uses as a starting point for building the authentication chain for a signed DNS response. A negative trust anchor stops the validation of that authentication chain. Instead, the validator treats any upstream responses as if the zone were unsigned, and does not set the Authentic Data bit in the responses it sends to clients. It is worth being precise about what this is: it is a behaviour, and not a separate resource record.

A negative trust anchor can potentially be implemented at any level within the chain of trust, and it stops validation from that point in the chain downwards. Validation starts again if there is a positive trust anchor further down the chain. So if there is a negative trust anchor at example.com and a positive trust anchor at foo.bar.example.com, validation resumes for foo.bar.example.com and for anything below it.

A normal trust anchor is the point where the resolver starts checking signatures. A negative trust anchor is the opposite: it marks a point where the checking stops, and the resolver treats everything below it as unsigned. It can be put anywhere in the chain, and if a normal anchor appears further down, checking starts again from there.

A POSITIVE TRUST ANCHOR AND A NEGATIVE ONE
AspectPositive trust anchorNegative trust anchor
What it doesStarts the authentication chain for a signed responseStops the authentication chain being validated
Effect on answersThe response is validated and the Authentic Data bit is setUpstream responses are treated as if the zone were unsigned, and no Authentic Data bit is set
How it is configuredA public key in a DNSKEY record or a hash of one in a DS recordA local setting in the resolver, named differently by each implementation
PrecedenceThe normal starting pointTakes precedence over a positive trust anchor at the same node, disabling it

§2When and How to Use One

Technical personnel trained in the operation of DNS servers must confirm that a validation failure is due to misconfiguration, since a similar breakage could have occurred if an attacker gained access to a domain's authoritative servers and modified those records, or had the domain pointed at rogue authoritative servers. They should also confirm that the domain is not intentionally broken, and they should make a reasonable attempt to contact the domain owner, preferably before implementing the anchor. Involving trained technical personnel is costly, but operational experience suggests this is a very rare event, usually on the order of once per quarter or even less.

It is important for the resolver operator to confirm that the domain is still under the ownership and control of the legitimate owner, so that disabling validation for it does not direct users to an address under an attacker's control. Contacting the domain owner and telling them which DNSSEC records the operator is seeing allows the operator to tell a misconfiguration from an attack. Where the failure affects a top-level domain or a popular name, such as one of the top hundred sites, content or services could be inaccessible for a great many users, and it may be appropriate to use an anchor as soon as the misconfiguration is confirmed.

Once a domain has been confirmed to fail validation because of a DNSSEC misconfiguration, the operator may choose to use an anchor for that domain or sub-domain. This tells the recursive resolver to temporarily not perform DNSSEC validation at or in the misconfigured domain, which immediately restores access for end users while the administrator corrects the mistake. It does not, and should not, involve turning validation off more broadly.

The rules on applicability are strict. An anchor must only be used for a limited duration, and implementations should let the operator set an end time and date for it, preferably in the resolver's configuration, though in the short term other systems or processes may achieve this. Use of an anchor must not be automatic. It should be used only for a specific domain or sub-domain and must not affect validation of other names up the authentication chain: an anchor for zone1.example.com would affect only names at or below it, and validation would still be performed on example.com, on .com and on the root. It should also not affect names in another branch of the tree, such as example.net. An anchor for example.com would affect only names within example.com, with validation still performed on .com and the root, and in that scenario, if there is a manually configured trust anchor for zone1.example.com, validation would be performed for that name and its subdomains.

Nobody should install one of these on a hunch. A trained person has to check that the fault really is the domain's own mistake and not an attack, and that the domain still belongs to who it did, and the operator should try to contact the owner first. The setting must have an end date, must never be applied automatically, and must not spill over to other names: an anchor on one branch of the name tree leaves the rest of the tree fully validated.

THE RULES FOR USING A NEGATIVE TRUST ANCHOR
  • Limited durationIt must only be used for a limited time, with an end time and date set.
  • Never automaticUse of an anchor must not be automatic; a person decides.
  • One branch onlyIt applies to a specific domain or sub-domain and to nothing else.
  • Nothing up the chainNames above it, such as the parent zone and the root, are still validated.
  • Nothing else in the treeA different branch of the name tree is not affected.

§3Managing and Removing Them

While negative trust anchors have proved useful in the early stages of DNSSEC adoption, domain owners are ultimately responsible for managing their DNS records and ensuring they are configured correctly. Most current implementations of validating resolvers follow RFC 4033 in configuring a trust anchor, using either a public key in a DNSKEY record or a hash of a public key in a DS record. Different validators use different configuration names for an anchor.

An anchor placed at a node where there is a configured positive trust anchor must take precedence over that trust anchor, effectively disabling it, and implementations may issue a warning or an informational message so that operators are not surprised.

End users may wonder why a domain that fails validation still resolves with a supposedly validating resolver, so implementors should consider disclosing the anchors that are in place or were in place in the past, for example on a website. This matters because there is currently no special DNS response code that could tell end users or applications that an anchor is in place. Such disclosures should ideally include both the data and the time the anchor was put in place and when it was removed.

Removal is where the care is needed, because using an anchor once the zone validates correctly again can have security consequences. Implementors should periodically attempt to validate the domain while the anchor is in place, until validation succeeds again. Anchors must expire automatically when their configured lifetime ends, and the lifetime should not exceed a week. There is limited experience with what this value should be, but at least one large vendor has documented customer feedback suggesting that a week is reasonable, based on expectations of how long failures take to fix or to be forgotten, and operational experience may refine this further. Before removing an anchor, all the authoritative resolvers listed in the zone should be checked, though because of anycast and load balancers it may not be possible to check every instance.

Once testing succeeds, the anchor should be removed as soon as is reasonably possible. One possible way to decide automatically is to send a periodic query for the Start of Authority record type at the anchor's node; if the answer is one that can be validated, whether that is the record itself or a NOERROR with no data and the right denial records, the anchor is presumed no longer necessary and is removed. Implementations should do this by default, but it is not always right: if www.example.com has a bad signature while the SOA record for example.com is fine, the check would remove the anchor too early, so implementations may let the operator override it. When the anchor is removed, the implementation should remove all cached entries at and below its node.

Anchors have to end. The resolver should keep trying to validate the domain while the anchor is in place, and the anchor must expire by itself at a fixed time, no more than a week after it was set. Before it is removed, every authoritative server for the domain should be checked, and when it is removed the cached answers below it should be thrown away.

§7Telling Misconfiguration From Attack

Discovering that a domain is broken by an operator error rather than by an attack is not trivial, and the examples given should be vetted by an experienced professional before anyone decides to install an anchor. One of the key things to look for is consistency and history, so it helps to be able to look at the server's DNS traffic over a long period, or to have a database of DNS names and the answers given for them, often called a passive DNS database. DNSViz also stores DNSSEC-related data historically, but the drawback is that it has to have tested the domain before the incident occurs.

The first and easiest check is whether the failure is consistent across different software implementations. If it is not, the vendor where it fails should be told, so that they can look more deeply into the issue. The next step is to work out the actual failure mode, for which several tools are available, including DNSViz, the Verisign DNSSEC debugger and Zonemaster. Most are open source and can be installed locally, but using them over the internet has the advantage of giving a view from a different point.

Once the error is understood, it has to be checked for consistency around the world and from all the authoritative servers, using dig or DNS looking glasses. An error that is consistently the same is more likely to have been caused by an operator than by an attack. If the output from the authoritative server is consistently different from the output of the resolvers, that hints at an attack rather than an error, unless the client subnet extension is being applied to the domain. The last check is to look at the actual DNS data: is the result of the query still the same, or has it changed? A great many DNSSEC errors occur at moments when the DNSSEC data changes while the record someone wants to reach stays the same, so unchanged data is an indication, though not a guarantee, that the error was caused by the operator. The DNS is also used to balance traffic globally, so the data for a name may differ in different parts of the internet.

The document then lists the failures most often seen as operator signing errors. The first is a timing problem with the signature records: each signature has an inception time and an expiry time between which it is valid, and letting that time pass without creating a new signature is one of the most common DNSSEC errors. To a lesser extent the same happens if signatures were made active before their inception time. For all of these, the primary check is on the data, and signature expiration is about the only error seen on actual data such as www.example.com. All the other errors relate to the chain of trust established by the delegation records in the parent zone and the key records in the child zones, and mostly occur during key rollovers, though they are not limited to that. The second is that the key records in a child zone do not match the delegation record in the parent zone, which can happen at many points in the key lifecycle; DNSViz is the best tool for showing problems in the chain, and when debugging by hand, dig with the multiline option shows the key identifier of a key record. The variations are a delegation record pointing to a key that does not exist in the child zone, a delegation record pointing to a key that exists but is never used to make signatures, and data that does not match on both sides, which is more common in initial setup when something was copied by hand. The document ends by saying that this is only a starting point, and that it is not possible to provide a simple checklist for deciding whether a domain is broken by an attack or by an operator error.

Before trusting a domain that fails validation, the operator has to work out whether the domain broke itself or somebody broke it. The clues are consistency and history: does the same failure appear on different resolver implementations, from different parts of the world, and on every authoritative server? Does the address the domain resolves to still look right, even though the signatures are wrong? And has the domain changed recently? An expired signature or a mismatch between the parent's record of the child's key and the child's own key are the usual operator mistakes.

THE CLUES THAT SEPARATE A MISTAKE FROM AN ATTACK
  • Other implementationsDoes the failure appear on every vendor's resolver, or only one?
  • EverywhereIs the same error seen around the world and from all the authoritative servers?
  • The data itselfHas the address the domain resolves to stayed the same? If so, it points to operator error.
  • HistoryWhat did the domain look like before? A passive database or DNSViz may hold the answer.

§8Security Considerations and Broken Domains

End-to-end DNSSEC validation will be disabled during the time that an anchor is used. The anchor may also still be in place after the time when the misconfiguration that caused validation to break has been fixed, so there may be a gap between the moment a domain has been re-secured and the moment the anchor is removed. An anchor may also be put in place by a resolver operator without the knowledge of the authoritative domain administrator, although attempts should be made to contact and inform the administrator first. One side effect of implementing an anchor is that it may break client applications that assume a domain is signed and expect the Authentic Data bit in the response, though many applications that require DNSSEC perform their own validation, so this should not be a major issue.

The document also compares this with other kinds of DNS misconfiguration. Domain administrators are ultimately responsible for their records, and resolver operators cannot and should not correct misconfigured address, alias, mail exchange or other records of domains for which they are not authoritative. Expecting non-authoritative entities to protect domain administrators from any misconfiguration is unrealistic and unreasonable, and in the long term it is harmful to the delegated design of the DNS. With DNSSEC breakage, however, it is often possible to tell that there is a misconfiguration by looking at the data, without needing to guess what it should have been.

Some domains are broken on purpose, such as dnssec-failed.org, for testing. A user querying a validating recursive resolver for such a domain should fail to resolve and should get a Server Failure error, response code 2, and if such a domain resolves successfully, that is a sign the resolver is not fully validating. An organisation that uses anchors should not add one for an intentionally broken domain, and the requirement to attempt to contact the zone's administrators is what prevents that from happening. An organisation running an intentionally broken domain may wish to add a text record saying that the domain is purposely broken for testing purposes.

While an anchor is in place, that domain is not checked at all, and it may stay unchecked for a little while after the domain has been fixed. It can also upset applications that expect to be told the domain is signed. The document is clear that a resolver must not start fixing other people's DNS records, and that a domain broken on purpose for testing should fail to resolve rather than be rescued by an anchor.

§7References