RFC 7819 INFORMATIONAL PRIVACY · DHCP · TRACKING

DHCP Privacy: Privacy Considerations for DHCP

What a DHCP request tells an observer about the device that sent it, and how the protocol leaks that information.

On rfc-editor.org ↗
PUBLISHED
April 2016
AUTHORS
S. Jiang, S. Krishnan, T. Mrugalski
STREAM
IETF
TYPE FIELD IN THE CLIENT IDENTIFIER
Normally 255
IA_ID FIELD IN THE CLIENT IDENTIFIER
Four bytes
CLIENT ID PUBLISHED IN THE DNS
SHA-256 digest of the client-id
RECOMMENDED DHCPV6 DUID TYPE
DUID-LLT, link-layer plus time
RECOMMENDED CLIENT IDENTIFIER SOURCE
The permanent link-layer address of the interface
SUBSCRIBER-ID FORMAT
An ASCII string set by the network provider
DOI
10.17487/RFC7819

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                          S. Jiang
Request for Comments: 7819                  Huawei Technologies Co., Ltd
Category: Informational                                      S. Krishnan
ISSN: 2070-1721                                                 Ericsson
                                                            T. Mrugalski
                                                                     ISC
                                                              April 2016


                    Privacy Considerations for DHCP

Abstract

   DHCP is a protocol that is used to provide addressing and
   configuration information to IPv4 hosts.  This document discusses the
   various identifiers used by DHCP and the potential privacy issues.

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/rfc7819.

Copyright Notice

   Copyright (c) 2016 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  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Requirements Language and Terminology . . . . . . . . . . . .   3
   3.  DHCP Options Carrying Identifiers . . . . . . . . . . . . . .   4
     3.1.  Client Identifier Option  . . . . . . . . . . . . . . . .   4
     3.2.  Address Fields and Options  . . . . . . . . . . . . . . .   4
     3.3.  Client FQDN Option  . . . . . . . . . . . . . . . . . . .   5
     3.4.  Parameter Request List Option . . . . . . . . . . . . . .   5
     3.5.  Vendor Class and Vendor-Identifying Vendor Class Options    5
     3.6.  Civic Location Option . . . . . . . . . . . . . . . . . .   6
     3.7.  Coordinate-Based Location Option  . . . . . . . . . . . .   6
     3.8.  Client System Architecture Type Option  . . . . . . . . .   6
     3.9.  Relay Agent Information Option and Suboptions . . . . . .   6
   4.  Existing Mechanisms That Affect Privacy . . . . . . . . . . .   7
     4.1.  DNS Updates . . . . . . . . . . . . . . . . . . . . . . .   7
     4.2.  Allocation Strategies . . . . . . . . . . . . . . . . . .   7
   5.  Attacks . . . . . . . . . . . . . . . . . . . . . . . . . . .   9
     5.1.  Device Type Discovery . . . . . . . . . . . . . . . . . .   9
     5.2.  Operating System Discovery  . . . . . . . . . . . . . . .   9
     5.3.  Finding Location Information  . . . . . . . . . . . . . .   9
     5.4.  Finding Previously Visited Networks . . . . . . . . . . .   9
     5.5.  Finding a Stable Identity . . . . . . . . . . . . . . . .   9
     5.6.  Pervasive Monitoring  . . . . . . . . . . . . . . . . . .  10
     5.7.  Finding Client's IP Address or Hostname . . . . . . . . .  10
     5.8.  Correlation of Activities over Time . . . . . . . . . . .  10
     5.9.  Location Tracking . . . . . . . . . . . . . . . . . . . .  10
     5.10. Leasequery and Bulk Leasequery  . . . . . . . . . . . . .  11
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  11
   7.  Privacy Considerations  . . . . . . . . . . . . . . . . . . .  11
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  12
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .  12
     8.2.  Informative References  . . . . . . . . . . . . . . . . .  12
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  14
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  14

1.  Introduction

   The Dynamic Host Configuration Protocol (DHCP) [RFC2131] is used to
   provide addressing and configuration information to IPv4 hosts.  DHCP
   uses several identifiers that could become a source for gleaning
   information about the IPv4 host.  This information may include device
   type, operating system information, location(s) that the device may
   have previously visited, etc.  This document discusses the various
   identifiers used by DHCP and the potential privacy issues [RFC6973].
   In particular, it takes into consideration the problem of pervasive
   monitoring [RFC7258].

   Future works may propose protocol changes to fix the privacy issues
   that have been analyzed in this document.  Those changes are out of
   scope for this document.

   The primary focus of this document is around privacy considerations
   for clients to support client mobility and connection to random
   networks.  The privacy of DHCP servers and relay agents is considered
   less important as they are typically open for public services.  And,
   it is generally assumed that communication from relay agent to server
   is protected from casual snooping, as that communication occurs in
   the provider's backbone.  Nevertheless, the topics involving relay
   agents and servers are explored to some degree.  However, future work
   may want to further explore the privacy of DHCP servers and relay
   agents.

