mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 13:38:26 +00:00
4367: What's in a Name: False Assumptions about DNS Names
This commit is contained in:
parent
1ea735360f
commit
85f5fe1a72
@ -104,3 +104,4 @@
|
|||||||
4193: Unique Local IPv6 Unicast Addresses
|
4193: Unique Local IPv6 Unicast Addresses
|
||||||
4255: Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
|
4255: Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
|
||||||
4343: Domain Name System (DNS) Case Insensitivity Clarification
|
4343: Domain Name System (DNS) Case Insensitivity Clarification
|
||||||
|
4367: What's in a Name: False Assumptions about DNS Names
|
||||||
|
955
doc/rfc/rfc4367.txt
Normal file
955
doc/rfc/rfc4367.txt
Normal file
@ -0,0 +1,955 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Network Working Group J. Rosenberg, Ed.
|
||||||
|
Request for Comments: 4367 IAB
|
||||||
|
Category: Informational February 2006
|
||||||
|
|
||||||
|
|
||||||
|
What's in a Name: False Assumptions about DNS Names
|
||||||
|
|
||||||
|
Status of This Memo
|
||||||
|
|
||||||
|
This memo provides information for the Internet community. It does
|
||||||
|
not specify an Internet standard of any kind. Distribution of this
|
||||||
|
memo is unlimited.
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
Copyright (C) The Internet Society (2006).
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
|
||||||
|
The Domain Name System (DNS) provides an essential service on the
|
||||||
|
Internet, mapping structured names to a variety of data, usually IP
|
||||||
|
addresses. These names appear in email addresses, Uniform Resource
|
||||||
|
Identifiers (URIs), and other application-layer identifiers that are
|
||||||
|
often rendered to human users. Because of this, there has been a
|
||||||
|
strong demand to acquire names that have significance to people,
|
||||||
|
through equivalence to registered trademarks, company names, types of
|
||||||
|
services, and so on. There is a danger in this trend; the humans and
|
||||||
|
automata that consume and use such names will associate specific
|
||||||
|
semantics with some names and thereby make assumptions about the
|
||||||
|
services that are, or should be, provided by the hosts associated
|
||||||
|
with the names. Those assumptions can often be false, resulting in a
|
||||||
|
variety of failure conditions. This document discusses this problem
|
||||||
|
in more detail and makes recommendations on how it can be avoided.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 1]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
Table of Contents
|
||||||
|
|
||||||
|
1. Introduction ....................................................2
|
||||||
|
2. Target Audience .................................................4
|
||||||
|
3. Modeling Usage of the DNS .......................................4
|
||||||
|
4. Possible Assumptions ............................................5
|
||||||
|
4.1. By the User ................................................5
|
||||||
|
4.2. By the Client ..............................................6
|
||||||
|
4.3. By the Server ..............................................7
|
||||||
|
5. Consequences of False Assumptions ...............................8
|
||||||
|
6. Reasons Why the Assumptions Can Be False ........................9
|
||||||
|
6.1. Evolution ..................................................9
|
||||||
|
6.2. Leakage ...................................................10
|
||||||
|
6.3. Sub-Delegation ............................................10
|
||||||
|
6.4. Mobility ..................................................12
|
||||||
|
6.5. Human Error ...............................................12
|
||||||
|
7. Recommendations ................................................12
|
||||||
|
8. A Note on RFC 2219 and RFC 2782 ................................13
|
||||||
|
9. Security Considerations ........................................14
|
||||||
|
10. Acknowledgements ..............................................14
|
||||||
|
11. IAB Members ...................................................14
|
||||||
|
12. Informative References ........................................15
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
|
||||||
|
The Domain Name System (DNS) [1] provides an essential service on the
|
||||||
|
Internet, mapping structured names to a variety of different types of
|
||||||
|
data. Most often it is used to obtain the IP address of a host
|
||||||
|
associated with that name [2] [1] [3]. However, it can be used to
|
||||||
|
obtain other information, and proposals have been made for nearly
|
||||||
|
everything, including geographic information [4].
|
||||||
|
|
||||||
|
Domain names are most often used in identifiers used by application
|
||||||
|
protocols. The most well known include email addresses and URIs,
|
||||||
|
such as the HTTP URL [5], Real Time Streaming Protocol (RTSP) URL
|
||||||
|
[6], and SIP URI [7]. These identifiers are ubiquitous, appearing on
|
||||||
|
business cards, web pages, street signs, and so on. Because of this,
|
||||||
|
there has been a strong demand to acquire domain names that have
|
||||||
|
significance to people through equivalence to registered trademarks,
|
||||||
|
company names, types of services, and so on. Such identifiers serve
|
||||||
|
many business purposes, including extension of brand, advertising,
|
||||||
|
and so on.
|
||||||
|
|
||||||
|
People often make assumptions about the type of service that is or
|
||||||
|
should be provided by a host associated with that name, based on
|
||||||
|
their expectations and understanding of what the name implies. This,
|
||||||
|
in turn, triggers attempts by organizations to register domain names
|
||||||
|
based on that presumed user expectation. Examples of this are the
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 2]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
various proposals for a Top-Level Domain (TLD) that could be
|
||||||
|
associated with adult content [8], the requests for creation of TLDs
|
||||||
|
associated with mobile devices and services, and even phishing
|
||||||
|
attacks.
|
||||||
|
|
||||||
|
When these assumptions are codified into the behavior of an
|
||||||
|
automaton, such as an application client or server, as a result of
|
||||||
|
implementor choice, management directive, or domain owner policy, the
|
||||||
|
overall system can fail in various ways. This document describes a
|
||||||
|
number of typical ways in which these assumptions can be codified,
|
||||||
|
how they can be wrong, the consequences of those mistakes, and the
|
||||||
|
recommended ways in which they can be avoided.
|
||||||
|
|
||||||
|
Section 4 describes some of the possible assumptions that clients,
|
||||||
|
servers, and people can make about a domain name. In this context,
|
||||||
|
an "assumption" is defined as any behavior that is expected when
|
||||||
|
accessing a service at a domain name, even though the behavior is not
|
||||||
|
explicitly codified in protocol specifications. Frequently, these
|
||||||
|
assumptions involve ignoring parts of a specification based on an
|
||||||
|
assumption that the client or server is deployed in an environment
|
||||||
|
that is more rigid than the specification allows. Section 5
|
||||||
|
overviews some of the consequences of these false assumptions.
|
||||||
|
Generally speaking, these consequences can include a variety of
|
||||||
|
different interoperability failures, user experience failures, and
|
||||||
|
system failures. Section 6 discusses why these assumptions can be
|
||||||
|
false from the very beginning or become false at some point in the
|
||||||
|
future. Most commonly, they become false because the environment
|
||||||
|
changes in unexpected ways over time, and what was a valid assumption
|
||||||
|
before, no longer is. Other times, the assumptions prove wrong
|
||||||
|
because they were based on the belief that a specific community of
|
||||||
|
clients and servers was participating, and an element outside of that
|
||||||
|
community began participating.
|
||||||
|
|
||||||
|
Section 7 then provides some recommendations. These recommendations
|
||||||
|
encapsulate some of the engineering mantras that have been at the
|
||||||
|
root of Internet protocol design for decades. These include:
|
||||||
|
|
||||||
|
Follow the specifications.
|
||||||
|
|
||||||
|
Use the capability negotiation techniques provided in the
|
||||||
|
protocols.
|
||||||
|
|
||||||
|
Be liberal in what you accept, and conservative in what you send.
|
||||||
|
[18]
|
||||||
|
|
||||||
|
Overall, automata should not change their behavior within a protocol
|
||||||
|
based on the domain name, or some component of the domain name, of
|
||||||
|
the host they are communicating with.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 3]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
2. Target Audience
|
||||||
|
|
||||||
|
This document has several audiences. Firstly, it is aimed at
|
||||||
|
implementors who ultimately develop the software that make the false
|
||||||
|
assumptions that are the subject of this document. The
|
||||||
|
recommendations described here are meant to reinforce the engineering
|
||||||
|
guidelines that are often understood by implementors, but frequently
|
||||||
|
forgotten as deadlines near and pressures mount.
|
||||||
|
|
||||||
|
The document is also aimed at technology managers, who often develop
|
||||||
|
the requirements that lead to these false assumptions. For them,
|
||||||
|
this document serves as a vehicle for emphasizing the importance of
|
||||||
|
not taking shortcuts in the scope of applicability of a project.
|
||||||
|
|
||||||
|
Finally, this document is aimed at domain name policy makers and
|
||||||
|
administrators. For them, it points out the perils in establishing
|
||||||
|
domain policies that get codified into the operation of applications
|
||||||
|
running within that domain.
|
||||||
|
|
||||||
|
3. Modeling Usage of the DNS
|
||||||
|
|
||||||
|
|
||||||
|
+--------+
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| DNS |
|
||||||
|
|Service |
|
||||||
|
| |
|
||||||
|
+--------+
|
||||||
|
^ |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
/--\ | |
|
||||||
|
| | | V
|
||||||
|
| | +--------+ +--------+
|
||||||
|
\--/ | | | |
|
||||||
|
| | | | |
|
||||||
|
---+--- | Client |-------------------->| Server |
|
||||||
|
| | | | |
|
||||||
|
| | | | |
|
||||||
|
/\ +--------+ +--------+
|
||||||
|
/ \
|
||||||
|
/ \
|
||||||
|
|
||||||
|
User
|
||||||
|
Figure 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 4]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
Figure 1 shows a simple conceptual model of how the DNS is used by
|
||||||
|
applications. A user of the application obtains an identifier for
|
||||||
|
particular content or service it wishes to obtain. This identifier
|
||||||
|
is often a URL or URI that contains a domain name. The user enters
|
||||||
|
this identifier into its client application (for example, by typing
|
||||||
|
in the URL in a web browser window). The client is the automaton (a
|
||||||
|
software and/or hardware system) that contacts a server for that
|
||||||
|
application in order to provide service to the user. To do that, it
|
||||||
|
contacts a DNS server to resolve the domain name in the identifier to
|
||||||
|
an IP address. It then contacts the server at that IP address. This
|
||||||
|
simple model applies to application protocols such as HTTP [5], SIP
|
||||||
|
[7], RTSP [6], and SMTP [9].
|
||||||
|
|
||||||
|
>From this model, it is clear that three entities in the system can
|
||||||
|
potentially make false assumptions about the service provided by the
|
||||||
|
server. The human user may form expectations relating to the content
|
||||||
|
of the service based on a parsing of the host name from which the
|
||||||
|
content originated. The server might assume that the client
|
||||||
|
connecting to it supports protocols that it does not, can process
|
||||||
|
content that it cannot, or has capabilities that it does not.
|
||||||
|
Similarly, the client might assume that the server supports
|
||||||
|
protocols, content, or capabilities that it does not. Furthermore,
|
||||||
|
applications can potentially contain a multiplicity of humans,
|
||||||
|
clients, and servers, all of which can independently make these false
|
||||||
|
assumptions.
|
||||||
|
|
||||||
|
4. Possible Assumptions
|
||||||
|
|
||||||
|
For each of the three elements, there are many types of false
|
||||||
|
assumptions that can be made.
|
||||||
|
|
||||||
|
4.1. By the User
|
||||||
|
|
||||||
|
The set of possible assumptions here is nearly boundless. Users
|
||||||
|
might assume that an HTTP URL that looks like a company name maps to
|
||||||
|
a server run by that company. They might assume that an email from a
|
||||||
|
email address in the .gov TLD is actually from a government employee.
|
||||||
|
They might assume that the content obtained from a web server within
|
||||||
|
a TLD labeled as containing adult materials (for example, .sex)
|
||||||
|
actually contains adult content [8]. These assumptions are
|
||||||
|
unavoidable, may all be false, and are not the focus of this
|
||||||
|
document.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 5]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
4.2. By the Client
|
||||||
|
|
||||||
|
Even though the client is an automaton, it can make some of the same
|
||||||
|
assumptions that a human user might make. For example, many clients
|
||||||
|
assume that any host with a hostname that begins with "www" is a web
|
||||||
|
server, even though this assumption may be false.
|
||||||
|
|
||||||
|
In addition, the client concerns itself with the protocols needed to
|
||||||
|
communicate with the server. As a result, it might make assumptions
|
||||||
|
about the operation of the protocols for communicating with the
|
||||||
|
server. These assumptions manifest themselves in an implementation
|
||||||
|
when a standardized protocol negotiation technique defined by the
|
||||||
|
protocol is ignored, and instead, some kind of rule is coded into the
|
||||||
|
software that comes to its own conclusion about what the negotiation
|
||||||
|
would have determined. The result is often a loss of
|
||||||
|
interoperability, degradation in reliability, and worsening of user
|
||||||
|
experience.
|
||||||
|
|
||||||
|
Authentication Algorithm: Though a protocol might support a
|
||||||
|
multiplicity of authentication techniques, a client might assume
|
||||||
|
that a server always supports one that is only optional according
|
||||||
|
to the protocol. For example, a SIP client contacting a SIP
|
||||||
|
server in a domain that is apparently used to identify mobile
|
||||||
|
devices (for example, www.example.cellular) might assume that the
|
||||||
|
server supports the optional Authentication and Key Agreement
|
||||||
|
(AKA) digest technique [10], just because of the domain name that
|
||||||
|
was used to access the server. As another example, a web client
|
||||||
|
might assume that a server with the name https.example.com
|
||||||
|
supports HTTP over Transport Layer Security (TLS) [16].
|
||||||
|
|
||||||
|
Data Formats: Though a protocol might allow a multiplicity of data
|
||||||
|
formats to be sent from the server to the client, the client might
|
||||||
|
assume a specific one, rather than using the content labeling and
|
||||||
|
negotiation capabilities of the underlying protocol. For example,
|
||||||
|
an RTSP client might assume that all audio content delivered to it
|
||||||
|
from media.example.cellular uses a low-bandwidth codec. As
|
||||||
|
another example, a mail client might assume that the contents of
|
||||||
|
messages it retrieves from a mail server at mail.example.cellular
|
||||||
|
are always text, instead of checking the MIME headers [11] in the
|
||||||
|
message in order to determine the actual content type.
|
||||||
|
|
||||||
|
Protocol Extensions: A client may attempt an operation on the server
|
||||||
|
that requires the server to support an optional protocol
|
||||||
|
extension. However, rather than implementing the necessary
|
||||||
|
fallback logic, the client may falsely assume that the extension
|
||||||
|
is supported. As an example, a SIP client that requires reliable
|
||||||
|
provisional responses to its request (RFC 3262 [17]) might assume
|
||||||
|
that this extension is supported on servers in the domain
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 6]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
sip.example.telecom. Furthermore, the client would not implement
|
||||||
|
the fallback behavior defined in RFC 3262, since it would assume
|
||||||
|
that all servers it will communicate with are in this domain and
|
||||||
|
that all therefore support this extension. However, if the
|
||||||
|
assumptions prove wrong, the client is unable to make any phone
|
||||||
|
calls.
|
||||||
|
|
||||||
|
Languages: A client may support facilities for processing text
|
||||||
|
content differently depending on the language of the text. Rather
|
||||||
|
than determining the language from markers in the message from the
|
||||||
|
server, the client might assume a language based on the domain
|
||||||
|
name. This assumption can easily be wrong. For example, a client
|
||||||
|
might assume that any text in a web page retrieved from a server
|
||||||
|
within the .de country code TLD (ccTLD) is in German, and attempt
|
||||||
|
a translation to Finnish. This would fail dramatically if the
|
||||||
|
text was actually in French. Unfortunately, this client behavior
|
||||||
|
is sometimes exhibited because the server has not properly labeled
|
||||||
|
the language of the content in the first place, often because the
|
||||||
|
server assumed such a labeling was not needed. This is an example
|
||||||
|
of how these false assumptions can create vicious cycles.
|
||||||
|
|
||||||
|
4.3. By the Server
|
||||||
|
|
||||||
|
The server, like the client, is an automaton. Let us consider one
|
||||||
|
servicing a particular domain -- www.company.cellular, for example.
|
||||||
|
It might assume that all clients connecting to this domain support
|
||||||
|
particular capabilities, rather than using the underlying protocol to
|
||||||
|
make this determination. Some examples include:
|
||||||
|
|
||||||
|
Authentication Algorithm: The server can assume that a client
|
||||||
|
supports a particular, optional, authentication technique, and it
|
||||||
|
therefore does not support the mandatory one.
|
||||||
|
|
||||||
|
Language: The server can serve content in a particular language,
|
||||||
|
based on an assumption that clients accessing the domain speak a
|
||||||
|
particular language, or based on an assumption that clients coming
|
||||||
|
from a particular IP address speak a certain language.
|
||||||
|
|
||||||
|
Data Formats: The server can assume that the client supports a
|
||||||
|
particular set of MIME types and is only capable of sending ones
|
||||||
|
within that set. When it generates content in a protocol
|
||||||
|
response, it ignores any content negotiation headers that were
|
||||||
|
present in the request. For example, a web server might ignore
|
||||||
|
the Accept HTTP header field and send a specific image format.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 7]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
Protocol Extensions: The server might assume that the client supports
|
||||||
|
a particular optional protocol extension, and so it does not
|
||||||
|
support the fallback behavior necessary in the case where the
|
||||||
|
client does not.
|
||||||
|
|
||||||
|
Client Characteristics: The server might assume certain things about
|
||||||
|
the physical characteristics of its clients, such as memory
|
||||||
|
footprint, processing power, screen sizes, screen colors, pointing
|
||||||
|
devices, and so on. Based on these assumptions, it might choose
|
||||||
|
specific behaviors when processing a request. For example, a web
|
||||||
|
server might always assume that clients connect through cell
|
||||||
|
phones, and therefore return content that lacks images and is
|
||||||
|
tuned for such devices.
|
||||||
|
|
||||||
|
5. Consequences of False Assumptions
|
||||||
|
|
||||||
|
There are numerous negative outcomes that can arise from the various
|
||||||
|
false assumptions that users, servers, and clients can make. These
|
||||||
|
include:
|
||||||
|
|
||||||
|
Interoperability Failure: In these cases, the client or server
|
||||||
|
assumed some kind of protocol operation, and this assumption was
|
||||||
|
wrong. The result is that the two are unable to communicate, and
|
||||||
|
the user receives some kind of an error. This represents a total
|
||||||
|
interoperability failure, manifesting itself as a lack of service
|
||||||
|
to users of the system. Unfortunately, this kind of failure
|
||||||
|
persists. Repeated attempts over time by the client to access the
|
||||||
|
service will fail. Only a change in the server or client software
|
||||||
|
can fix this problem.
|
||||||
|
|
||||||
|
System Failure: In these cases, the client or server misinterpreted a
|
||||||
|
protocol operation, and this misinterpretation was serious enough
|
||||||
|
to uncover a bug in the implementation. The bug causes a system
|
||||||
|
crash or some kind of outage, either transient or permanent (until
|
||||||
|
user reset). If this failure occurs in a server, not only will
|
||||||
|
the connecting client lose service, but other clients attempting
|
||||||
|
to connect will not get service. As an example, if a web server
|
||||||
|
assumes that content passed to it from a client (created, for
|
||||||
|
example, by a digital camera) is of a particular content type, and
|
||||||
|
it always passes image content to a codec for decompression prior
|
||||||
|
to storage, the codec might crash when it unexpectedly receives an
|
||||||
|
image compressed in a different format. Of course, it might crash
|
||||||
|
even if the Content-Type was correct, but the compressed bitstream
|
||||||
|
was invalid. False assumptions merely introduce additional
|
||||||
|
failure cases.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 8]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
Poor User Experience: In these cases, the client and server
|
||||||
|
communicate, but the user receives a diminished user experience.
|
||||||
|
For example, if a client on a PC connects to a web site that
|
||||||
|
provides content for mobile devices, the content may be
|
||||||
|
underwhelming when viewed on the PC. Or, a client accessing a
|
||||||
|
streaming media service may receive content of very low bitrate,
|
||||||
|
even though the client supported better codecs. Indeed, if a user
|
||||||
|
wishes to access content from both a cellular device and a PC
|
||||||
|
using a shared address book (that is, an address book shared
|
||||||
|
across multiple devices), the user would need two entries in that
|
||||||
|
address book, and would need to use the right one from the right
|
||||||
|
device. This is a poor user experience.
|
||||||
|
|
||||||
|
Degraded Security: In these cases, a weaker security mechanism is
|
||||||
|
used than the one that ought to have been used. As an example, a
|
||||||
|
server in a domain might assume that it is only contacted by
|
||||||
|
clients with a limited set of authentication algorithms, even
|
||||||
|
though the clients have been recently upgraded to support a
|
||||||
|
stronger set.
|
||||||
|
|
||||||
|
6. Reasons Why the Assumptions Can Be False
|
||||||
|
|
||||||
|
Assumptions made by clients and servers about the operation of
|
||||||
|
protocols when contacting a particular domain are brittle, and can be
|
||||||
|
wrong for many reasons. On the server side, many of the assumptions
|
||||||
|
are based on the notion that a domain name will only be given to, or
|
||||||
|
used by, a restricted set of clients. If the holder of the domain
|
||||||
|
name assumes something about those clients, and can assume that only
|
||||||
|
those clients use the domain name, then it can configure or program
|
||||||
|
the server to operate specifically for those clients. Both parts of
|
||||||
|
this assumption can be wrong, as discussed in more detail below.
|
||||||
|
|
||||||
|
On the client side, the notion is similar, being based on the
|
||||||
|
assumption that a server within a particular domain will provide a
|
||||||
|
specific type of service. Sub-delegation and evolution, both
|
||||||
|
discussed below, can make these assumptions wrong.
|
||||||
|
|
||||||
|
6.1. Evolution
|
||||||
|
|
||||||
|
The Internet and the devices that access it are constantly evolving,
|
||||||
|
often at a rapid pace. Unfortunately, there is a tendency to build
|
||||||
|
for the here and now, and then worry about the future at a later
|
||||||
|
time. Many of the assumptions above are predicated on
|
||||||
|
characteristics of today's clients and servers. Support for specific
|
||||||
|
protocols, authentication techniques, or content are based on today's
|
||||||
|
standards and today's devices. Even though they may, for the most
|
||||||
|
part, be true, they won't always be. An excellent example is mobile
|
||||||
|
devices. A server servicing a domain accessed by mobile devices
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 9]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
might try to make assumptions about the protocols, protocol
|
||||||
|
extensions, security mechanisms, screen sizes, or processor power of
|
||||||
|
such devices. However, all of these characteristics can and will
|
||||||
|
change over time.
|
||||||
|
|
||||||
|
When they do change, the change is usually evolutionary. The result
|
||||||
|
is that the assumptions remain valid in some cases, but not in
|
||||||
|
others. It is difficult to fix such systems, since it requires the
|
||||||
|
server to detect what type of client is connecting, and what its
|
||||||
|
capabilities are. Unless the system is built and deployed with these
|
||||||
|
capability negotiation techniques built in to begin with, such
|
||||||
|
detection can be extremely difficult. In fact, fixing it will often
|
||||||
|
require the addition of such capability negotiation features that, if
|
||||||
|
they had been in place and used to begin with, would have avoided the
|
||||||
|
problem altogether.
|
||||||
|
|
||||||
|
6.2. Leakage
|
||||||
|
|
||||||
|
Servers also make assumptions because of the belief that they will
|
||||||
|
only be accessed by specific clients, and in particular, those that
|
||||||
|
are configured or provisioned to use the domain name. In essence,
|
||||||
|
there is an assumption of community -- that a specific community
|
||||||
|
knows and uses the domain name, while others outside of the community
|
||||||
|
do not.
|
||||||
|
|
||||||
|
The problem is that this notion of community is a false one. The
|
||||||
|
Internet is global. The DNS is global. There is no technical
|
||||||
|
barrier that separates those inside of the community from those
|
||||||
|
outside. The ease with which information propagates across the
|
||||||
|
Internet makes it extremely likely that such domain names will
|
||||||
|
eventually find their way into clients outside of the presumed
|
||||||
|
community. The ubiquitous presence of domain names in various URI
|
||||||
|
formats, coupled with the ease of conveyance of URIs, makes such
|
||||||
|
leakage merely a matter of time. Furthermore, since the DNS is
|
||||||
|
global, and since it can only have one root [12], it becomes possible
|
||||||
|
for clients outside of the community to search and find and use such
|
||||||
|
"special" domain names.
|
||||||
|
|
||||||
|
Indeed, this leakage is a strength of the Internet architecture, not
|
||||||
|
a weakness. It enables global access to services from any client
|
||||||
|
with a connection to the Internet. That, in turn, allows for rapid
|
||||||
|
growth in the number of customers for any particular service.
|
||||||
|
|
||||||
|
6.3. Sub-Delegation
|
||||||
|
|
||||||
|
Clients and users make assumptions about domains because of the
|
||||||
|
notion that there is some kind of centralized control that can
|
||||||
|
enforce those assumptions. However, the DNS is not centralized; it
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 10]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
is distributed. If a domain doesn't delegate its sub-domains and has
|
||||||
|
its records within a single zone, it is possible to maintain a
|
||||||
|
centralized policy about operation of its domain. However, once a
|
||||||
|
domain gets sufficiently large that the domain administrators begin
|
||||||
|
to delegate sub-domains to other authorities, it becomes increasingly
|
||||||
|
difficult to maintain any kind of central control on the nature of
|
||||||
|
the service provided in each sub-domain.
|
||||||
|
|
||||||
|
Similarly, the usage of domain names with human semantic connotation
|
||||||
|
tends to lead to a registration of multiple domains in which a
|
||||||
|
particular service is to run. As an example, a service provider with
|
||||||
|
the name "example" might register and set up its services in
|
||||||
|
"example.com", "example.net", and generally example.foo for each foo
|
||||||
|
that is a valid TLD. This, like sub-delegation, results in a growth
|
||||||
|
in the number of domains over which it is difficult to maintain
|
||||||
|
centralized control.
|
||||||
|
|
||||||
|
Not that it is not possible, since there are many examples of
|
||||||
|
successful administration of policies across sub-domains many levels
|
||||||
|
deep. However, it takes an increasing amount of effort to ensure
|
||||||
|
this result, as it requires human intervention and the creation of
|
||||||
|
process and procedure. Automated validation of adherence to policies
|
||||||
|
is very difficult to do, as there is no way to automatically verify
|
||||||
|
many policies that might be put into place.
|
||||||
|
|
||||||
|
A less costly process for providing centralized management of
|
||||||
|
policies is to just hope that any centralized policies are being
|
||||||
|
followed, and then wait for complaints or perform random audits.
|
||||||
|
Those approaches have many problems.
|
||||||
|
|
||||||
|
The invalidation of assumptions due to sub-delegation is discussed in
|
||||||
|
further detail in Section 4.1.3 of [8] and in Section 3.3 of [20].
|
||||||
|
|
||||||
|
As a result of the fragility of policy continuity across sub-
|
||||||
|
delegations, if a client or user assumes some kind of property
|
||||||
|
associated with a TLD (such as ".wifi"), it becomes increasingly more
|
||||||
|
likely with the number of sub-domains that this property will not
|
||||||
|
exist in a server identified by a particular name. For example, in
|
||||||
|
"store.chain.company.provider.wifi", there may be four levels of
|
||||||
|
delegation from ".wifi", making it quite likely that, unless the
|
||||||
|
holder of ".wifi" is working diligently, the properties that the
|
||||||
|
holder of ".wifi" wishes to enforce are not present. These
|
||||||
|
properties may not be present due to human error or due to a willful
|
||||||
|
decision not to adhere to them.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 11]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
6.4. Mobility
|
||||||
|
|
||||||
|
One of the primary value propositions of a hostname as an identifier
|
||||||
|
is its persistence. A client can change IP addresses, yet still
|
||||||
|
retain a persistent identifier used by other hosts to reach it.
|
||||||
|
Because their value derives from their persistence, hostnames tend to
|
||||||
|
move with a host not just as it changes IP addresses, but as it
|
||||||
|
changes access network providers and technologies. For this reason,
|
||||||
|
assumptions made about a host based on the presumed access network
|
||||||
|
corresponding to that hostname tend to be wrong over time. As an
|
||||||
|
example, a PC might normally be connected to its broadband provider,
|
||||||
|
and through dynamic DNS have a hostname within the domain of that
|
||||||
|
provider. However, one cannot assume that any host within that
|
||||||
|
network has access over a broadband link; the user could connect
|
||||||
|
their PC over a low-bandwidth wireless access network and still
|
||||||
|
retain its domain name.
|
||||||
|
|
||||||
|
6.5. Human Error
|
||||||
|
|
||||||
|
Of course, human error can be the source of errors in any system, and
|
||||||
|
the same is true here. There are many examples relevant to the
|
||||||
|
problem under discussion.
|
||||||
|
|
||||||
|
A client implementation may make the assumption that, just because a
|
||||||
|
DNS SRV record exists for a particular protocol in a particular
|
||||||
|
domain, indicating that the service is available on some port, that
|
||||||
|
the service is, in fact, running there. This assumption could be
|
||||||
|
wrong because the SRV records haven't been updated by the system
|
||||||
|
administrators to reflect the services currently running. As another
|
||||||
|
example, a client might assume that a particular domain policy
|
||||||
|
applies to all sub-domains. However, a system administrator might
|
||||||
|
have omitted to apply the policy to servers running in one of those
|
||||||
|
sub-domains.
|
||||||
|
|
||||||
|
7. Recommendations
|
||||||
|
|
||||||
|
Based on these problems, the clear conclusion is that clients,
|
||||||
|
servers, and users should not make assumptions on the nature of the
|
||||||
|
service provided to, or by, a domain. More specifically, however,
|
||||||
|
the following can be said:
|
||||||
|
|
||||||
|
Follow the specifications: When specifications define mandatory
|
||||||
|
baseline procedures and formats, those should be implemented and
|
||||||
|
supported, even if the expectation is that optional procedures
|
||||||
|
will most often be used. For example, if a specification mandates
|
||||||
|
a particular baseline authentication technique, but allows others
|
||||||
|
to be negotiated and used, implementations need to implement the
|
||||||
|
baseline authentication algorithm even if the other ones are used
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 12]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
most of the time. Put more simply, the behavior of the protocol
|
||||||
|
machinery should never change based on the domain name of the
|
||||||
|
host.
|
||||||
|
|
||||||
|
Use capability negotiation: Many protocols are engineered with
|
||||||
|
capability negotiation mechanisms. For example, a content
|
||||||
|
negotiation framework has been defined for protocols using MIME
|
||||||
|
content [13] [14] [15]. SIP allows for clients to negotiate the
|
||||||
|
media types used in the multimedia session, as well as protocol
|
||||||
|
parameters. HTTP allows for clients to negotiate the media types
|
||||||
|
returned in requests for content. When such features are
|
||||||
|
available in a protocol, client and servers should make use of
|
||||||
|
them rather than making assumptions about supported capabilities.
|
||||||
|
A corollary is that protocol designers should include such
|
||||||
|
mechanisms when evolution is expected in the usage of the
|
||||||
|
protocol.
|
||||||
|
|
||||||
|
"Be liberal in what you accept, and conservative in what you send"
|
||||||
|
[18]: This axiom of Internet protocol design is applicable here
|
||||||
|
as well. Implementations should be prepared for the full breadth
|
||||||
|
of what a protocol allows another entity to send, rather than be
|
||||||
|
limiting in what it is willing to receive.
|
||||||
|
|
||||||
|
To summarize -- there is never a need to make assumptions. Rather
|
||||||
|
than doing so, utilize the specifications and the negotiation
|
||||||
|
capabilities they provide, and the overall system will be robust and
|
||||||
|
interoperable.
|
||||||
|
|
||||||
|
8. A Note on RFC 2219 and RFC 2782
|
||||||
|
|
||||||
|
Based on the definition of an assumption given here, the behavior
|
||||||
|
hinted at by records in the DNS also represents an assumption. RFC
|
||||||
|
2219 [19] defines well-known aliases that can be used to construct
|
||||||
|
domain names for reaching various well-known services in a domain.
|
||||||
|
This approach was later followed by the definition of a new resource
|
||||||
|
record, the SRV record [2], which specifies that a particular service
|
||||||
|
is running on a server in a domain. Although both of these
|
||||||
|
mechanisms are useful as a hint that a particular service is running
|
||||||
|
in a domain, both of them represent assumptions that may be false.
|
||||||
|
However, they differ in the set of reasons why those assumptions
|
||||||
|
might be false.
|
||||||
|
|
||||||
|
A client that assumes that "ftp.example.com" is an FTP server may be
|
||||||
|
wrong because the presumed naming convention in RFC 2219 was not
|
||||||
|
known by, or not followed by, the owner of domain.com. With RFC
|
||||||
|
2782, an SRV record for a particular service would be present only by
|
||||||
|
explicit choice of the domain administrator, and thus a client that
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 13]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
assumes that the corresponding host provides this service would be
|
||||||
|
wrong only because of human error in configuration. In this case,
|
||||||
|
the assumption is less likely to be wrong, but it certainly can be.
|
||||||
|
|
||||||
|
The only way to determine with certainty that a service is running on
|
||||||
|
a host is to initiate a connection to the port for that service, and
|
||||||
|
check. Implementations need to be careful not to codify any
|
||||||
|
behaviors that cause failures should the information provided in the
|
||||||
|
record actually be false. This borders on common sense for robust
|
||||||
|
implementations, but it is valuable to raise this point explicitly.
|
||||||
|
|
||||||
|
9. Security Considerations
|
||||||
|
|
||||||
|
One of the assumptions that can be made by clients or servers is the
|
||||||
|
availability and usage (or lack thereof) of certain security
|
||||||
|
protocols and algorithms. For example, a client accessing a service
|
||||||
|
in a particular domain might assume a specific authentication
|
||||||
|
algorithm or hash function in the application protocol. It is
|
||||||
|
possible that, over time, weaknesses are found in such a technique,
|
||||||
|
requiring usage of a different mechanism. Similarly, a system might
|
||||||
|
start with an insecure mechanism, and then decide later on to use a
|
||||||
|
secure one. In either case, assumptions made on security properties
|
||||||
|
can result in interoperability failures, or worse yet, providing
|
||||||
|
service in an insecure way, even though the client asked for, and
|
||||||
|
thought it would get, secure service. These kinds of assumptions are
|
||||||
|
fundamentally unsound even if the records themselves are secured with
|
||||||
|
DNSSEC.
|
||||||
|
|
||||||
|
10. Acknowledgements
|
||||||
|
|
||||||
|
The IAB would like to thank John Klensin, Keith Moore and Peter Koch
|
||||||
|
for their comments.
|
||||||
|
|
||||||
|
11. IAB Members
|
||||||
|
|
||||||
|
Internet Architecture Board members at the time of writing of this
|
||||||
|
document are:
|
||||||
|
|
||||||
|
Bernard Aboba
|
||||||
|
|
||||||
|
Loa Andersson
|
||||||
|
|
||||||
|
Brian Carpenter
|
||||||
|
|
||||||
|
Leslie Daigle
|
||||||
|
|
||||||
|
Patrik Faltstrom
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 14]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
Bob Hinden
|
||||||
|
|
||||||
|
Kurtis Lindqvist
|
||||||
|
|
||||||
|
David Meyer
|
||||||
|
|
||||||
|
Pekka Nikander
|
||||||
|
|
||||||
|
Eric Rescorla
|
||||||
|
|
||||||
|
Pete Resnick
|
||||||
|
|
||||||
|
Jonathan Rosenberg
|
||||||
|
|
||||||
|
12. Informative References
|
||||||
|
|
||||||
|
[1] Mockapetris, P., "Domain names - concepts and facilities",
|
||||||
|
STD 13, RFC 1034, November 1987.
|
||||||
|
|
||||||
|
[2] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for
|
||||||
|
specifying the location of services (DNS SRV)", RFC 2782,
|
||||||
|
February 2000.
|
||||||
|
|
||||||
|
[3] Mealling, M., "Dynamic Delegation Discovery System (DDDS) Part
|
||||||
|
Three: The Domain Name System (DNS) Database", RFC 3403,
|
||||||
|
October 2002.
|
||||||
|
|
||||||
|
[4] Davis, C., Vixie, P., Goodwin, T., and I. Dickinson, "A Means
|
||||||
|
for Expressing Location Information in the Domain Name System",
|
||||||
|
RFC 1876, January 1996.
|
||||||
|
|
||||||
|
[5] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L.,
|
||||||
|
Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol --
|
||||||
|
HTTP/1.1", RFC 2616, June 1999.
|
||||||
|
|
||||||
|
[6] Schulzrinne, H., Rao, A., and R. Lanphier, "Real Time Streaming
|
||||||
|
Protocol (RTSP)", RFC 2326, April 1998.
|
||||||
|
|
||||||
|
[7] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
|
||||||
|
Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
|
||||||
|
Session Initiation Protocol", RFC 3261, June 2002.
|
||||||
|
|
||||||
|
[8] Eastlake, D., ".sex Considered Dangerous", RFC 3675,
|
||||||
|
February 2004.
|
||||||
|
|
||||||
|
[9] Klensin, J., "Simple Mail Transfer Protocol", RFC 2821,
|
||||||
|
April 2001.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 15]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
[10] Niemi, A., Arkko, J., and V. Torvinen, "Hypertext Transfer
|
||||||
|
Protocol (HTTP) Digest Authentication Using Authentication and
|
||||||
|
Key Agreement (AKA)", RFC 3310, September 2002.
|
||||||
|
|
||||||
|
[11] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
|
||||||
|
Extensions (MIME) Part One: Format of Internet Message Bodies",
|
||||||
|
RFC 2045, November 1996.
|
||||||
|
|
||||||
|
[12] Internet Architecture Board, "IAB Technical Comment on the
|
||||||
|
Unique DNS Root", RFC 2826, May 2000.
|
||||||
|
|
||||||
|
[13] Klyne, G., "Indicating Media Features for MIME Content",
|
||||||
|
RFC 2912, September 2000.
|
||||||
|
|
||||||
|
[14] Klyne, G., "A Syntax for Describing Media Feature Sets",
|
||||||
|
RFC 2533, March 1999.
|
||||||
|
|
||||||
|
[15] Klyne, G., "Protocol-independent Content Negotiation
|
||||||
|
Framework", RFC 2703, September 1999.
|
||||||
|
|
||||||
|
[16] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
|
||||||
|
|
||||||
|
[17] Rosenberg, J. and H. Schulzrinne, "Reliability of Provisional
|
||||||
|
Responses in Session Initiation Protocol (SIP)", RFC 3262,
|
||||||
|
June 2002.
|
||||||
|
|
||||||
|
[18] Braden, R., "Requirements for Internet Hosts - Communication
|
||||||
|
Layers", STD 3, RFC 1122, October 1989.
|
||||||
|
|
||||||
|
[19] Hamilton, M. and R. Wright, "Use of DNS Aliases for Network
|
||||||
|
Services", BCP 17, RFC 2219, October 1997.
|
||||||
|
|
||||||
|
[20] Faltstrom, P., "Design Choices When Expanding DNS", Work in
|
||||||
|
Progress, June 2005.
|
||||||
|
|
||||||
|
Author's Address
|
||||||
|
|
||||||
|
Jonathan Rosenberg, Editor
|
||||||
|
IAB
|
||||||
|
600 Lanidex Plaza
|
||||||
|
Parsippany, NJ 07054
|
||||||
|
US
|
||||||
|
|
||||||
|
Phone: +1 973 952-5000
|
||||||
|
EMail: jdrosen@cisco.com
|
||||||
|
URI: http://www.jdrosen.net
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 16]
|
||||||
|
|
||||||
|
RFC 4367 Name Assumptions February 2006
|
||||||
|
|
||||||
|
|
||||||
|
Full Copyright Statement
|
||||||
|
|
||||||
|
Copyright (C) The Internet Society (2006).
|
||||||
|
|
||||||
|
This document is subject to the rights, licenses and restrictions
|
||||||
|
contained in BCP 78, and except as set forth therein, the authors
|
||||||
|
retain all their rights.
|
||||||
|
|
||||||
|
This document and the information contained herein are provided on an
|
||||||
|
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||||
|
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
|
||||||
|
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
|
||||||
|
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
|
||||||
|
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
Intellectual Property
|
||||||
|
|
||||||
|
The IETF takes no position regarding the validity or scope of any
|
||||||
|
Intellectual Property Rights or other rights that might be claimed to
|
||||||
|
pertain to the implementation or use of the technology described in
|
||||||
|
this document or the extent to which any license under such rights
|
||||||
|
might or might not be available; nor does it represent that it has
|
||||||
|
made any independent effort to identify any such rights. Information
|
||||||
|
on the procedures with respect to rights in RFC documents can be
|
||||||
|
found in BCP 78 and BCP 79.
|
||||||
|
|
||||||
|
Copies of IPR disclosures made to the IETF Secretariat and any
|
||||||
|
assurances of licenses to be made available, or the result of an
|
||||||
|
attempt made to obtain a general license or permission for the use of
|
||||||
|
such proprietary rights by implementers or users of this
|
||||||
|
specification can be obtained from the IETF on-line IPR repository at
|
||||||
|
http://www.ietf.org/ipr.
|
||||||
|
|
||||||
|
The IETF invites any interested party to bring to its attention any
|
||||||
|
copyrights, patents or patent applications, or other proprietary
|
||||||
|
rights that may cover technology that may be required to implement
|
||||||
|
this standard. Please address the information to the IETF at
|
||||||
|
ietf-ipr@ietf.org.
|
||||||
|
|
||||||
|
Acknowledgement
|
||||||
|
|
||||||
|
Funding for the RFC Editor function is provided by the IETF
|
||||||
|
Administrative Support Activity (IASA).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Rosenberg Informational [Page 17]
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user