<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC "" ".//reference.RFC.2119.xml">
]>

<rfc number="7304" category="info" submissionType="independent" ipr="trust200902">
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

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

  <front>

    <title abbrev="DNS Collision Mitigation">A Method for Mitigating Namespace
    Collisions</title>

    <author fullname="Warren Kumari" initials="W." surname="Kumari">
      <organization>Google</organization>

      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>

          <city>Mountain View, CA</city>

          <code>94043</code>

          <country>US</country>
        </postal>

        <email>warren@kumari.net</email>
      </address>
    </author>

    <date month="July" year="2014" />



    <abstract>
      <t>This document outlines a possible, but not recommended, method to
      mitigate the effect of collisions in the DNS namespace by providing a
      means for end users to disambiguate the conflict.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction/Background">
      <t>Collisions in the DNS occur in multiple ways.  One common case is that
      an organization has used a subdomain (foo) of its primary domain
      (example.com) for corporate infrastructure, and then the string 'foo' is
      delegated as a Top-Level Domain (TLD). When an employee of the organization enters
      'www.foo', is the goal to reach a machine in the internal namespace
      (www.foo.example.com) or the hostname 'www' in the 'foo' TLD?</t>


      <t>This document describes a means of disambiguating this and similar
      cases.</t>

      <t>Implementation of this method is not recommended; it is
      documented here to explain some of the pitfalls with such an approach.</t>
    </section>

    <section title="Mitigation">
      <t>The mitigation described in this document involves presenting
      multiple options to the user and allowing them to indicate which of the
      names is the one they are trying to reach.</t>

      <t>The mitigation would look up the name in multiple namespaces.  If
      a conflict is detected, it would then provide a means for the user to
      indicate which one of the colliding names they wish to connect to, and
      return the disambiguated answer to the application. 
An additional feature of mitigation could be to cache the user's
choice and/or provide a means to set priorities.</t>

      <t>This could be accomplished in a number of ways, including:</t>

      <t><list style="symbols">         
	  <t>Intercepting the resolution requests from the application in a
          "shim" type library</t>

          <t>Replacing the resolver library entirely</t>

          <t>Integrating this type of mitigation into applications (some web
          browsers already do something similar to this)</t>


          <t>Proxying the request to a server that provides an interstitial
          page that allows the user to indicate the intended name (for
          applications such as HTTP)</t>
        </list></t>

      <t>There are a number of issues with this solution, including but not
      limited to:</t>

      <t><list style="symbols">
          <t>There may not be a human available to disambiguate the answer
          (unattended machines, mail servers, etc.).</t>

          <t>The human/user may have no idea which is the correct choice,
          especially in the case of a phishing attack or other malicious
          intent.</t>

          <t>The additional latency introduced may cause the originating
          application to time out.</t>

          <t>The experience would be time consuming for users as they must select
   each site
      and subsite intended (e.g., www.intranet, images.intranet, etc.).</t>

          <t>Caching the responses could lead to problems when the user
          changes location (internal sites would fail when offsite or
          otherwise lead to incorrect sites being loaded).</t>
        </list>For these and other reasons, implementation of this technique
      is not recommended.</t>
    </section>

    <section title="Implementation/Disclaimers">
      <t>   This document does not reference an implementation.  Due to the
   numerous issues described above, we do not recommend that this solution be
   implemented.  This is a very slight mitigation, and we do not recommend 
   that it be viewed as a solution to the namespace collision problem.</t>


    </section>

    <section title="Security Considerations">
      <t>While this method may make some users more aware of which version of
      a name they are going to use (and so careful users may avoid some phishing
      attacks), the security risks described above outweigh this potential
      benefit.</t>


      <t>There are numerous security implications in this approach, including
      leaking internal names (e.g., secret-project.corp.example.com), users being
      tricked into selecting the incorrect choice when trying to disambiguate
      answers, etc.</t>

      <t>For these reasons, it is not recommended that this solution be
      deployed.</t>
    </section>

    <section title="Acknowledgements">
      <t>The author wishes to thank the following individuals: Fred Baker, Bob
      Braden, Carsten Bormann, Nevil Brownlee, Eric Burger, Brian Carpenter,
      Benoit Claise, Keith Drage, Martin J.&nbsp;D&uuml;rst, David Harrington, Paul
      Hoffamn, John Levine, and Ted Lemon.</t>
    </section>
  </middle>

  <back>
  </back>
</rfc>