2.  Requirements Language and Terminology

   Naming conventions from [RFC2131] and related documents are used
   throughout this document.

   In addition, the following terminology is used:

   Stable identifier  - Any property disclosed by a DHCP client that
           does not change over time or changes very infrequently and is
           unique for said client in a given context.  Examples include
           MAC address, client-id, and a hostname.  Some identifiers may
           be considered stable only under certain conditions; for
           example, one client implementation may keep its client-id
           stored in stable storage, while another may generate it on
           the fly and use a different one after each boot.  Stable
           identifiers may or may not be globally unique.

3.  DHCP Options Carrying Identifiers

   In DHCP, there are a few options that contain identification
   information or that can be used to extract identification information
   about the client.  This section enumerates various options and the
   identifiers that they convey and that can be used to disclose client
   identification.  They are targets of various attacks that are
   analyzed in Section 5.

3.1.  Client Identifier Option

   The Client Identifier option [RFC2131] is used to pass an explicit
   client identifier to a DHCP server.

   The client identifier is an opaque key that must be unique to that
   client within the subnet to which the client is attached.  It
   typically remains stable after it has been initially generated.  It
   may contain a hardware address, identical to the contents of the
   'chaddr' field, or another type of identifier, such as a DNS name.
   Section 9.2 of [RFC3315] specifies DUID-LLT (Link-layer plus time) as
   the recommended DUID (DHCP Unique Identifier) type in DHCPv6.
   Section 6.1 of [RFC4361] introduces this concept to DHCP.  Those two
   documents recommend that client identifiers be generated by using the
   permanent link-layer address of the network interface that the client
   is trying to configure.  [RFC4361] updates the recommendation for a
   Client Identifier as follows: "[it] consists of a type field whose
   value is normally 255, followed by a four-byte IA_ID field, followed
   by the DUID for the client as defined in RFC 3315, section 9".  This
   does not change the lifecycle of client identifiers.  Clients are
   expected to generate their client identifiers once (during first
   operation) and store them in non-volatile storage or use the same
   deterministic algorithm to generate the same client identifier values
   again.

   This means that typically an implementation will use the available
   link-layer address during its first boot.  Even if the administrator
   enables link-layer address randomization, it is likely that it was
   not yet enabled during the first device boot.  Hence the original,
   unobfuscated link-layer address will likely end up being announced as
   the client identifier, even if the link-layer address has changed (or
   even if it is being changed on a periodic basis).  The exposure of
   the original link-layer address in the client identifier will also
   undermine other privacy extensions such as [RFC4941].

3.2.  Address Fields and Options

   The 'yiaddr' field [RFC2131] in a DHCP message is used to convey an
   allocated address from the server to the client.

   The DHCP specification [RFC2131] provides a way to specify the client
   link-layer address in the DHCP message header.  A DHCP message header
   has 'htype' and 'chaddr' fields to specify the client link-layer
   address type and the link-layer address, respectively.  The 'chaddr'
   field is used both as a hardware address for transmission of reply
   messages and as a client identifier.

   The 'requested IP address' option [RFC2131] is used by a client to
   suggest that a particular IP address be assigned.

3.3.  Client FQDN Option

   The Client Fully Qualified Domain Name (FQDN) option [RFC4702] is
   used by DHCP clients and servers to exchange information about the
   client's FQDN and about who has the responsibility for updating the
   DNS with the associated A and PTR RRs.

   A client can use this option to convey all or part of its domain name
   to a DHCP server for the IP-address-to-FQDN mapping.  In most cases,
   a client sends its hostname as a hint for the server.  The DHCP
   server may be configured to modify the supplied name or to substitute
   a different name.  The server should send its notion of the complete
   FQDN for the client in the Domain Name field.

3.4.  Parameter Request List Option

   The Parameter Request List option [RFC2131] is used to inform the
   server about options the client wants the server to send to the
   client.  The contents of a Parameter Request List option are the
   option codes of the options requested by the client.

3.5.  Vendor Class and Vendor-Identifying Vendor Class Options

   The Vendor Class option [RFC2131], the Vendor-Identifying Vendor
   Class option, and the Vendor-Identifying Vendor Information option
   [RFC3925] are used by the DHCP client to identify the vendor that
   manufactured the hardware on which the client is running.

   The information contained in the data area of this option is
   contained in one or more opaque fields that identify the details of
   the hardware configuration of the host on which the client is running
   or of industry consortium compliance -- for example, the version of
   the operating system the client is running or the amount of memory
   installed on the client.

3.6.  Civic Location Option

   DHCP servers use the Civic Location Option [RFC4776] to deliver
   location information (the civic and postal addresses) to DHCP
   clients.  It may refer to three locations: the location of the DHCP
   server, the location of the network element believed to be closest to
   the client, or the location of the client, identified by the "what"
   element within the option.

