<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc1034 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1034.xml">
<!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc2136 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2136.xml">
<!ENTITY rfc2317 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2317.xml">
<!ENTITY rfc3007 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3007.xml">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>

<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc rfcedstyle="yes"?>
<?rfc autobreaks="yes"?>
<?rfc docmapping="yes"?>

<rfc category="std" docName="draft-spacek-dnsop-update-clarif-01"
	ipr="trust200902">

  <front>
		<title abbrev="DNS UPDATE clarifications">
			Clarifications to the Dynamic Updates
			in the Domain Name System (DNS UPDATE) specification
		</title>

    <author fullname="Petr Spacek" initials="P." surname="Spacek">
      <organization>Red Hat, Inc.</organization>
      <address><email>pspacek@redhat.com</email></address>
    </author>

    <date month="August" year="2015" />

    <area>Operations and Management</area>

    <workgroup>Internet Engineering Task Force</workgroup>

    <abstract>
			<t>This document clarifies interaction among
				Dynamic Updates in the Domain Name System (DNS UPDATE),
				Classless IN-ADDR.ARPA delegation,
				and Secure Domain Name System (DNS) Dynamic Update in the presence
				of CNAME/DNAME redirections.</t>
    </abstract>

  </front>



	<middle>

    <section title="Introduction">
			<t>This document clarifies interaction among
				<xref target="RFC2136">Dynamic Updates in the Domain Name System
					(DNS UPDATE)</xref>,
				<xref target="RFC2317">Classless IN-ADDR.ARPA delegation</xref>,
				and <xref target="RFC3007">Secure Domain Name System (DNS)
					Dynamic Update</xref>.</t>

			<t>It was identified that common implementations using DNS update
				protocol often ignore existence of CNAME/DNAME redirections and, as
				a result, fail to update records if redirection is used. One common
				example is failure to update PTR records in classless IN-ADDR.ARPA
				zones.</t>

			<t><xref target="RFC2317"/> describes how to use the CNAME records
				in IN-ADDR.ARPA DNS zones to split administrative control over
				IN-ADDR.ARPA data for classless networks. The described method
				is perfectly compatible with standard DNS resolution but DNS update
				requests need special handling described in this document.</t>

			<t anchor="applicability">This clarification is applicable to parties
				wanting to update records in IN-ADDR.ARPA and other zones without
				changing existing CNAME/DNAME redirections. A typical example are
				PTR record updates in zones which might potentially use
				<xref target="RFC2317"/>.
				This clarification is not applicable to cases where the purpose
				of the DNS update is to change CNAME/DNAME redirection.</t>
		</section>


    <section title="Document Conventions">
      <t>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 <xref
			target="RFC2119"/>.</t>

			<t>Terms "requestor", "update message", and names of update message's
				sections are used in the same sense as in <xref target="RFC2136"/>.</t>

			<t>Examples involving IN-ADDR.ARPA zone and PTR records are referring to
				<xref target="RFC2317"/>.</t>
    </section>


    <section title="Problem Description">
			<t>The problem described herein typically occurs when an implementation
				intends to update resource records resolvable by using particular owner
				name while keeping all CNAME/DNAME redirections intact. In other words,
				the purpose of the update is to change resource records associated with
			  terminal node of (potential) chain of redirections starting at
				a known owner name.</t>

			<t>Typically, this is the case when the resource records are associated
				with a known owner name or an owner name that is derived from
				data obtained outside of DNS. For example, implementations
				often translate IPv4 address to DNS owner name using the algorithm
				from <xref target="RFC1034"/> section 5.2.1.4:</t>

			<figure> <!--anchor="fig-ipv42name"> -->
          <artwork><![CDATA[
192.0.2.1 -> 1.2.0.192.in-addr.arpa.
]]></artwork>
        </figure>

			<t>The problem is that implementations often use this original node name
				in an Update Message without checking for redirections.
				If the original owner name contains redirection, then this behavior
				results in an attempt to add or delete another record to or from a node
				that already contains the CNAME record, and the update fails.</t>

			<t>Such inappropriately constructed update request will be silently ignored
				in accordance with <xref target="RFC2136"/> section 3.4.2.2.
				Alternatively, an error will be reported to the requestor if the 
        non-existence of the CNAME record was added as a prerequisite to the 
        Update Message.
			</t>
		</section>


    <section title="Clarification to Requestor Behaviour">
			<t>Please see
				<xref target="applicability">applicability note in Introduction</xref>.
			</t>

			<t>A Requestor MUST resolve (canonicalize) the original owner name
				(e.g. the one derived from an IPv4 address) to a canonical owner name before
				constructing the Update Message. The requestor MUST follow whole chain
				of redirections until the terminal node of the chain is reached and use
				canonical name found at the terminal node.
				Implementations MUST detect infinite loops.</t>

			<t>Canonical owner name MUST be used instead of the original owner name
				in the resulting Update Message:
				<list style="symbols">
					<t>All names used in the Prerequisite and Update sections MUST be
						canonicalized as specified above. Only prerequisites concerning
						the CNAME or DNAME records are an exception to this rule and should not
						be canonicalized.</t>
					<t>ZNAME in the Zone Section has to contain the name of the zone that encloses
						the canonical owner names.</t>
					<t>An implementation MAY chose to use canonicalized names in RDATA and
						an Additional Section. This is an application specific decision.</t>
				</list>
			</t>
    </section>


    <section title="IANA Considerations">
      <t>This draft does not involve IANA Considerations.</t>
    </section>

    <section title="Security Considerations">
			<t>Canonicalization process changes the owner name which is going to be
				affected by the update. An active attacker might interfere with the
				canonicalization process and trick the requestor to update a node of
				the attacker's choice if the canonicalization process is not secured
				by using DNSSEC or by other means.</t>

			<t>Security properties of DNS updates using only
				<xref target="RFC2136">DNS UPDATE</xref> without any security
				mechanisms on top of it are vulnerable anyway because an active attacker
				can very well modify the update message itself.</t>

			<t>Canonicalization generally increases overall risk for implementations
				of <xref target="RFC3007">Secure DNS Dynamic Update</xref> because
				an attacker might have a chance to modify the owner name in an
				Update Message before the message is signed by the requestor.
				An implementation might decide to accept canonicalized names only on condition that
				the overall security status of the canonicalization process is sufficient
				according to the local policy.
				Because the chain of redirections might involve multiple DNS zones,
				implementations MUST use the lowest security status from all links
				in the chain of redirections when doing security decisions.</t>

			<t>For example, a strict implementation might accept canonicalized names
				only on condition that all redirections were secured by DNSSEC and the security state
				of all redirections was "secure". Another implementation might decide
				that security checks on a server side are sufficient, so requestors will
				accept canonical names obtained using insecure protocols.
				In case of PTR records, a server might require the TCP transport and map
				an IP address of the requestor to the canonical owner name and/or check data
				in an Update Message with the requestor's identity.</t>
    </section>

  </middle>



  <back>
<?rfc rfcedstyle="no"?>
    <references title="Normative References">
      &rfc1034;
      &rfc2119;
      &rfc2136;
      &rfc2317;
      &rfc3007;
    </references>
  </back>
</rfc>