3.7.  Coordinate-Based Location Option

   The GeoConf and GeoLoc options [RFC6225] are used by a DHCP server to
   provide coordinate-based geographic location information to DHCP
   clients.  They enable a DHCP client to obtain its geographic
   location.

3.8.  Client System Architecture Type Option

   The Client System Architecture Type Option [RFC4578] is used by a
   DHCP client to send a list of supported architecture types to the
   DHCP server.  It is used by clients that must be booted using the
   network rather than from local storage, so the server can decide
   which boot file should be provided to the client.

3.9.  Relay Agent Information Option and Suboptions

   A DHCP relay agent includes a Relay Agent Information option[RFC3046]
   to identify the remote host end of the circuit.  It contains a
   "circuit ID" suboption for the incoming circuit, which is an agent-
   local identifier of the circuit from which a DHCP client-to-server
   packet was received, and a "remote ID" suboption that provides a
   trusted identifier for the remote high-speed modem.

   Possible encoding of the "circuit ID" suboption includes: router
   interface number, switching hub port number, remote access server
   port number, frame relay Data Link Connection Identifier (DLCI), ATM
   virtual circuit number, cable data virtual circuit number, etc.

   Possible encoding of the "remote ID" suboption includes: a "caller
   ID" telephone number for dial-up connection, a "user name" prompted
   for by a remote access server, a remote caller's ATM address, a
   "modem ID" of a cable data modem, the remote IP address of a point-
   to-point link, a remote X.25 address for X.25 connections, etc.

   The link-selection suboption [RFC3527] is used by any DHCP relay
   agent that desires to specify a subnet/link for a DHCP client request
   that it is relaying but needs the subnet/link specification to be
   different from the IP address the DHCP server should use when
   communicating with the relay agent.  It contains an IP address that
   can identify the client's subnet/link.  Also, assuming there is
   knowledge of the network topology, it also reveals client location.

   A DHCP relay includes a Subscriber-ID option [RFC3993] to associate
   some provider-specific information with clients' DHCP messages that
   is independent of the physical network configuration through which
   the subscriber is connected.  The "subscriber-id" assigned by the
   provider is intended to be stable as customers connect through
   different paths and as network changes occur.  The Subscriber-ID is
   an ASCII string that is assigned and configured by the network
   provider.

4.  Existing Mechanisms That Affect Privacy

   This section describes deployed DHCP mechanisms that affect privacy.

4.1.  DNS Updates

   The Client FQDN (Fully Qualified Domain Name) Option [RFC4702] used
   along with DNS Updates [RFC2136] defines a mechanism that allows both
   clients and server to insert into the DNS domain information about
   clients.  Both forward (A) and reverse (PTR) resource records can be
   updated.  This allows other nodes to conveniently refer to a host,
   despite the fact that its IP address may be changing.

   This mechanism exposes two important pieces of information: current
   address (which can be mapped to current location) and client's
   hostname.  The stable hostname can then be used to correlate the
   client across different network attachments even when its IP
   addresses keep changing.

4.2.  Allocation Strategies

   A DHCP server running in typical, stateful mode is given a task of
   managing one or more pools of IP addresses.  When a client requests
   an address, the server must pick an address out of a configured pool.
   Depending on the server's implementation, various allocation
   strategies are possible.  Choices in this regard may have privacy
   implications.  Note that the constraints in DHCP and DHCPv6 are
   radically different, but servers that allow allocation strategy
   configuration may allow configuring them in both DHCP and DHCPv6.
   Not every allocation strategy is equally suitable for DHCP and for
   DHCPv6.

   Iterative allocation:  A server may choose to allocate addresses one
      by one.  That strategy has the benefit of being very fast, thus
      being favored in deployments that prefer performance.  However, it
      makes the allocated addresses very predictable.  Also, since the
      addresses allocated tend to be clustered at the beginning of an
      available pool, it makes scanning attacks much easier.

   Identifier-based allocation:  Some server implementations may choose
      to allocate an address that is based on one of the available
      identifiers, e.g., client identifier or MAC address.  It is also
      convenient, as a returning client is very likely to get the same
      address.  Those properties are convenient for system
      administrators, so DHCP server implementers are often requested to
      implement it.  The downside of such an allocation is that the
      client has a very stable IP address.  That means that correlation
      of activities over time, location tracking, address scanning, and
      OS/vendor discovery apply.  This is certainly an issue in DHCPv6,
      but due to a much smaller address space it is almost never a
      problem in DHCP.

   Hash allocation:  This is an extension of identifier-based
      allocation.  Instead of using the identifier directly, it is
      hashed first.  If the hash is implemented correctly, it removes
      the flaw of disclosing the identifier, a property that eliminates
      susceptibility to address scanning and OS/vendor discovery.  If
      the hash is poorly implemented (e.g., it can be reversed), it
      introduces no improvement over identifier-based allocation.

   Random allocation:  A server can pick a resource randomly out of an
      available pool.  This allocation scheme essentially prevents
      returning clients from getting the same address again.  On the
      other hand, it is beneficial from a privacy perspective as
      addresses generated that way are not susceptible to correlation
      attacks, OS/vendor discovery attacks, or identity discovery
      attacks.  Note that even though the address itself may be
      resilient to a given attack, the client may still be susceptible
      if additional information is disclosed in another way, e.g., the
      client's address may be randomized, but it still can leak its MAC
      address in the Client Identifier option.

   Other allocation strategies may be implemented.

   Given the limited size of most IPv4 public address pools, allocation
   mechanisms in IPv4 may not provide much privacy protection or leak
   much useful information, if misused.

5.  Attacks

5.1.  Device Type Discovery

   The type of device used by the client can be guessed by the attacker
   using the Vendor Class Option, the 'chaddr' field, and by parsing the
   Client ID Option.  All of those options may contain an
   Organizationally Unique Identifier (OUI) that represents the device's
   vendor.  That knowledge can be used for device-specific vulnerability
   exploitation attacks.

5.2.  Operating System Discovery

   The operating system running on a client can be guessed using the
   Vendor Class option, the Client System Architecture Type option, or
   by using fingerprinting techniques on the combination of options
   requested using the Parameter Request List option.

5.3.  Finding Location Information

   The location information can be obtained by the attacker by many
   means.  The most direct way to obtain this information is by looking
   into a message originating from the server that contains the Civic
   Location, GeoConf, or GeoLoc options.  It can also be indirectly
   inferred using the Relay Agent Information option, with the remote ID
   suboption, the circuit ID option (e.g., if an access circuit on an
   Access Node corresponds to a civic location), or the Subscriber ID
   Option (if the attacker has access to subscriber information).

5.4.  Finding Previously Visited Networks

   When DHCP clients connect to a network, they attempt to obtain the
   same address they had used before they attached to the network.  They
   do this by putting the previously assigned address in the requested
   IP address option.  By observing these addresses, an attacker can
   identify the network the client had previously visited.

5.5.  Finding a Stable Identity

   An attacker might use a stable identity gleaned from DHCP messages to
   correlate activities of a given client on unrelated networks.  The
   Client FQDN option, the Subscriber ID option, and the Client ID
   option can serve as long-lived identifiers of DHCP clients.  The
   Client FQDN option can also provide an identity that can easily be
   correlated with web server activity logs.

5.6.  Pervasive Monitoring

   Pervasive monitoring [RFC7258] is widespread (and often covert)
   surveillance through intrusive gathering of protocol artifacts,
   including application content, or protocol metadata such as headers.
   An operator who controls a nontrivial number of access points or
   network segments may use obtained information about a single client
   and observe the client's habits.  Although users may not expect true
   privacy from their operators, the information that is set up to be
   monitored by users' service operators may also be gathered by an
   adversary who monitors a wide range of networks and develops
   correlations from that information.

5.7.  Finding Client's IP Address or Hostname

   Many DHCP deployments use DNS Updates [RFC4702] that put a client's
   information (current IP address, client's hostname) into the DNS,
   where it is easily accessible by anyone interested.  Client ID is
   also disclosed, albeit not in an easily accessible form (SHA-256
   digest of the client-id).  As SHA-256 is considered irreversible,
   DHCP client ID can't be converted back to client-id.  However,
   SHA-256 digest can be used as a unique identifier that is accessible
   by any host.

5.8.  Correlation of Activities over Time

   As with other identifiers, an IP address can be used to correlate the
   activities of a host for at least as long as the lifetime of the
   address.  If that address was generated from some other, stable
   identifier and that generation scheme can be deduced by an attacker,
   the duration of the correlation attack extends to that of the
   identifier.  In many cases, its lifetime is equal to the lifetime of
   the device itself.

5.9.  Location Tracking

   If a stable identifier is used for assigning an address and such
   mapping is discovered by an attacker, it can be used for tracking a
   user.  In particular, both passive (a service that the client
   connects to can log the client's address and draw conclusions
   regarding its location and movement patterns based on the addresses
   it is connecting from) and active (an attacker can send ICMP echo
   requests or other probe packets to networks of suspected client
   locations) methods can be used.  To give a specific example, by
   accessing a social portal from
   tomek-laptop.coffee.somecity.com.example,
   tomek-laptop.mycompany.com.example, and
   tomek-laptop.myisp.example.com, the portal administrator can draw
   conclusions about tomek-laptop's owner's current location and his
   habits.

5.10.  Leasequery and Bulk Leasequery

   Attackers may pretend to be an access concentrator, either as a DHCP
   relay agent or as a DHCP client, to obtain location information
   directly from the DHCP server(s) using the DHCP leasequery [RFC4388]
   mechanism.

   Location information is information needed by the access concentrator
   to forward traffic to a broadband-accessible host.  This information
   includes knowledge of the host hardware address, the port or virtual
   circuit that leads to the host, and/or the hardware address of the
   intervening subscriber modem.

   Furthermore, the attackers may use the DHCP bulk leasequery [RFC6926]
   mechanism to obtain bulk information about DHCP bindings, even
   without knowing the target bindings.

   Additionally, active leasequery [RFC7724] is a mechanism for
   subscribing to DHCP lease update changes in near real-time.  The
   intent of this mechanism is to update an operator's database;
   however, if the mechanism is misused, an attacker could defeat the
   server's authentication mechanisms and subscribe to all updates.  He
   then could continue receiving updates, without any need for local
   presence.

6.  Security Considerations

   In current practice, the client privacy and client authentication are
   mutually exclusive.  The client authentication procedure reveals
   additional client information in the certificates and identifiers.
   Full privacy for the clients may mean the clients are also anonymous
   to the server and the network.

7.  Privacy Considerations

   This document in its entirety discusses privacy considerations in
   DHCP.  As such, no dedicated discussion is needed.

8.  References

8.1.  Normative References

   [RFC2131]  Droms, R., "Dynamic Host Configuration Protocol",
              RFC 2131, DOI 10.17487/RFC2131, March 1997,
              <http://www.rfc-editor.org/info/rfc2131>.

   [RFC2136]  Vixie, P., Ed., Thomson, S., Rekhter, Y., and J. Bound,
              "Dynamic Updates in the Domain Name System (DNS UPDATE)",
              RFC 2136, DOI 10.17487/RFC2136, April 1997,
              <http://www.rfc-editor.org/info/rfc2136>.

   [RFC6973]  Cooper, A., Tschofenig, H., Aboba, B., Peterson, J.,
              Morris, J., Hansen, M., and R. Smith, "Privacy
              Considerations for Internet Protocols", RFC 6973,
              DOI 10.17487/RFC6973, July 2013,
              <http://www.rfc-editor.org/info/rfc6973>.

   [RFC7258]  Farrell, S. and H. Tschofenig, "Pervasive Monitoring Is an
              Attack", BCP 188, RFC 7258, DOI 10.17487/RFC7258, May
              2014, <http://www.rfc-editor.org/info/rfc7258>.

8.2.  Informative References

   [RFC3046]  Patrick, M., "DHCP Relay Agent Information Option",
              RFC 3046, DOI 10.17487/RFC3046, January 2001,
              <http://www.rfc-editor.org/info/rfc3046>.

   [RFC3315]  Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins,
              C., and M. Carney, "Dynamic Host Configuration Protocol
              for IPv6 (DHCPv6)", RFC 3315, DOI 10.17487/RFC3315, July
              2003, <http://www.rfc-editor.org/info/rfc3315>.

   [RFC3527]  Kinnear, K., Stapp, M., Johnson, R., and J. Kumarasamy,
              "Link Selection sub-option for the Relay Agent Information
              Option for DHCPv4", RFC 3527, DOI 10.17487/RFC3527, April
              2003, <http://www.rfc-editor.org/info/rfc3527>.

   [RFC3925]  Littlefield, J., "Vendor-Identifying Vendor Options for
              Dynamic Host Configuration Protocol version 4 (DHCPv4)",
              RFC 3925, DOI 10.17487/RFC3925, October 2004,
              <http://www.rfc-editor.org/info/rfc3925>.

   [RFC3993]  Johnson, R., Palaniappan, T., and M. Stapp, "Subscriber-ID
              Suboption for the Dynamic Host Configuration Protocol
              (DHCP) Relay Agent Option", RFC 3993,
              DOI 10.17487/RFC3993, March 2005,
              <http://www.rfc-editor.org/info/rfc3993>.

   [RFC4361]  Lemon, T. and B. Sommerfeld, "Node-specific Client
              Identifiers for Dynamic Host Configuration Protocol
              Version Four (DHCPv4)", RFC 4361, DOI 10.17487/RFC4361,
              February 2006, <http://www.rfc-editor.org/info/rfc4361>.

   [RFC4388]  Woundy, R. and K. Kinnear, "Dynamic Host Configuration
              Protocol (DHCP) Leasequery", RFC 4388,
              DOI 10.17487/RFC4388, February 2006,
              <http://www.rfc-editor.org/info/rfc4388>.

   [RFC4578]  Johnston, M. and S. Venaas, Ed., "Dynamic Host
              Configuration Protocol (DHCP) Options for the Intel
              Preboot eXecution Environment (PXE)", RFC 4578,
              DOI 10.17487/RFC4578, November 2006,
              <http://www.rfc-editor.org/info/rfc4578>.

   [RFC4702]  Stapp, M., Volz, B., and Y. Rekhter, "The Dynamic Host
              Configuration Protocol (DHCP) Client Fully Qualified
              Domain Name (FQDN) Option", RFC 4702,
              DOI 10.17487/RFC4702, October 2006,
              <http://www.rfc-editor.org/info/rfc4702>.

   [RFC4776]  Schulzrinne, H., "Dynamic Host Configuration Protocol
              (DHCPv4 and DHCPv6) Option for Civic Addresses
              Configuration Information", RFC 4776,
              DOI 10.17487/RFC4776, November 2006,
              <http://www.rfc-editor.org/info/rfc4776>.

   [RFC4941]  Narten, T., Draves, R., and S. Krishnan, "Privacy
              Extensions for Stateless Address Autoconfiguration in
              IPv6", RFC 4941, DOI 10.17487/RFC4941, September 2007,
              <http://www.rfc-editor.org/info/rfc4941>.

   [RFC6225]  Polk, J., Linsner, M., Thomson, M., and B. Aboba, Ed.,
              "Dynamic Host Configuration Protocol Options for
              Coordinate-Based Location Configuration Information",
              RFC 6225, DOI 10.17487/RFC6225, July 2011,
              <http://www.rfc-editor.org/info/rfc6225>.

   [RFC6926]  Kinnear, K., Stapp, M., Desetti, R., Joshi, B., Russell,
              N., Kurapati, P., and B. Volz, "DHCPv4 Bulk Leasequery",
              RFC 6926, DOI 10.17487/RFC6926, April 2013,
              <http://www.rfc-editor.org/info/rfc6926>.

   [RFC7724]  Kinnear, K., Stapp, M., Volz, B., and N. Russell, "Active
              DHCPv4 Lease Query", RFC 7724, DOI 10.17487/RFC7724,
              December 2015, <http://www.rfc-editor.org/info/rfc7724>.

Acknowledgements

   The authors would like to thank the valuable comments made by Stephen
   Farrell, Ted Lemon, Ines Robles, Russ White, Christian Huitema,
   Bernie Volz, Jinmei Tatuya, Marcin Siodelski, Christian Schaefer,
   Robert Sparks, Peter Yee, and other members of DHC WG.

Authors' Addresses

   Sheng Jiang
   Huawei Technologies Co., Ltd
   Q14, Huawei Campus, No.156 Beiqing Road
   Hai-Dian District, Beijing  100095
   China

   Email: jiangsheng@huawei.com


   Suresh Krishnan
   Ericsson
   8400 Decarie Blvd.
   Town of Mount Royal, QC
   Canada

   Phone: +1 514 345 7900 x42871
   Email: suresh.krishnan@ericsson.com


   Tomek Mrugalski
   Internet Systems Consortium, Inc.
   950 Charter Street
   Redwood City, CA  94063
   United States

   Email: tomasz.mrugalski@gmail.com

ISO Plain Language

On this page
PROBLEMDHCP gives IPv4 hosts their address and configuration, and the messages it uses carry several identifiers that can reveal a device's type, its operating system, where it is and where it has been.
MECHANISMThe document goes through the options that carry identifiers, such as the Client Identifier, the client FQDN and the relay agent information, and through the ways a server allocates addresses, then lists the attacks that use them.
WHAT IT DOESIt is an analysis, not a fix: the document says that protocol changes to address the problems are out of scope, and it points out that client privacy and client authentication are in practice mutually exclusive.

§1Why DHCP Leaks Information

The Dynamic Host Configuration Protocol (DHCP), described in RFC 2131, provides addressing and configuration information to IPv4 hosts. DHCP uses several identifiers, and these can become a source of information about the IPv4 host. That information may include the device type, operating system information, and locations that the device may have previously visited.

The document defines a stable identifier as any property disclosed by a DHCP client that does not change over time, or changes very infrequently, and that is unique for that client in a given context. Examples given are the MAC address, the client identifier and a hostname. Some identifiers may be stable only under certain conditions: one client implementation may keep its client identifier in stable storage, while another may generate it on the fly and use a different one after each boot. Stable identifiers may or may not be globally unique.

The focus is on privacy for clients, to support client mobility and connection to random networks. The privacy of DHCP servers and relay agents is considered less important, because they are typically open for public services, and communication from a relay agent to a server is generally assumed to be protected from casual snooping because it travels in the provider's backbone. The document still explores those topics to some degree. It does not propose protocol changes to fix the problems it analyses; that work is explicitly out of scope.

Some values a device sends during DHCP never change. Once an observer has seen one of them, the observer can recognise the same device later, even on a different network. This document is a catalogue of those values and of what they give away.

§3DHCP Options That Carry Identifiers

The Client Identifier option passes an explicit client identifier to a DHCP server. The identifier is an opaque key that must be unique to that client within the subnet it is attached to, and it typically stays stable after it has first been generated. It may hold a hardware address identical to the contents of the chaddr field, or another kind of identifier such as a DNS name. Clients are expected to generate their client identifiers once, during first operation, and store them in non-volatile storage, or to use a deterministic algorithm that produces the same values again.

In practice an implementation uses the available link-layer address during its first boot. Even if the administrator later enables link-layer address randomization, it was probably not enabled during that first boot, so the original, unobfuscated link-layer address is likely to end up being announced as the client identifier. Exposing the original link-layer address there also undermines other privacy extensions, such as RFC 4941.

The DHCP message header has htype and chaddr fields for the client link-layer address type and the link-layer address itself, and chaddr is used both as the hardware address for sending replies and as a client identifier. The yiaddr field conveys an allocated address from the server to the client, and the requested IP address option lets a client suggest a particular address.

The Client FQDN option lets clients and servers exchange information about the client's fully qualified domain name and about who updates the DNS with the associated A and PTR records. The Vendor Class, Vendor-Identifying Vendor Class and Vendor-Identifying Vendor Information options are used by the client to identify the vendor that manufactured the hardware, and their data area may hold further detail such as the version of the operating system or the amount of memory installed.

Servers use the Civic Location option to deliver location information to clients, referring to the location of the server, of the network element believed to be closest to the client, or of the client itself. The GeoConf and GeoLoc options provide coordinate-based location. The Client System Architecture Type option lists supported architecture types, for clients booted over the network rather than from local storage.

Relay agents add a Relay Agent Information option with a circuit ID suboption, an agent-local identifier of the circuit a client-to-server packet arrived on, and a remote ID suboption holding a trusted identifier for the remote high-speed modem. The link-selection suboption names a subnet or link that can identify the client's subnet and, if the network topology is known, reveals the client's location. Relay agents also add a Subscriber-ID option, an ASCII string assigned by the network provider that is meant to stay the same as customers connect through different paths.

DHCP clients send several optional values, and most of them are designed to help the server recognise the same device again. That is exactly what makes them useful for tracking. The values include a client identifier, a hostname, a vendor name, and identifiers added by the relay agent that describes the physical line the device is on.

DHCP VALUES THAT IDENTIFY A CLIENT (RFC 7819, SECTION 3)
Option or fieldWhat it carriesWhat it gives away
Client IdentifierAn opaque key, unique to the client on its subnetA stable value that survives reboots and network changes
chaddr and htypeThe client link-layer address and its typeThe hardware address of the network interface
Client FQDNThe client's domain name, and who updates the DNSA hostname that can be matched with web server logs
Vendor ClassThe vendor of the hardware, sometimes the OS versionThe make of the device and sometimes its software
Requested IP addressAn address the client would like to have againThe network the client was attached to last time
Civic Location, GeoConf, GeoLocAddress or coordinates of the server, network or clientWhere the device is
Relay Agent InformationA circuit ID and a trusted remote ID for the lineThe physical line the device is on, and so its location
Subscriber-IDAn ASCII string set by the network providerThe subscriber, stable across different network paths

§4.2How Address Allocation Affects Privacy

A DHCP server in the typical stateful mode manages one or more pools of IP addresses and picks an address out of a configured pool when a client asks. Depending on the implementation, several allocation strategies are possible, and the choice has privacy implications. The constraints in DHCP and DHCPv6 are radically different, but servers that allow the strategy to be configured may allow it in both.

Iterative allocation hands out addresses one by one. It is very fast, which is why deployments that prefer performance favour it, but it makes the allocated addresses very predictable. Because the addresses tend to cluster at the beginning of the available pool, it also makes scanning attacks much easier.

Identifier-based allocation picks an address based on one of the available identifiers, such as the client identifier or MAC address. It is convenient, since a returning client is very likely to get the same address, and system administrators often ask for it. The downside is a very stable IP address for the client, which means correlation of activities over time, location tracking, address scanning and vendor or operating system discovery all apply. Because the IPv4 address space is much smaller, this is almost never a problem in DHCP, but it certainly is in DHCPv6.

Hash allocation is an extension of identifier-based allocation that hashes the identifier first. If the hash is implemented correctly it removes the flaw of disclosing the identifier, which eliminates susceptibility to address scanning and to vendor or operating system discovery. If the hash is poorly implemented, for example if it can be reversed, it introduces no improvement over identifier-based allocation.

Random allocation picks a resource at random from the available pool, which essentially prevents a returning client from getting the same address again. It is beneficial from a privacy point of view, because such addresses are not susceptible to correlation attacks or to vendor, operating system or identity discovery attacks. Even so, a client may still be exposed if other information is disclosed elsewhere, for example when the address is randomized but the MAC address still leaks in the Client Identifier option. Given the limited size of most IPv4 public address pools, allocation mechanisms in IPv4 may not provide much privacy protection or leak much useful information, if misused.

The way a server hands out addresses changes how much it reveals. Handing out addresses in order makes them predictable. Deriving an address from the device's own identifier gives the device an address that never changes. Hashing the identifier breaks the link, as long as the hash cannot be reversed. Choosing an address at random breaks it too, but only if nothing else in the exchange gives the device away.

FOUR WAYS A SERVER CAN PICK AN ADDRESS (RFC 7819, SECTION 4.2)
  • IterativeAddresses are handed out one by one. Fast, but predictable, and clustered at the start of the pool.
  • Identifier-basedThe address comes from the client identifier or MAC address. Convenient, but the address never changes.
  • HashThe identifier is hashed first. This removes the link, but only if the hash cannot be reversed.
  • RandomThe address is picked at random from the pool. Hard to correlate, but only if nothing else gives the client away.

§5What an Attacker Can Learn

The document lists what an attacker can derive from DHCP messages. The type of device can be guessed from the Vendor Class option, the chaddr field and by parsing the Client ID option, all of which may contain an Organizationally Unique Identifier representing the device's vendor, and that knowledge can be used for device-specific vulnerability exploitation attacks. The operating system can be guessed from the Vendor Class option, the Client System Architecture Type option, or by fingerprinting the combination of options the client asks for in the Parameter Request List.

Location information comes most directly from a server message carrying the Civic Location, GeoConf or GeoLoc options, and can also be inferred from the Relay Agent Information option with its remote ID or circuit ID suboptions, or from the Subscriber ID option where the attacker has access to subscriber information.

When a client connects to a network it tries to get the address it had before, by putting the previously assigned address in the requested IP address option, and by observing those addresses an attacker can identify the network the client visited previously. A stable identity taken from the Client FQDN option, the Subscriber ID option or the Client ID option lets an attacker correlate the activities of a client across unrelated networks, and the FQDN can also be correlated with web server activity logs.

Pervasive monitoring is widespread and often covert surveillance through intrusive gathering of protocol artifacts, including application content or protocol metadata such as headers. An operator who controls a nontrivial number of access points or network segments may use what they learn about a single client to observe that client's habits. Users may not expect true privacy from their operators, but information set up to be monitored by a user's service operator may also be gathered by an adversary who monitors a wide range of networks.

Many deployments use DNS updates to put the client's current address and hostname into the DNS, where anyone can look them up. The client ID is also disclosed there, in the form of a SHA-256 digest, which cannot be converted back into the client ID but is still usable as a unique identifier accessible to any host. An IP address can correlate a host's activities for at least as long as the lifetime of the address, and if that address was generated from a stable identifier by a scheme the attacker can deduce, the correlation lasts as long as the identifier, often the lifetime of the device itself.

For location tracking, both passive and active methods work. A service the client connects to can log the client's address and draw conclusions about its location and movement. An attacker can also send ICMP echo requests or other probe packets to networks where the client is suspected to be. Attackers may also pretend to be an access concentrator, as a DHCP relay agent or as a DHCP client, to obtain location information directly from the server using the leasequery mechanism, or use bulk leasequery to obtain bulk information about DHCP bindings even without knowing the target bindings. Active leasequery subscribes to DHCP lease update changes in near real time; if it is misused, an attacker could defeat the server's authentication mechanisms and keep receiving updates without any local presence.

Everything the client sends can be turned against it. The vendor and hardware details point to known weaknesses. The address a client asks for reveals where it was last time. A hostname or a hashed client identifier lets one observer recognise the same device across many networks, and that is enough to follow a person's movements.

WHAT CAN BE LEARNED FROM DHCP TRAFFIC (RFC 7819, SECTION 5)
  • Device typeGuessed from the Vendor Class option, the chaddr field and the Client ID option.
  • Operating systemGuessed from the Vendor Class option, the architecture type option, or the set of options requested.
  • LocationRead from the Civic Location and coordinate options, or inferred from relay agent information.
  • Previously visited networksSeen in the requested IP address option, which carries the address used on a previous network.
  • A stable identityThe Client FQDN, Subscriber ID and Client ID options can all serve as long-lived identifiers.
  • Current address and hostnamePublished in the DNS by DHCP updates, where anyone can look them up.
  • Correlation over timeAn address identifies a host for as long as it lives, and longer if it was derived from a stable identifier.
  • Lease recordsLeasequery and bulk leasequery can be misused to obtain bindings and location information.

§6Privacy and Authentication Pull Against Each Other

The security considerations section makes a single point about a trade-off that sits underneath all of the above. In current practice, client privacy and client authentication are mutually exclusive, because the client authentication procedure reveals additional client information in the certificates and identifiers it uses. Full privacy for clients may mean the clients are also anonymous to the server and to the network.

The privacy considerations section adds nothing further: the document as a whole discusses privacy in DHCP, so it says no dedicated discussion is needed. The document's own framing is that it analyses the identifiers DHCP uses and the problems they cause, and leaves the fixing to future work.

Authenticating a client means showing who it is, and that is the opposite of hiding. In current practice a network that authenticates its clients gives up some of the privacy that an anonymous client would have had.

§6References