<?xml version="1.0" encoding="US-ASCII"?>
<?xml-stylesheet type="text/xsl" href="" ?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc1122 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1122.xml">
<!ENTITY rfc2375 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2375.xml">
<!ENTITY rfc2460 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2460.xml">
<!ENTITY rfc2461 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2461.xml">
<!ENTITY rfc2462 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2462.xml">
<!ENTITY rfc4443 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4443.xml">
<!ENTITY rfc2710 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2710.xml">
<!ENTITY rfc3056 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3056.xml">
<!ENTITY rfc4291 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4291.xml">
<!ENTITY rfc3775 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3775.xml">
<!ENTITY rfc3810 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3810.xml">
<!ENTITY rfc3964 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3964.xml">
<!ENTITY rfc4007 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4007.xml">
<!ENTITY rfc4380 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4380.xml">
<!ENTITY rfc3315 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3315.xml">
<!ENTITY rfc3493 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3493.xml">
<!ENTITY rfc3971 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3971.xml">
<!ENTITY rfc4029 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4029.xml">
<!ENTITY rfc4038 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4038.xml">
<!ENTITY rfc4301 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4301.xml">
<!ENTITY rfc4074 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4074.xml">
<!ENTITY rfc4389 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4389.xml">
<!ENTITY rfc4191 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4191.xml">
<!ENTITY rfc4311 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4311.xml">
<!ENTITY rfc4294 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4294.xml">
<!ENTITY rfc4864 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4864.xml">
<!ENTITY rfc4890 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4890.xml">
<!ENTITY rfc4225 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4225.xml">
<!ENTITY rfc3756 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3756.xml">
<!ENTITY rfc2765 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2765.xml">
<!ENTITY rfc2766 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2766.xml">
<!ENTITY rfc1858 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1858.xml">
<!ENTITY rfc3128 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3128.xml">
<!ENTITY rfc4472 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4472.xml">
<!ENTITY rfc4025 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4025.xml">

]>
<?rfc toc="yes"?>
<?rfc rfcedstyle="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>

<rfc number="4942" category="info">
  <front>
    <title abbrev="IPv6 Security Overview">IPv6 Transition/Coexistence
    Security Considerations</title>

    <author fullname="Elwyn B. Davies" initials="E.B." surname="Davies">
      <organization>Consultant</organization>

      <address>
        <postal>
          <street></street>

          <city>Soham</city>

          <region>Cambs</region>

          <code></code>

          <country>UK</country>
        </postal>

        <phone>+44 7889 488 335</phone>

        <email>elwynd@dial.pipex.com</email>
      </address>
    </author>

    <author fullname="Suresh Krishnan" initials="S." surname="Krishnan">
      <organization>Ericsson</organization>

      <address>
        <postal>
          <street>8400 Decarie Blvd.</street>

          <city>Town of Mount Royal</city>

          <region>QC</region>

          <code>H4P 2N2</code>

          <country>Canada</country>
        </postal>

        <phone>+1 514-345-7900</phone>

        <email>suresh.krishnan@ericsson.com</email>
      </address>
    </author>

    <author fullname="Pekka Savola" initials="P." surname="Savola">
      <organization>CSC/Funet</organization>

      <address>
        <email>psavola@funet.fi</email>
      </address>
    </author>

    <date month="September" year="2007"/>

    <area>Operations and Management</area>

    <workgroup>IPv6 Operations</workgroup>




<!-- [rfced] Please insert any additional keywords (beyond those that appear in
the title) for use on http://www.rfc-editor.org/search.html. -->

    <keyword>IPv6 Operations</keyword>
    <keyword>Security</keyword>

    <abstract>
      <t>The transition from a pure IPv4 network to a network where IPv4 and
      IPv6 coexist brings a number of extra security considerations that need
      to be taken into account when deploying IPv6 and operating the
      dual-protocol network and the associated transition mechanisms. This
      document attempts to give an overview of the various issues grouped into
      three categories: 
<?rfc subcompact="yes"?>
<list style="symbols">
          <t>issues due to the IPv6 protocol itself,</t>

          <t>issues due to transition mechanisms, and</t>

          <t>issues due to IPv6 deployment.</t>
        </list></t>
<?rfc subcompact="no"?>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>The transition from a pure IPv4 network to a network where IPv4 and
      IPv6 coexist brings a number of extra security considerations that need
      to be taken into account when deploying IPv6 and operating the
      dual-protocol network with its associated transition mechanisms. This
      document attempts to give an overview of the various issues grouped into
      three categories: 
<?rfc subcompact="yes"?>
<list style="symbols">
          <t>issues due to the IPv6 protocol itself,</t>

          <t>issues due to transition mechanisms, and</t>

          <t>issues due to IPv6 deployment.</t>
        </list></t>
<?rfc subcompact="no"?>

      <t>It is important to understand that deployments are unlikely to be
      replacing IPv4 with IPv6 (in the short term), but rather will be adding
      IPv6 to be operated in parallel with IPv4 over a considerable period, so
      that security issues with transition mechanisms and dual stack networks
      will be of ongoing concern. This extended transition and coexistence
      period stems primarily from the scale of the current IPv4 network. It is
      unreasonable to expect that the many millions of IPv4 nodes will be
      converted overnight. It is more likely that it will take two or three
      capital equipment replacement cycles (between nine and 15 years) for
      IPv6 capabilities to spread through the network, and many services will
      remain available over IPv4 only for a significant <!-- [rfced]
      "finite" instead of "significant"? --> period whilst others
      will be offered either just on IPv6 or on both protocols. To maintain
      current levels of service, enterprises and service providers will need
      to support IPv4 and IPv6 in parallel for some time.</t>

      <t>This document also describes two matters that have been wrongly
      identified as potential security concerns for IPv6 in the past and
      explains why they are unlikely to cause problems: considerations about
      probing/mapping IPv6 addresses (<xref target="Probing-Mapping"></xref>)
      and considerations with respect to privacy in IPv6 (<xref
      target="Privacy"></xref>).</t>
    </section>

    <section title="Issues Due to IPv6 Protocol">
      <t>Administrators should be aware that some of the rules suggested in
      this section could potentially lead to a small amount of legitimate
      traffic being dropped because the source has made unusual and arguably
      unreasonable choices when generating the packet. The IPv6 specification
      <xref target="RFC2460"></xref> contains a number of areas where choices
      are available to packet originators that will result in packets that
      conform to the specification but are unlikely to be the result of a
      rational packet generation policy for legitimate traffic (e.g., sending
      a fragmented packet in a much larger than necessary number of small
      segments). This document highlights choices that could be made by
      malicious sources with the intention of damaging the target host or
      network, and suggests rules that try to differentiate
      specification-conforming packets that are legitimate traffic from conforming packets
      that may be trying to subvert the specification to cause damage. The
      differentiation tries to offer a reasonable compromise between securing
      the network and passing every possible conforming packet. To avoid loss
      of important traffic, administrators are advised to log packets dropped
      according to these rules and examine these logs periodically to ensure
      that they are having the desired effect, and are not excluding traffic
      inappropriately.</t>

      <t>The built-in flexibility of the IPv6 protocol may also lead to
      changes in the boundaries between legitimate and malicious traffic as
      identified by these rules. New options may be introduced in the future, and
      rules may need to be altered to allow the new capabilities to be
      (legitimately) exploited by applications. The document therefore
      recommends that filtering needs to be configurable to allow
      administrators the flexibility to update rules as new pieces of IPv6
      specification are standardized.</t>

      <section anchor="proto-specific" title="IPv6 Protocol-Specific Issues">
        <t>There are significant differences between the features of IPv6 and
        IPv4: some of these specification changes may result in potential
        security issues. Several of these issues have been discussed in
        separate documents but are summarized here to avoid normative references
        that may not become RFCs. The following specification-related problems
        have been identified, but this is not necessarily a complete list.</t>

        <section anchor="rh-hosts" title="Routing Headers and Hosts">
          <t>All IPv6 nodes must be able to process routing headers <xref
          target="RFC2460"></xref>. This RFC can be interpreted, although it
          is not explicitly stated, to mean that all nodes (including hosts) must
          have this processing enabled. The "Requirements for Internet Hosts"
          <xref target="RFC1122"></xref> permits implementations to perform
          "local source routing", that is, forwarding a packet with a routing
          header through the same interface on which it was received: no
          restrictions are placed on this operation even on hosts. In
          combination, these rules can result in hosts forwarding received
          traffic to another node if there are segments left in the Routing
          Header when it arrives at the host.</t>

          <t>A number of potential security issues associated with this
          behavior have been identified. Some of these issues have been
          resolved (a separate routing header (Type 2) has been standardized
          for Mobile IPv6 <xref target="RFC3775"></xref>, and ICMP Traceback
          has not been standardized), but two issues remain:</t>

          <t><list style="symbols">
              <t>Both existing types of routing header can be used to evade
              access controls based on destination addresses. This could be
              achieved by sending a packet ostensibly to a publicly accessible
              host address but with a routing header containing a 'forbidden'
              address. If the publicly accessible host is processing routing
              headers, it will forward the packet to the destination address in
              the routing header that would have been forbidden by the packet
              filters if the address had been in the destination field when
              the packet was checked.</t>

              <t>If the packet source address can be spoofed when using a Type
              0 routing header, the mechanism described in the previous bullet
              could be used with any host to mediate an anonymous reflection
              denial-of-service attack by having any publicly accessible host
              redirect the attack packets. (This attack cannot use Type 2
              routing headers because the packet cannot be forwarded outside
              the host that processes the routing header, i.e., the original
              destination of the packet.)</t>
            </list>To counteract these threats, if a device is enforcing
          access controls based on destination addresses, it needs to examine
          both the destination address in the base IPv6 header and any
          waypoint destinations in a routing header that have not yet been
          reached by the packet at the point where it is being checked.</t>

          <t>Various forms of amplification attack on routers and firewalls
          using the routing header could be envisaged. A simple form involves
          repeating the address of a waypoint several times in the routing
          header. More complex forms could involve alternating waypoint
          addresses that would result in the packet re-transiting the router
          or firewall. These attacks can be counteracted by ensuring that
          routing headers do not contain the same waypoint address more than
          once, and performing ingress/egress filtering to check that the
          source address is appropriate to the destination: packets made to
          reverse their path will fail this test.</t>
        </section>

        <section anchor="rh-mipv6"
                 title="Routing Headers for Mobile IPv6 and Other Purposes">
          <t>In addition to the basic Routing Header (Type 0), which is
          intended to influence the trajectory of a packet through a network
          by specifying a sequence of router waypoints, Routing Header (Type
          2) has been defined as part of the Mobile IPv6 specifications in
          <xref target="RFC3775"></xref>. The Type 2 Routing Header is
          intended for use by hosts to handle 'interface local' forwarding
          needed when packets are sent to the care-of address of a mobile node
          that is away from its home address.</t>

<?rfc needLines="3"?>
          <t>It is important that nodes treat the different types of routing
          header appropriately. It should be possible to apply separate
          filtering rules to the different types of Routing Header. By design,
          hosts must process Type 2 Routing Headers to support Mobile IPv6 but
          routers should not: to avoid the issues in <xref
          target="rh-hosts"></xref>, it may be desirable to forbid or limit the
          processing of Type 0 Routing Headers in hosts and some routers.</t>

          <t>Routing Headers are an extremely powerful and general capability.
          Alternative future uses of Routing Headers need to be carefully
          assessed to ensure that they do not open new avenues of attack that
          can be exploited.</t>
<!-- [rfced] Should "Routing Header" be lowercase "routing header" as it
          is elsewhere or is this intentional? -->

        </section>

        <section anchor="site-addr-multicast"
                 title="Site-Scope Multicast Addresses">
          <t>IPv6 supports multicast addresses with site scope that can
          potentially allow an attacker to identify certain important
          resources on the site if misused.</t>

          <t>Particular examples are the 'all routers' (FF05::2) and 'all
          Dynamic Host Configuration Protocol (DHCP) servers' (FF05::1:3)
          addresses defined in <xref target="RFC2375"></xref>. An attacker
          that is able to infiltrate a message destined for these addresses on
          to the site will potentially receive in return information
          identifying key resources on the site. This information can then be
          the target of directed attacks ranging from simple flooding to more
          specific mechanisms designed to subvert the device.</t>

          <t>Some of these addresses have current legitimate uses within a
          site. The risk can be minimized by ensuring that all firewalls and
          site boundary routers are configured to drop packets with site-scope
          destination addresses. Also, nodes should not join multicast groups
          for which there is no legitimate use on the site, and site routers
          should be configured to drop packets directed to these unused
          addresses.</t>
        </section>

        <section anchor="icmpv6-multicast" title="ICMPv6 and Multicast">
          <t>It is possible to launch a Denial-of-Service (DoS) attack using
          IPv6 that could be amplified by the multicast infrastructure.</t>

          <t>Unlike ICMP for IPv4, ICMPv6 <xref target="RFC4443"></xref>
          allows error notification responses to be sent when certain
          unprocessable packets are sent to multicast addresses.</t>

<?rfc needLines="6"?>
          <t>The cases in which responses are sent are: <list style="symbols">
              <t>The received packet is longer than the next link Maximum
              Transmission Unit (MTU): 'Packet Too Big' responses are needed
              to support Path MTU Discovery for multicast traffic.</t>

              <t>The received packet contains an unrecognized option in a
              hop-by-hop or destination options extension header with the
              first two bits of the option type set to binary '10': 'Parameter
              Problem' responses are intended to inform the source that some
              or all of the recipients cannot handle the option in
              question.</t>
            </list></t>

          <t>If an attacker can craft a suitable packet sent to a multicast
          destination, it may be possible to elicit multiple responses
          directed at the victim (the spoofed source of the multicast packet).
          On the other hand, the use of 'reverse path forwarding' checks (to
          eliminate loops in multicast forwarding) automatically limits the
          range of addresses that can be spoofed.</t>

          <t>In practice, an attack using oversize packets is unlikely to cause
          much amplification unless the attacker is able to carefully tune the
          packet size to exploit a network with smaller MTU in the edge than
          the core. Similarly, a packet with an unrecognized hop-by-hop option
          would be dropped by the first router without resulting in multiple
          responses. However, a packet with an unrecognized destination option
          could generate multiple responses.</t>

          <t>In addition to amplification, this kind of attack would
          potentially consume large amounts of forwarding state resources in
          routers on multicast-enabled networks.</t>
        </section>

        <section title="Bogus Errored Packets in ICMPv6 Error Messages">
          <t>Apart from the spurious load on the network, routers, and hosts,
          bogus ICMPv6 error messages (types 0 to 127) containing a spoofed
          errored packet can impact higher-layer protocols when the alleged
          errored packet is referred to the higher layer at the destination of
          the ICMPv6 packet <xref target="RFC4443"></xref>. The potentially
          damaging effects on TCP connections, and some ways to mitigate the
          threats, are documented in <xref
          target="ICMP-ATT"></xref>.</t>

          <t>Specific countermeasures for particular higher-layer protocols
          are beyond the scope of this document, but firewalls may be able to
          help counter the threat by inspecting the alleged errored packet
          embedded in the ICMPv6 error message. Measures to mitigate the
          threat include:<list style="symbols">
              <t>The receiving host should test that the embedded packet is
              all or part of a packet that was transmitted by the host.</t>

<?rfc needLines="3"?>
              <t>The firewall may be able to test that the embedded packet
              contains addresses that would have been legitimate (i.e., would
              have passed ingress/egress filtering) for a packet sent from the
              receiving host, but the possibility of asymmetric routing of the
              outgoing and returning packets may prevent this sort of test
              depending on the topology of the network, the location of the
              firewall, and whether state synchronization between firewalls is
              in use.</t>

              <t>If the firewall is stateful and the test is not prevented by
              asymmetric routing, the firewall may also be able to check that
              the embedded packet is all or part of a packet that recently
              transited the firewall in the opposite direction.</t>

              <t>Firewalls and destination hosts should be suspicious of
              ICMPv6 error messages with unnecessarily truncated errored
              packets (e.g., those that only carry the address fields of the
              IPv6 base header). The specification of ICMPv6 requires that
              error messages carry as much of the errored packet as possible
              (unlike ICMP for IPv4 which requires only a minimum amount of
              the errored packet) and IPv6 networks must have a guaranteed
              minimum MTU of 1280 octets. Accordingly, the ICMPv6 message
              should normally carry all the header fields of the errored
              packet, together with a significant amount of the
              payload, in order to
              allow robust comparison against the outgoing packet.</t>
            </list></t>
        </section>

        <section title="Anycast Traffic Identification and Security">
          <t>IPv6 introduces the notion of anycast addresses and services.
          Originally the IPv6 standards disallowed using an anycast address as
          the source address of a packet. Responses from an anycast server
          would therefore supply a unicast address for the responding server.
          To avoid exposing knowledge about the internal structure of the
          network, it is recommended that anycast servers now take advantage
          of the ability to return responses with the anycast address as the
          source address if possible.</t>

          <t>If the server needs to use a unicast address for any reason, it
          may be desirable to consider using specialized addresses for anycast
          servers, which are not used for any other part of the network, to
          restrict the information exposed. Alternatively, operators may wish
          to restrict the use of anycast services from outside the domain,
          thus requiring firewalls to filter anycast requests. For this
          purpose, firewalls need to know which addresses are being used for
          anycast services: these addresses are arbitrary and not
          distinguishable from any other IPv6 unicast address by structure or
          pattern.</t>

          <t>One particular class of anycast addresses that should be given
          special attention is the set of Subnet-Router anycast addresses
          defined in "IP Version 6 Addressing Architecture" <xref
          target="RFC4291"></xref>. All routers are required to support these
          addresses for all subnets for which they have interfaces. For most
          subnets using global unicast addresses, filtering anycast requests
          to these addresses can be achieved by dropping packets with the
          lower 64 bits (the Interface Identifier) set to all zeros.</t>
        </section>

        <section anchor="less-privacy"
                 title="Address Privacy Extensions Interact with DDoS Defenses">
          <t>The purpose of the privacy extensions for stateless address
          autoconfiguration <xref
          target="RFC4941"></xref> is to change the
          interface identifier (and hence the global scope addresses generated
          from it) from time to time. By varying the addresses used,
          eavesdroppers and other information collectors find it more
          difficult to identify which transactions actually relate to a
          specific node.</t>

          <t>A security issue may result from this if the frequency of node
          address change is sufficiently great to achieve the intended aim of
          the privacy extensions: with a relatively high rate of change, the
          observed behavior has some characteristics of a node or nodes
          involved in a Distributed Denial-of-Service (DDoS) attack. It should
          be noted, however, that addresses created in this way are
          topologically correct and that the other characteristics of the
          traffic may reveal that there is no malicious intent.</t>

          <t>This issue can be addressed in most cases by tuning the rate of
          change in an appropriate manner.</t>

          <t>Note that even if a node is well behaved, a change in the address
          could make it harder for a security administrator to define an
          address-based policy rule (e.g., access control list). However,
          nodes that employ privacy addresses do not have to use them for all
          communications.</t>
        </section>

        <section title="Dynamic DNS: Stateless Address Autoconfiguration, Privacy Extensions, and SEND">
          <t>The introduction of Stateless Address Autoconfiguration (SLAAC)
          <xref target="RFC2462"></xref> with IPv6 provides an additional
          challenge to the security of Dynamic Domain Name System (DDNS). With
          manual addressing or the use of DHCP, the number of security
          associations that need to be maintained to secure access to the
          Domain Name Service (DNS) server is limited, assuming any necessary
          updates are carried out by the DHCP server. This is true equally for
          IPv4 and IPv6.</t>

<?rfc needLines="3"?>
          <t>Since SLAAC does not make use of a single and potentially trusted
          DHCP server, but depends on the node obtaining the address, securing
          the insertion of updates into DDNS may need a security association
          between each node and the DDNS server. This is discussed further in
          <xref target="RFC4472"></xref>.</t>

          <t>Using the Privacy Extensions to SLAAC <xref
          target="RFC4941"></xref> may significantly
          increase the rate of updates of DDNS. Even if a node using the
          Privacy Extensions does not publish its address for 'forward' lookup
          (as that would effectively compromise the privacy that it is
          seeking), it may still need to update the reverse DNS records. If
          the reverse DNS records are not updated, servers that perform reverse
          DNS checks will not accept connections from the node and it will not
          be possible to gain access to IP Security (IPsec) keying material
          stored in DNS <xref target="RFC4025"></xref>. If the rate of change
          needed to achieve real privacy has to be increased (see <xref
          target="less-privacy"></xref>), the update rate for DDNS may be
          excessive.</t>

          <t>Similarly, the cryptographically generated addresses used by SEND
          <xref target="RFC3971"></xref> are expected to be periodically
          regenerated in line with recommendations for maximum key lifetimes.
          This regeneration could also impose a significant extra load on
          DDNS.</t>
        </section>

        <section anchor="exthdr" title="Extension Headers">
          <t>A number of security issues relating to IPv6 Extension headers
          have been identified. Several of these are a result of ambiguous
          or incomplete specification in the base IPv6 specification <xref
          target="RFC2460"></xref>.</t>

          <section anchor="exthdr-process"
                   title="Processing Extension Headers in Middleboxes">
            <t>In IPv4, deep packet inspection techniques are used to implement
            policing and filtering both as part of routers and in middleboxes
            such as firewalls. Fully extending these techniques to IPv6 would
            require inspection of all the extension headers in a packet. This
            is essential to ensure that policy constraints on the use of
            certain headers and options are enforced and to remove, at the
            earliest opportunity, packets containing potentially damaging
            unknown options.</t>

            <t>This requirement appears to conflict with Section 4 of the IPv6
            specification in <xref target="RFC2460"></xref> which requires
            that only hop-by-hop options are processed at any node through
            which the packet passes until the packet reaches the appropriate
            destination (either the final destination or a routing header
            waypoint).</t>

            <t>Also, <xref target="RFC2460"></xref> forbids processing the
            headers other than in the order in which they appear in the
            packet.</t>

            <t>A further ambiguity relates to whether an intermediate node
            should discard a packet that contains a header or destination
            option which it does not recognize. If the rules above are
            followed slavishly, it is not (or may not be) legitimate for the
            intermediate node to discard the packet because it should not be
            processing those headers or options.</t>

            <t>Therefore, <xref target="RFC2460"></xref> does not appear to
            take account of the behavior of middleboxes and other non-final
            destinations that may be inspecting the packet, and thereby
            potentially limits the security protection of these boxes.
            Firewall vendors and administrators may choose to ignore these
            rules in order to provide enhanced security as this does not
            appear to have any serious consequences with the currently defined
            set of extensions.  However, administrators should be aware that future
            extensions might require different treatment.</t>
          </section>

          <section anchor="exthdr-chain"
                   title="Processing Extension Header Chains">
            <t>There is a further problem for middleboxes that want to examine
            the transport headers that are located at the end of the IPv6
            header chain. In order to locate the transport header or other
            protocol data unit, the node has to parse the header chain.</t>

            <t>The IPv6 specification <xref target="RFC2460"></xref> does not
            mandate the use of the Type-Length-Value (TLV) format with a fixed
            layout for the start of each header although it is used for the
            majority of headers currently defined. (Only the Type field is
            guaranteed in size and offset.)</t>

            <t>Therefore, a middlebox cannot guarantee to be able to process
            header chains that may contain headers defined after the box was
            manufactured. As discussed further in <xref
            target="exthdr-unknown"></xref>, middleboxes ought not to have to
            know the detailed layout of all header types in use but still need
            to be able to skip over such headers to find the transport payload
            start. If this is not possible, it either limits the security
            policy that can be applied in firewalls or makes it difficult to
            deploy new extension header types.</t>

            <t>At the time of writing, only the Fragment Header does not fully
            conform to the TLV format used for other extension headers. In
            practice, many firewalls reconstruct fragmented packets before
            performing deep packet inspection, so this divergence is less
            problematic than it might have been, and is at least partially
            justified because the full header chain is not present in all
            fragments.</t>

<?rfc needLines="4"?>
            <t>Hop-by-hop and destination options may also contain unknown
            options. However, the options are required to be encoded in TLV
            format so that intermediate nodes can skip over them during
            processing, unlike the enclosing extension headers.</t>
          </section>

<?rfc needLines="7"?>

          <section anchor="exthdr-unknown"
                   title="Unknown Headers/Destination Options and Security Policy">
            <t>A strict security policy might dictate that packets containing
            either unknown headers or destination options are discarded by
            firewalls or other filters. This requires the firewall to process
            the whole extension header chain, which may be currently in
            conflict with the IPv6 specification as discussed in <xref
            target="exthdr-process"></xref>.</t>

            <t>Even if the firewall does inspect the whole header chain, it
            may not be sensible to discard packets with items unrecognized by
            the firewall: the intermediate node has no knowledge of which
            options and headers are implemented in the destination node and
            IPv6 has been deliberately designed to be extensible through
            adding new header options. This poses a dilemma for firewall
            administrators. On the one hand, admitting packets with 'unknown'
            options is a security risk, but dropping them may disable a useful
            new extension. The best compromise appears to be to select
            firewalls that provide a configurable discard policy based on the
            types of the extensions. Then, if a new extension is standardized,
            administrators can reconfigure firewalls to pass packets with
            legitimate items that they would otherwise not recognize because
            their hardware or software is not aware of a new definition.
            Provided that the new extensions conform to the TLV layout
            followed by current extensions, the firewall would not need
            detailed knowledge of the function or layout of the extension
            header.</t>
          </section>

          <section anchor="exthdr-hopbyhop"
                   title="Excessive Hop-by-Hop Options">
            <t>IPv6 does not limit the number of hop-by-hop options that can
            be present in a hop-by-hop option header, and any option can appear
            multiple times. The lack of a limit and the provision of
            extensibility bits that force nodes to ignore classes of options
            that they do not understand can be used to mount denial-of-service
            attacks affecting all nodes on a path. A packet with large
            numbers of unknown hop-by-hop options will be processed at every
            node through which it is forwarded, consuming significant
            resources to determine what action should be taken for each
            option. Current options with the exception of Pad1 and PadN should
            not appear more than once so that packets with inappropriately
            repeated options can be dropped. However, keeping track of which options
            have been seen adds complexity to firewalls and may not apply to
            future extensions. See <xref target="exthdr-unknown"></xref> for a
            discussion of the advisability of dropping packets with unknown
            options in firewalls.</t>
          </section>

          <section title="Misuse of Pad1 and PadN Options">
            <t>IPv6 allows multiple padding options of arbitrary sizes to be
            placed in both Hop-by-Hop and Destination option headers.</t>

            <t>PadN options are required to contain zero octets as 'payload';
            there is, however, no incentive for receivers to check this. It
            may therefore be possible to use the 'payload' of padding options
            as a covert channel. Firewalls and receiving hosts should actively
            check that PadN only has zero octets in its 'payload'.</t>

            <t>There is no legitimate reason for padding beyond the next eight
            octet boundary since the whole option header is aligned on an eight-octet
            boundary but cannot be guaranteed to be on a 16 (or higher
            power of two)-octet boundary. The IPv6 specification allows
            multiple Pad1 and PadN options to be combined in any way that the
            source chooses to make up the required padding. Reasonable design
            choices would appear to be using however many Pad1 options (i.e.,
            zero octets) are needed or using a single PadN option of the
            required size (from two up to seven octets). Administrators should
            consider at least logging unusual padding patterns, and may
            consider dropping packets that contain unusual patterns if they
            are certain of expected source behavior.</t>
          </section>

          <section anchor="exthdr-" title="Overuse of Router Alert Option">
            <t>The IPv6 router alert option specifies a hop-by-hop option
            that, if present, signals the router to take a closer look at the
            packet. This can be used for denial-of-service attacks. By sending
            a large number of packets containing a router alert option, an
            attacker can deplete the processor cycles on the routers available
            to legitimate traffic.</t>
          </section>
        </section>

        <section anchor="frag-dpi"
                 title="Fragmentation: Reassembly and Deep Packet Inspection">
          <t>The current specifications of IPv6 in <xref
          target="RFC2460"></xref> do not mandate any minimum packet size for
          the fragments of a packet before the last one, except for the need
          to carry the unfragmentable part in all fragments.</t>

          <t>The unfragmentable part does not include the transport port
          numbers, so it is possible that the first fragment does not
          contain sufficient information to carry out deep packet inspection
          involving the port numbers.</t>

<?rfc needLines="5"?>
          <t>Packets with overlapping fragments are considered to be a major
          security risk, but the reassembly rules for fragmented packets in
          <xref target="RFC2460"></xref> do not mandate behavior that would
          minimize the effects of overlapping fragments.</t>

          <t>In order to ensure that deep packet inspection can be carried out
          correctly on fragmented packets, many firewalls and other nodes that
          use deep packet inspection will collect the fragments and reassemble
          the packet before examining it. Depending on the
          implementation of packet reassembly and the treatment of packet
          fragments in these nodes, the specification issues mentioned
          potentially leave IPv6 open to the sort of attacks described in
          <xref target="RFC1858"></xref> and <xref target="RFC3128"></xref>
          for IPv4.</t>

          <t>The following steps can be taken to mitigate these threats:<list
              style="symbols">
              <t>Although permitted in <xref target="RFC2460"></xref>, there is
              no reason for a source to generate overlapping packet fragments,
              and overlaps could be prohibited in a future revision of the
              protocol specification. Firewalls should drop all packets with
              overlapped fragments: certain implementations both in firewalls
              and other nodes already drop such packets.</t>

              <t>Specifying a minimum size for packet fragments does not help
              in the same way as it does for IPv4 because IPv6 extension
              headers can be made to appear very long: an attacker could
              insert one or more undefined destination options with long
              lengths and the 'ignore if unknown' bit set. Given the
              guaranteed minimum MTU of IPv6, it seems reasonable that hosts
              should be able to ensure that the transport port numbers are in
              the first fragment in almost all cases and that deep packet
              inspection should be very suspicious of first fragments that do
              not contain them (see also the discussion of fragment sizes in
              <xref target="frag-dos"></xref>).</t>
            </list></t>
        </section>

        <section anchor="frag-dos" title="Fragmentation Related DoS Attacks">
          <t>Packet reassembly in IPv6 hosts also opens up the possibility of
          various fragment-related security attacks. Some of these are
          analogous to attacks identified for IPv4. Of particular concern is a
          DoS attack based on sending large numbers of small fragments without
          a terminating last fragment that would potentially overload the
          reconstruction buffers and consume large amounts of CPU
          resources.</t>

          <t>Mandating the size of packet fragments could reduce the impact of
          this kind of attack by limiting the rate at which fragments could
          arrive and limiting the number of fragments that need to be
          processed, but this is not currently specified by the IPv6 standard.
          In practice, reasonable design choices in protocol stacks are likely
          to either maximize the size of all fragments except the final one
          using the path MTU (most likely choice), or distribute the data
          evenly in the required minimum number of fragments. In either case,
          the smallest non-final fragment would be at least half the
          guaranteed minimum MTU (640 octets) -- the worst case arises when a
          payload is just too large for a single packet and is divided
          approximately equally between two packets. Administrators should
          consider configuring firewalls and hosts to drop non-final fragments
          smaller than 640 octets.</t>
        </section>

        <section anchor="ipv6-link-local"
                 title="Link-Local Addresses and Securing Neighbor Discovery">
          <t>All IPv6 nodes are required to configure a link-local address on
          each interface. This address is used to communicate with other nodes
          directly connected to the link accessed via the interface,
          especially during the neighbor discovery and autoconfiguration
          processes. Link-local addresses are fundamental to the operation of
          the Neighbor Discovery Protocol (NDP) <xref target="RFC2461"></xref>
          and Stateless Address Autoconfiguration (SLAAC) <xref
          target="RFC2462"></xref>. NDP also provides the functionality of
          associating link-layer and IP addresses provided by the Address
          Resolution Protocol (ARP) in IPv4 networks.</t>

          <t>The standard version of NDP is subject to a number of security
          threats related to ARP spoofing attacks on IPv4. These threats are
          documented in <xref target="RFC3756"></xref>, and mechanisms to
          combat them are specified in SEcure Neighbor Discovery (SEND) <xref
          target="RFC3971"></xref>. SEND is an optional mechanism that is
          particularly applicable to wireless and other environments where it
          is difficult to physically secure the link.</t>

          <t>Because the link-local address can, by default, be acquired
          without external intervention or control, it allows an attacker to
          commence communication on the link without needing to acquire
          information about the address prefixes in use or communicate with
          any authorities on the link. This feature gives a malicious node the
          opportunity to mount an attack on any other node that is attached to
          this link; this vulnerability exists in addition to possible direct
          attacks on NDP. Link-local addresses may also facilitate the
          unauthorized use of the link bandwidth ('bandwidth theft') to
          communicate with another unauthorized node on the same link.</t>

          <t>The vulnerabilities of IPv6 link-local addresses in NDP can be
          mitigated in several ways. A general solution will require <list
              style="symbols">
              <t>authenticating the link-layer connectivity, for example, by
              using IEEE 802.1X functionality <xref
              target="IEEE.802-1X"></xref> or physical security, and</t>

              <t>using SEcure Neighbor Discovery (SEND) to create a
              cryptographically generated link-local address (as described in
              <xref target="RFC3971"></xref>) that is tied to the authenticated
              link-layer address.</t>
            </list>This solution would be particularly appropriate in wireless
          LAN deployments where it is difficult to physically secure the
          infrastructure, but it may not be considered necessary in wired
          environments where the physical infrastructure can be kept secure by
          other means.</t>

          <t>Limiting the potentiality for abuse of link-local addresses in
          general packet exchanges is more problematic because there may be
          circumstances, such as isolated networks, where usage is appropriate
          and discrimination between use and abuse requires complex filtering
          rules which have to be implemented on hosts. The risk of misuse may
          be deemed too small compared with the effort needed to control it,
          but special attention should be paid to tunnel end-points (see <xref
          target="ipv6-in-ipv6" format="counter"></xref>, <xref target="auto-tunnel" format="counter"></xref>,
          and <xref target="tunneling-assumptions" format="counter"></xref>).</t>

          <t>Any filtering has to be provided by a host-based or bridging
          firewall. In general, link-local addresses are expected to be used by
          applications that are written to deal with specific interfaces and
          links. Typically these applications are used for control and
          management. A node which is attached to multiple links has to deal
          with the potentially overlapping link-local address spaces
          associated with these links. IPv6 provides for this through zone
          identifiers that are used to discriminate between the different
          address scopes <xref target="RFC4007"></xref> and the scope
          identifier that can be associated with a socket address structure
          <xref target="RFC3493"></xref>. Most users are unfamiliar with these
          issues and general purpose applications are not intended to handle
          this kind of discrimination. link-local addresses are not normally
          used with the Domain Name System (DNS), and DNS cannot supply zone
          identifiers. If it is considered necessary to prevent the use of
          link-local addresses by means other than control and management protocols,
          administrators may wish to consider limiting the protocols that can
          be used with link-local addresses. At a minimum, ICMPv6 and any
          intra-domain routing protocol in use (such as Open Shortest Path First
          (OSPF) or Routing Information Protocol (RIP)) need to be
          allowed, but other protocols may also be needed. RIP illustrates the
          complexity of the filtering problem: its messages are encapsulated
          as User Datagram Protocol (UDP) payloads, and filtering needs to
          distinguish RIP messages addressed to UDP port 521 from other UDP
          messages.</t>
        </section>

        <section anchor="router-adverts"
                 title="Securing Router Advertisements">
          <t>As part of the Neighbor Discovery process, routers on a link
          advertise their capabilities in Router Advertisement messages. The
          version of NDP defined in <xref target="RFC2461"></xref> does not
          protect the integrity of these messages or validate the assertions
          made in the messages with the result that any node that connects to
          the link can maliciously claim to offer routing services that it
          will not fulfill, and advertise inappropriate prefixes and
          parameters. These threats have been documented in <xref
          target="RFC3756"></xref>.</t>

          <t>A malicious node may also be able to carry out a DoS attack by
          deprecating an established valid prefix (by advertising it with a
          zero lifetime). Similar DoS attacks are possible if the optional
          Router Selection mechanism is implemented as described in the
          security considerations of <xref target="RFC4191"></xref>.</t>

          <t>SEND <xref target="RFC3971"></xref> can be used to provide
          verification that routers are authorized to provide the services
          they advertise through a certificate-based mechanism. This
          capability of SEND is also particularly appropriate for wireless
          environments where clients are reliant on the assertions of the
          routers rather than a physically secured connection.</t>
        </section>

        <section anchor="load-sharing" title="Host-to-Router Load Sharing">
          <t>If a host deploys the optional host-to-router load-sharing
          mechanism <xref target="RFC4311"></xref>, a malicious application
          could carry out a DoS attack on one or more of the load-sharing
          routers if the application is able to use knowledge of the load-sharing
          algorithm to synthesize traffic that subverts the load-sharing
          algorithm and directs a large volume of bogus traffic
          towards a subset of the routers. The likelihood of such an attack
          can be reduced if the implementation uses a sufficiently
          sophisticated load sharing algorithm as described in the security
          considerations of <xref target="RFC4311"></xref>.</t>
        </section>

        <section anchor="mobile" title="Mobile IPv6">
          <t>Mobile IPv6 offers significantly enhanced security compared with
          Mobile IPv4 especially when using optimized routing and care-of
          addresses. Return routability checks are used to provide relatively
          robust assurance that the different addresses that a mobile node
          uses as it moves through the network do indeed all refer to the same
          node. The threats and solutions are described in <xref
          target="RFC3775"></xref>, and a more extensive discussion of the
          security aspects of the design can be found in <xref
          target="RFC4225"></xref>.</t>

          <section anchor="ha-mipv6"
                   title="Obsolete Home Address Option in Mobile IPv6">
            <t>The Home Address option specified in early versions of Mobile
            IPv6 would have allowed a trivial source spoofing attack: hosts
            were required to substitute the source address of incoming packets
            with the address in the option, thereby potentially evading checks
            on the packet source address. The version of Mobile IPv6 as
            standardized in 

<?rfc needLines="3"?>

<xref target="RFC3775"></xref> has removed this
            issue by ensuring that the Home Address destination option is only
            processed if there is a corresponding binding cache entry and
            securing Binding Update messages.</t>

            <t>A number of pre-standard implementations of Mobile IPv6 were
            available that implemented this obsolete and insecure option: care
            should be taken to avoid running such obsolete systems.</t>
          </section>
        </section>
      </section>

      <section title="IPv4-Mapped IPv6 Addresses">
        <t>Overloaded functionality is always a double-edged sword: it may
        yield some deployment benefits, but often also incurs the price that
        comes with ambiguity.</t>

        <t>One example of such is IPv4-mapped IPv6 addresses (::ffff/96): a
        representation of an IPv4 address as an IPv6 address inside an
        operating system as defined in <xref target="RFC3493"></xref>. Since
        the original specification, the use of IPv4-mapped addresses has been
        extended to a transition mechanism, Stateless IP/ICMP Translation
        algorithm (SIIT) <xref target="RFC2765"></xref>, where they are
        potentially used in the addresses of packets on the wire.</t>

        <t>Therefore, it becomes difficult to unambiguously discern
        whether an
        IPv4 mapped address is really an IPv4 address represented in the IPv6
        address format (basic API behavior) *or* an IPv6 address received
        from the wire (which may be subject to address forgery, etc.). (SIIT
        behavior). 
<!-- [rfced] What was "(SIIT behavior)" intended to refer to? Please clarify.
Also, please expand at first appearance: Stateless IP/ICMP Translation (SIIT) behavior. -->

The security issues that arise from the ambiguous behavior
        when IPv4-mapped addresses are used on the wire include:<list
            style="symbols">
            <t>If an attacker transmits an IPv6 packet with ::ffff:127.0.0.1
            in the IPv6 source address field, he might be able to bypass a
            node's access controls by deceiving applications into believing
            that the packet is from the node itself (specifically, the IPv4
            loopback address, 127.0.0.1). The same attack might be performed
            using the node's IPv4 interface address instead.</t>

            <t>If an attacker transmits an IPv6 packet with IPv4-mapped
            addresses in the IPv6 destination address field corresponding to
            IPv4 addresses inside a site's security perimeter (e.g.,
            ::ffff:10.1.1.1), he might be able to bypass IPv4 packet filtering
            rules and traverse a site's firewall.</t>

            <t>If an attacker transmits an IPv6 packet with IPv4-mapped
            addresses in the IPv6 source and destination fields to a protocol
            that swaps IPv6 source and destination addresses, he might be able
            to use a node as a proxy for certain types of attacks. For
            example, this might be used to construct broadcast multiplication
            and proxy TCP port scan attacks.</t>
          </list></t>

        <t>In addition, special cases like these, while giving deployment
        benefits in some areas, require a considerable amount of code
        complexity (e.g., in the implementations of bind() system calls and
        reverse DNS lookups) that is probably undesirable but can be managed
        in this case.</t>

        <t>In practice, although the packet translation mechanisms of SIIT are
        specified for use in "Network Address Translator - Protocol
        Translator (NAT-PT)" <xref target="RFC2766"></xref>, NAT-PT uses a
        mechanism different from IPv4-mapped IPv6 addresses for communicating
        embedded IPv4 addresses in IPv6 addresses. Also, SIIT is not
        recommended for use as a standalone transition mechanism. Given the
        issues that have been identified, it seems appropriate that mapped
        addresses should not be used on the wire. However, changing
        application behavior by deprecating the use of mapped addresses in the
        operating system interface would have significant impact on
        application porting methods as described in <xref
        target="RFC4038"></xref>, and it is expected that IPv4-mapped IPv6
        addresses will continue to be used within the API to aid application
        portability.</t>

        <t>Using the basic API behavior has some security implications in that
        it adds additional complexity to address-based access controls. The
        main issue that arises is that an IPv6 (AF_INET6) socket will accept
        IPv4 packets even if the node has no IPv4 (AF_INET) sockets open. This
        has to be taken into account by application developers and may allow a
        malicious IPv4 peer to access a service even if there are no open IPv4
        sockets. This violates the security principle of "least surprise".</t>
      </section>

      <section anchor="transparency" title="Increased End-to-End Transparency">
        <t>One of the major design aims of IPv6 has been to maintain the
        original IP architectural concept of end-to-end transparency.
        Transparency can help foster technological innovation in areas such as
        peer-to-peer communication, but maintaining the security of the network
        at the same time requires some modifications in the network
        architecture. Ultimately, it is also likely to need changes in the
        security model as compared with the norms for IPv4 networks.</t>

        <section title="IPv6 Networks without NATs">
          <t>The necessity of introducing Network Address Translators (NATs)
          into IPv4 networks, resulting from a shortage of IPv4 addresses, has
          removed the end-to-end transparency of most IPv4 connections: the
          use of IPv6 would restore this transparency. However, the use of
          NATs, and the associated private addressing schemes, has become
          inappropriately linked to the provision of security in enterprise
          networks. The restored end-to-end transparency of IPv6 networks can
          therefore be seen as a threat by poorly informed enterprise network
          managers. Some seem to want to limit the end-to-end capabilities of
          IPv6, for example by deploying private, local addressing and
          translators, even when it is not necessary because of the abundance
          of IPv6 addresses.</t>

          <t>Recommendations for designing an IPv6 network to meet the
          perceived security and connectivity requirements implicit in the
          current usage of IPv4 NATs whilst maintaining the advantages of IPv6
          end-to-end transparency are described in "IP Version 6 Network Architecture
          Protection" <xref target="RFC4864"></xref>.</t>
        </section>

        <section anchor="security-model"
                 title="Enterprise Network Security Model for IPv6">
          <t>The favored model for enterprise network security in IPv4
          stresses the use of a security perimeter policed by autonomous
          firewalls and incorporating the NATs. Both perimeter firewalls and
          NATs introduce asymmetry and reduce the transparency of
          communications through these perimeters. The symmetric
          bidirectionality and transparency that are extolled as virtues of
          IPv6 may seem to be at odds with this model. Consequently, network
          managers may even see them as undesirable attributes, in conflict
          with their need to control threats to and attacks on the networks
          they administer.</t>

          <t>It is worth noting that IPv6 does not *require* end-to-end
          connectivity. It merely provides end-to-end addressability; the
          connectivity can still be controlled using firewalls (or other
          mechanisms), and it is indeed wise to do so.</t>

          <t>A number of matters indicate that IPv6 networks should migrate
          towards an improved security model, which will increase the overall
          security of the network while at the same time facilitating
          end-to-end communication: <list style="symbols">
              <t>Increased usage of end-to-end security especially at the
              network layer. IPv6 mandates the provision of IPsec capability
              in all nodes, and increasing usage of end-to-end security is a
              challenge to current autonomous firewalls that are unable to
              perform deep packet inspection on encrypted packets. It is also
              incompatible with NATs because they modify the packets, even
              when packets are only authenticated rather than encrypted.</t>

              <t>Acknowledgement that over-reliance on the perimeter model is
              potentially dangerous. An attacker who can penetrate today's
              perimeters will have free rein within the perimeter, in many
              cases. Also a successful attack will generally allow the
              attacker to capture information or resources and make use of
              them.</t>

              <t>Development of mechanisms such as 'Trusted Computing' <xref
              target="TCGARCH"></xref> that will increase the level of trust
              that network managers are able to place on hosts.</t>

              <t>Development of centralized security policy repositories and
              secure distribution mechanisms that, in conjunction with trusted
              hosts, will allow network managers to place more reliance on
              security mechanisms at the end-points. The mechanisms are likely
              to include end-node firewalling and intrusion detection systems
              as well as secure protocols that allow end-points to influence
              the behavior of perimeter security devices.</t>

              <t>Review of the role of perimeter devices with increased
              emphasis on intrusion detection, and network resource protection and
              coordination to thwart distributed denial-of-service
              attacks.</t>
            </list></t>

          <t>Several of the technologies required to support an enhanced
          security model are still under development, including secure
          protocols to allow end-points to control firewalls: the complete
          security model utilizing these technologies is now emerging but
          still requires some development.</t>

          <t>In the meantime, initial deployments will need to make use of
          similar firewalling and intrusion detection techniques to IPv4 that
          may limit end-to-end transparency temporarily, but should be
          prepared to use the new security model as it develops and avoid the
          use of NATs by the use of the architectural techniques described in
          <xref target="RFC4864"></xref>. In particular, using
          NAT-PT <xref target="RFC2766"></xref> as a general purpose
          transition mechanism should be avoided as it is likely to limit the
          exploitation of end-to-end security and other IPv6
          capabilities in the
          future as explained in <xref
          target="RFC4966"></xref>.</t>
        </section>
      </section>

      <section anchor="ipv6-in-ipv6" title="IPv6 in IPv6 Tunnels">
        <t>IPv6 in IPv6 tunnels can be used to circumvent security checks, so
        it is essential to filter packets both at tunnel ingress and egress
        points (the encapsulator and decapsulator) to ensure that both the
        inner and outer addresses are acceptable, and the tunnel is not being
        used to carry inappropriate traffic. <xref
        target="RFC3964"></xref>, which is primarily about the 6to4 transition
        tunneling mechanism (see <xref target="trans-specific"></xref>),
        contains useful discussions of possible attacks and ways to counteract
        these threats.</t>
<!-- [rfced] The original text was "the security discussions ... contain
        useful discussion". Please check whether the re-wording
        above conveys your intended meaning. -->

      </section>
    </section>

<?rfc needLines="10"?>

    <section title="Issues Due to Transition Mechanisms">
      <section anchor="trans-specific"
               title="IPv6 Transition/Coexistence Mechanism-Specific Issues">
        <t>The more complicated the IPv6 transition/coexistence becomes, the
        greater the danger that security issues will be introduced either
        <list style="symbols">
            <t>in the mechanisms themselves,</t>

            <t>in the interaction between mechanisms, or</t>

            <t>by introducing unsecured paths through multiple mechanisms.</t>
          </list> These issues may or may not be readily apparent. Hence, it
        would be desirable to keep the mechanisms simple (as few in number as
        possible and built from pieces as small as possible) to simplify
        analysis.</t>

        <t>One case where such security issues have been analyzed in detail is
        the 6to4 tunneling mechanism <xref target="RFC3964"></xref>.</t>

        <t>As tunneling has been proposed as a model for several more cases
        than are currently being used, its security properties should be
        analyzed in more detail. There are some generic dangers to
        tunneling:</t>

        <t><list style="symbols">
            <t>It may be easier to avoid ingress filtering checks.</t>

            <t>It is possible to attack the tunnel interface: several IPv6
            security mechanisms depend on checking that Hop Limit equals 255
            on receipt and that link-local addresses are used. Sending such
            packets to the tunnel interface is much easier than gaining access
            to a physical segment and sending them there.</t>

            <t>Automatic tunneling mechanisms are typically particularly
            dangerous as there is no pre-configured association between end
            points. Accordingly, at the receiving end of the tunnel, packets
            have to be accepted and decapsulated from any source.
            Consequently, special care should be taken when specifying
            automatic tunneling techniques.</t>
          </list></t>
      </section>

      <section anchor="auto-tunnel" title="Automatic Tunneling and Relays">
        <t>Two mechanisms have been specified that use automatic tunneling and
        are intended for use outside a single domain. These mechanisms
        encapsulate the IPv6 packet directly in an IPv4 packet in the case of
        6to4 <xref target="RFC3056"></xref> or in an IPv4 UDP packet in the
        case of Teredo <xref target="RFC4380"></xref>. In each case, packets
        can be sent and received by any similarly equipped nodes in the IPv4
        Internet.</t>

        <t>As mentioned in <xref target="trans-specific"></xref>, a major
        vulnerability in such approaches is that receiving nodes must allow
        decapsulation of traffic sourced from anywhere in the Internet. This
        kind of decapsulation function must be extremely well secured because
        of the wide range of potential sources.</t>

        <t>An even more difficult problem is how these mechanisms are able to
        establish communication with native IPv6 nodes or between the
        automatic tunneling mechanisms: such connectivity requires the use of
        some kind of "relay". These relays could be deployed in various
        locations such as: <list style="symbols">
            <t>all native IPv6 nodes,</t>

            <t>native IPv6 sites,</t>

            <t>in IPv6-enabled ISPs, or</t>

            <t>just somewhere in the Internet.</t>
          </list></t>

        <t>Given that a relay needs to trust all the sources (e.g., in the
        6to4 case, all 6to4 routers) that are sending it traffic, there are
        issues in achieving this trust and at the same time scaling the relay
        system to avoid overloading a small number of relays.</t>

        <t>As authentication of such a relay service is very difficult to
        achieve, and particularly so in some of the possible deployment
        models, relays provide a potential vehicle for address spoofing,
        (reflected) denial-of-service attacks, and other threats.</t>

        <t>Threats related to 6to4 and measures to combat them are discussed
        in <xref target="RFC3964"></xref>. <xref target="RFC4380"></xref>
        incorporates extensive discussion of the threats to Teredo and
        measures to combat them.</t>
      </section>

      <section anchor="tunneling-assumptions"
               title="Tunneling IPv6 through IPv4 Networks May Break IPv4 Network Security Assumptions">
        <t>NATs and firewalls have been deployed extensively in the IPv4
        Internet, as discussed in <xref target="transparency"></xref>.
        Operators who deploy them typically have some security/operational
        requirements in mind (e.g., a desire to block inbound connection
        attempts), which may or may not be misguided.</t>

        <t>The addition of tunneling can change the security model that such
        deployments are seeking to enforce. IPv6-over-IPv4 tunneling using
        protocol 41 is typically either explicitly allowed, or disallowed
        implicitly. Tunneling IPv6 over IPv4 encapsulated in UDP constitutes a
        more difficult problem as UDP must usually be allowed to pass through
        NATs and firewalls. Consequently, using UDP implies the ability to
        punch holes in NATs and firewalls although, depending on the
        implementation, this ability may be limited or only achieved in a
        stateful manner. In practice, the mechanisms have been explicitly
        designed to traverse both NATs and firewalls in a similar fashion.</t>

        <t>One possible view is that the use of tunneling is especially
        questionable in home and SOHO (small office/home office) environments
        where the level of expertise in network administration is typically
        not very high; in these environments, the hosts may not be as tightly
        managed as in others (e.g., network services might be enabled
        unnecessarily), leading to possible security break-ins or other
        vulnerabilities.</t>

        <t>Holes allowing tunneled traffic through NATs and firewalls can be
        punched both intentionally and unintentionally. In cases where the
        administrator or user makes an explicit decision to create the hole,
        this is less of a problem, although (for example) some enterprises
        might want to block IPv6 tunneling explicitly if employees were able
        to create such holes without reference to administrators. On the other
        hand, if a hole is punched transparently, it is likely that a
        proportion of users will not understand the consequences: this will
        very probably result in a serious threat sooner or later.</t>

        <t>When deploying tunneling solutions, especially tunneling solutions
        that are automatic and/or can be enabled easily by users who do not
        understand the consequences, care should be taken not to compromise
        the security assumptions held by the users.</t>

        <t>For example, NAT traversal should not be performed by default
        unless there is a firewall producing a similar by-default security
        policy to that provided by IPv4 NAT. IPv6-in-IPv4 (protocol 41)
        tunneling is less of a problem, as it is easier to block if necessary;
        however, if the host is protected in IPv4, the IPv6 side should be
        protected as well.</t>

        <t>As is shown in <xref target="Probing-Mapping"></xref>, it is
        relatively easy to determine the IPv6 address corresponding to an IPv4
        address in tunneling deployments. It is therefore vital NOT to rely on
        "security by obscurity", i.e., assuming that nobody is able to guess or
        determine the IPv6 address of the host especially when using automatic
        tunneling transition mechanisms.</t>

        <t>The network architecture must provide separate IPv4 and IPv6
        firewalls with tunneled IPv6 traffic arriving encapsulated in IPv4
        packets routed through the IPv4 firewall before being decapsulated,
        and then through the IPv6 firewall as shown in <xref
        target="fig-tunnel-fw"></xref>.</t>

        <figure anchor="fig-tunnel-fw" title="Tunneled Traffic and Firewalls">
          <artwork><![CDATA[ 
             +--------+      +--------+      +--------+
   Site      | Native | IPv6 |v6 in v4| IPv4 | Native |      Public
Network <--->|  IPv6  |<---->| Tunnel |<---->|  IPv4  |<---> Internet
             |Firewall|      |Endpoint|      |Firewall|
             +--------+      +--------+      +--------+
            ]]></artwork>
        </figure>
      </section>
    </section>

    <section title="Issues Due to IPv6 Deployment">
      <section title="Avoiding the Trap of Insecure IPv6 Service Piloting">
        <t>Because IPv6 is a new service for many networks, network managers
        will often opt to make a pilot deployment in a part of the network to
        gain experience and understand the problems as well as the benefits
        that may result from a full production quality IPv6 service.</t>

        <t>Unless IPv6 service piloting is done in a manner that is as secure
        as possible, there is a risk that if security in the pilot does not
        match up to what is achievable with current IPv4 production service,
        the comparison can adversely impact the overall assessment of the IPv6
        pilot deployment. This may result in a decision to delay or even avoid
        deploying an IPv6 production service. For example, hosts and routers
        might not be protected by IPv6 firewalls, even if the corresponding
        IPv4 service is fully protected by firewalls. The use of tunneling
        transition mechanisms (see <xref
        target="tunneling-assumptions"></xref>) and the interaction with
        virtual private networks also need careful attention to ensure that
        site security is maintained. This is particularly critical where IPv6
        capabilities are turned on by default in new equipment or new releases
        of operating systems: network managers may not be fully aware of the
        security exposure that this creates.</t>

        <t>In some cases, a perceived lack of availability of IPv6 firewalls
        and other security capabilities, such as intrusion detection systems
        may have led network managers to resist any kind of IPv6 service
        deployment. These problems may be partly due to the relatively slow
        development and deployment of IPv6-capable security equipment, but the
        major problems appear to have been a lack of information, and more
        importantly a lack of documented operational experience on which
        managers can draw. In actual fact, at the time of writing,
        there are a significant number of alternative IPv6 packet filters and
        firewalls already in existence that could be used to provide
        sufficient access controls.</t>

        <t>However, there are a small number of areas where the available
        equipment and capabilities may still be a barrier to secure deployment
        as of the time of writing: <list style="symbols">
            <t>'Personal firewalls' with support for IPv6 and intended for use
            on hosts are not yet widely available.</t>

            <t>Enterprise firewalls are at an early stage of development and
            may not provide the full range of capabilities needed to implement
            the necessary IPv6 filtering rules. Network managers often expect
            the same devices that support and are used for IPv4 today to also
            become IPv6-capable -- even though this is not really required and
            the equipment may not have the requisite hardware capabilities to
            support fast packet filtering for IPv6. Suggestions for the
            appropriate deployment of firewalls are given in <xref
            target="tunneling-assumptions"></xref> -- as will be seen from
            this section, it is usually desirable that the firewalls are in
            separate boxes, and there is no necessity for them to be
            same the model
            of equipment.</t>

            <t>A lesser factor may be that some design decisions in the IPv6
            protocol make it more difficult for firewalls to be implemented
            and work in all cases, and to be fully future-proof (e.g., when
            new extension headers are used) as discussed in <xref
            target="exthdr"></xref>. It is significantly more difficult for
            intermediate nodes to process the IPv6 header chains than IPv4
            packets.</t>

            <t>Adequate Intrusion Detection Systems (IDS) are more difficult
            to construct for IPv6. IDSs are now beginning to become available
            but the pattern-based mechanisms used for IPv4 may not be the most
            appropriate for long-term development of these systems as
            end-to-end encryption becomes more prevalent. Future systems may
            be more reliant on traffic flow pattern recognition.</t>

            <t>Implementations of high availability capabilities supporting
            IPv6 are also in short supply. In particular, development of the
            IPv6 version of the Virtual Router Redundancy Protocol (VRRP)
            <xref target="VRRP"></xref> has lagged the
            development of the main IPv6 protocol although alternatives may be
            available for some environments.</t>
          </list></t>

        <t>In all these areas, developments are ongoing and they should not be
        considered a long-term bar to the deployment of IPv6 either as a pilot
        or production service. The necessary tools are now available to make a
        secure IPv6 deployment, and with careful selection of components and
        design of the network architecture, a successful pilot or production
        IPv6 service can be deployed. Recommendations for secure deployment
        and appropriate management of IPv6 networks can be found in the
        documentation archives of the European Union 6net project <xref
        target="SIXNET"></xref> and in the Deployment Guide published by the
        IPv6 Promotion Council of Japan <xref target="JpIPv6DC"></xref>.</t>
      </section>

      <section title="DNS Server Problems">
        <t>Some DNS server implementations have flaws that severely affect DNS
        queries for IPv6 addresses as discussed in <xref
        target="RFC4074"></xref>. These flaws can be used for DoS attacks
        affecting both IPv4 and IPv6 by inducing caching DNS servers to
        believe that a domain is broken and causing the server to block access
        to all requests for the domain for a precautionary period.</t>
      </section>

      <section title="Addressing Schemes and Securing Routers">
        <t>Whilst in general terms brute force scanning of IPv6 subnets is
        essentially impossible due to the enormously larger address space of
        IPv6 and the 64-bit interface identifiers (see <xref
        target="Probing-Mapping"></xref>), this will be obviated if
        administrators do not take advantage of the large space to use
        unguessable interface identifiers.</t>

        <t>Because of the unmemorability of complete IPv6 addresses, there is a
        temptation for administrators to use small integers as interface
        identifiers when manually configuring them, as might happen on
        point-to-point links or when provisioning complete addresses from a
        DHCPv6 server. Such allocations make it easy for an attacker to find
        active nodes that they can then port scan.</t>

        <t>To make use of the larger address space properly, administrators
        should be very careful when entering IPv6 addresses in their
        configurations (e.g., access control lists), since numerical IPv6
        addresses are more prone to human error than IPv4 due to their length
        and unmemorability.</t>

        <t>It is also essential to ensure that the management interfaces of
        routers are well secured (e.g., allowing remote access using Secure
        Shell (SSH) only and ensuring that local craft interfaces have
        non-default passwords) as the router will usually contain a
        significant cache of neighbor addresses in its neighbor cache.</t>
      </section>

      <section title="Consequences of Multiple Addresses in IPv6">
        <t>One positive consequence of IPv6 is that nodes that do not require
        global access can communicate locally just by the use of a link-local
        address (if very local access is sufficient) or across the site by
        using a Unique Local Address (ULA). In either case it is easy to
        ensure that access outside the assigned domain of activity can be
        controlled by simple filters (which should be the default for
        link-locals). However, the security hazards of using link-local
        addresses for general purposes, as documented in <xref
        target="ipv6-link-local"></xref>, should be borne in mind.</t>

        <t>On the other hand, the possibility that a node or interface can
        have multiple global scope addresses makes access control filtering
        (both on ingress and egress) more complex and requires higher
        maintenance levels. Vendors and network administrators need to be
        aware that multiple addresses are the norm rather than the exception
        in IPv6: when building and selecting tools for security and management,
        a highly desirable feature is the ability to be able to 'tokenize'
        access control lists and configurations in general to cater for
        multiple addresses and/or address prefixes.</t>

        <t>The addresses could be from the same network prefix (for example,
        privacy mechanisms <xref target="RFC4941">
        </xref> will periodically create new addresses taken from the same
        prefix, and two or more of these may be active at the same time), or
        from different prefixes (for example, when a network is multihomed,
        when for management purposes a node belongs to several subnets on the
        same link or is implementing anycast services). In all these cases, it
        is possible that a single host could be using several different
        addresses with different prefixes and/or different interface
        identifiers. It is desirable that the security administrator
        be able to identify that the same host is behind all these
        addresses.</t>

        <t>Some network administrators may find the mutability of addresses
        when privacy mechanisms are used in their network to be undesirable
        because of the current difficulties in maintaining access control
        lists and knowing the origin of traffic. In general, disabling the use
        of privacy addresses is only possible if the full stateful DHCPv6
        mechanism <xref target="RFC3315"></xref> is used to allocate IPv6
        addresses and DHCPv6 requests for privacy addresses are not
        honored.</t>
      </section>

      <section anchor="icmpv6" title="Deploying ICMPv6">
        <t>In IPv4 it is commonly accepted that some filtering of ICMP packets
        by firewalls is essential to maintain security. Because of the
        extended use that is made of ICMPv6 <xref target="RFC2461"></xref>
        with a multitude of functions, the simple set of dropping rules that
        are usually applied in IPv4 need to be significantly developed for
        IPv6. The blanket dropping of all ICMP messages that is used in some
        very strict environments is simply not possible for IPv6.</t>

        <t>In an IPv6 firewall, policy needs to allow some messages through
        the firewall but also has to permit certain messages to and from the
        firewall, especially those with link-local sources on links to which
        the firewall is attached. These messages must be permitted to ensure
        that Neighbor Discovery <xref target="RFC2462"></xref>, Multicast
        Listener Discovery (<xref target="RFC2710"></xref>, <xref
        target="RFC3810"></xref>), and Stateless Address Configuration <xref
        target="RFC4443"></xref> work as expected.</t>

        <t>Recommendations for filtering ICMPv6 messages can be found in <xref
        target="RFC4890"></xref>.</t>

        <section title="Problems Resulting from ICMPv6 Transparency">
          <t>As described in <xref target="icmpv6"></xref>, certain ICMPv6
          error packets need to be passed through a firewall in both
          directions. This means that some ICMPv6 error packets can be
          exchanged between inside and outside without any filtering.</t>

          <t>Using this feature, malicious users can communicate between the
          inside and outside of a firewall, thus bypassing the administrator's
          inspection (proxy, firewall, etc.). For example, it might be possible
          to carry out a covert conversation through the payload of ICMPv6
          error messages or to tunnel inappropriate encapsulated IP packets in
          ICMPv6 error messages.
<!-- [rfced] inappropriately encapsulated? -->
 This problem can be alleviated by filtering
          ICMPv6 errors using a stateful packet inspection mechanism to ensure
          that the packet carried as a payload is associated with legitimate
          traffic to or from the protected network.</t>
        </section>
      </section>

      <section title="IPsec Transport Mode">
        <t>IPsec provides security to end-to-end communications at the network
        layer (layer 3). The security features available include access
        control, connectionless integrity, data origin authentication,
        protection against replay attacks, confidentiality, and limited
        traffic flow confidentiality (see <xref target="RFC4301"></xref>
        Section 2.1). IPv6 mandates the implementation of IPsec in all
        conforming nodes, making the usage of IPsec to secure end-to-end
        communication possible in a way that is generally not available to
        IPv4.</t>

        <t>To secure IPv6 end-to-end communications, IPsec transport mode
        would generally be the solution of choice. However, use of these IPsec
        security features can result in novel problems for network
        administrators and decrease the effectiveness of perimeter firewalls
        because of the increased prevalence of encrypted packets on which the
        firewalls cannot perform deep packet inspection and filtering.</t>

        <t>One example of such problems is the lack of security solutions in
        the middlebox, including effective content-filtering, ability to
        provide DoS prevention based on the expected TCP protocol behavior,
        and intrusion detection. Future solutions to this problem are
        discussed in <xref target="security-model"></xref>. Another example is
        an IPsec-based DoS (e.g., sending malformed ESP/AH packets) that can
        be especially detrimental to software-based IPsec implementations.</t>
      </section>

      <section title="Reduced Functionality Devices">
        <t>With the deployment of IPv6 we can expect the attachment of a very
        large number of new IPv6-enabled devices with scarce resources and low
        computing capacity. The resource limitations are generally because of
        a market requirement for cost reduction. Although
        the <xref target="RFC4294" format="title" /> <xref target="RFC4294"></xref> specifies some mandatory
        security capabilities for every conformant node, these do not include
        functions required for a node to be able to protect itself.
        Accordingly, some such devices may not be able even to perform the
        minimum set of functions required to protect themselves (e.g.,
        'personal' firewall, automatic firmware update, enough CPU power to
        endure DoS attacks). This means a different security scheme may be
        necessary for such reduced functionality devices.</t>
      </section>

      <section title="Operational Factors when Enabling IPv6 in the Network">
        <t>There are a number of reasons that make it essential to take
        particular care when enabling IPv6 in the network equipment:</t>

        <t>Initially, IPv6-enabled router software may be less mature than
        current IPv4-only implementations, and there is less experience with
        configuring IPv6 routing, which can result in disruptions to the IPv6
        routing environment and (IPv6) network outages.</t>

        <t>IPv6 processing may not happen at (near) line speed (or at a
        comparable performance level to IPv4 in the same equipment). A high
        level of IPv6 traffic (even legitimate, e.g., Network News Transport
        Protocol, NNTP) could easily overload IPv6 processing especially when
        it is software-based without the hardware support typical in high-end
        routers. This may potentially have deleterious knock-on effects on
        IPv4 processing, affecting availability of both services. Accordingly,
        if people don't feel confident enough in the IPv6 capabilities of
        their equipment, they will be reluctant to enable it in their
        "production" networks.</t>

        <t>Sometimes essential features may be missing from early releases of
        vendors' software; an example is provision of software enabling IPv6
        telnet/SSH access (e.g., to the configuration application of a
        router), but without the ability to turn it off or limit access to
        it!</t>

        <t>Sometimes the default IPv6 configuration is insecure. For example,
        in one vendor's implementation, if you have restricted IPv4 telnet to
        only a few hosts in the configuration, you need to be aware that IPv6
        telnet will be automatically enabled, that the configuration commands
        used previously do not block IPv6 telnet, that IPv6 telnet is open to the
        world by default, and that you have to use a separate command to also
        lock down the IPv6 telnet access.</t>

        <t>Many operator networks have to run interior routing protocols for
        both IPv4 and IPv6. It is possible to run them both in one routing
        protocol, or have two separate routing protocols; either approach has
        its tradeoffs <xref target="RFC4029"></xref>. If multiple routing
        protocols are used, one should note that this causes double the amount
        of processing when links flap or recalculation is otherwise needed --
        which might more easily overload the router's CPU, causing slightly
        slower convergence time.</t>
<!-- [rfced] more easily than what? -->
      </section>

      <section anchor="ndproxy-issues"
               title="Security Issues Due to Neighbor Discovery Proxies">
        <t>In order to span a single subnet over multiple physical links, a
        new experimental capability is being trialed in IPv6 to proxy
        Neighbor Discovery messages. A node with this capability will be
        called an NDProxy (see <xref target="RFC4389"></xref>). NDProxies are
        susceptible to the same security issues as those faced by hosts
        using unsecured Neighbor Discovery or ARP. These proxies may process
        unsecured messages, and update the neighbor cache as a result of such
        processing, thus allowing a malicious node to divert or hijack
        traffic. This may undermine the advantages of using SEND <xref
        target="RFC3971"></xref>.</t>

        <t>If a form of NDProxy is standardized, SEND will need to be extended
        to support this capability.</t>
      </section>
    </section>

    <section title="Security Considerations">
      <t>This memo attempts to give an overview of security considerations of
      the different aspects of IPv6, particularly as they relate to the
      transition to a network in which IPv4- and IPv6-based communications
      need to coexist.</t>
    </section>

    <section title="Acknowledgements">
      <t>This document draws together the work of many people who have
      contributed security-related documents to the IPV6 and V6OPS working
      groups. Alain Durand, Alain Baudot, Luc Beloeil, Sharon Chisholm, Tim
      Chown, Lars Eggert, Andras Kis-Szabo, Vishwas Manral, Janos Mohacsi,
      Mark Smith, Alvaro Vives, and Margaret Wassermann provided feedback to
      improve this document. Satoshi Kondo, Shinsuke Suzuki, and Alvaro Vives
      provided additional inputs in cooperation with the Deployment Working
      Group of the Japanese IPv6 Promotion Council and the Euro6IX IST
      co-funded project, together with inputs from Jordi Palet, Brian
      Carpenter, and Peter Bieringer. Michael Wittsend and Michael Cole
      discussed issues relating to probing/mapping and privacy. Craig Metz and
      Jun-ichiro itojun Hagino did the original work identifying the problems
      of using IPv4-mapped IPv6 addresses on the wire. Vishwas Manral made
      further investigations of the impact of tiny fragments on IPv6 security.
      Francis Dupont raised the issues relating to IPv6 Privacy Addresses.
      Finally, Pekka Savola wrote a number of documents on aspects IPv6 security
      which have been subsumed into this work. His document on "Firewalling
      Considerations for IPv6" (October 2003)
      originally identified many of the issues with the base IPv6
      specification which are documented here.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      &rfc1122;

      &rfc2375;

      &rfc2460;

      &rfc2461;

      &rfc2462;

      &rfc4443;

      &rfc2710;

<!-- RFC 4941 =   &ietf-ipv6-privacy-addrs-v2; -->

<reference anchor='RFC4941'>
<front>
<title>Privacy Extensions for Stateless Address Autoconfiguration in IPv6</title>

<author initials='T' surname='Narten' fullname='Thomas Narten'>
    <organization />
</author>

<author initials='R' surname='Draves'>
    <organization />
</author>

<author initials='S' surname='Krishnan'>
    <organization />
</author>

<date month='September' year='2007' />

<abstract><t>Nodes use IPv6 stateless address autoconfiguration to generate addresses using a combination of locally available information and information advertised by routers. Addresses are formed by combining network prefixes with an interface identifier. On interfaces that contain embedded IEEE Identifiers, the interface identifier is typically derived from it. On other interface types, the interface identifier is generated through other means, for example, via random number generation. This document describes an extension to IPv6 stateless address autoconfiguration for interfaces whose interface identifier is derived from an IEEE identifier. Use of the extension causes nodes to generate global scope addresses from interface identifiers that change over time, even in cases where the interface contains an embedded IEEE identifier. Changing the interface identifier (and the global scope addresses generated from it) over time makes it more difficult for eavesdroppers and other information collectors to identify when different addresses used in different transactions actually correspond to the same node.</t></abstract>

</front>

<seriesInfo name='RFC' value='4941' />

</reference>



      &rfc3056;

      &rfc4291;

      &rfc3775;

      &rfc3810;

      &rfc3964;

      &rfc4007;

      &rfc4380;
    </references>

    <references title="Informative References">
      &rfc3315;

      &rfc3493;

      &rfc3971;

      &rfc4029;

      &rfc4038;

      &rfc4301;

      &rfc4074;

<!--      &ietf-v6ops-natpt-to-exprmntl; became v6ops-natpt-to-historic -->
<!-- pub'd as RFC 4966 -->

<reference anchor='RFC4966'>
<front>
<title>Reasons to Move NAT-PT to Historic Status</title>

<author initials='C' surname='Aoun' fullname='Cedric Aoun'>
    <organization />
</author>

<author initials='E' surname='Davies' fullname='Elwyn Davies'>
    <organization />
</author>

<date month='July' year='2007' />

<abstract><t>This document discusses issues with the specific form of IPv6-IPv4 protocol translation mechanism implemented by the Network Address Translator - Protocol Translator (NAT-PT) defined in RFC 2766. These issues are sufficiently serious that recommending RFC 2766 as a general purpose transition mechanism is no longer desirable, and this document recommends that the IETF should reclassify RFC 2766 from Proposed Standard to Historic status.</t></abstract>

</front>

<seriesInfo name='RFC' value='4966'/>

</reference>


      &rfc4389;

      &rfc4191;

      &rfc4311;

      &rfc4294;

<!--      &ietf-v6ops-nap; became RFC 4864 -->
&rfc4864;


<!--    use VRRP for  &ietf-vrrp-ipv6-spec; -->
<reference anchor='VRRP'>
<front>
<title>Virtual Router Redundancy Protocol for IPv6</title>

<author initials='R' surname='Hinden' fullname='Robert Hinden'>
    <organization />
</author>

<author initials='J' surname='Cruz' fullname='John Cruz'>
    <organization />
</author>

<date month='March' day='5' year='2007' />

<abstract><t>This memo defines the Virtual Router Redundancy Protocol (VRRP) for IPv6. It is version three (3) of the protocol. It is based on the original version of VRRP (version 2) for IPv4 that is defined in RFC2338. VRRP specifies an election protocol that dynamically assigns responsibility for a virtual router to one of the VRRP routers on a LAN. The VRRP router controlling the IP address(es) associated with a virtual router is called the Master, and forwards packets sent to these IP addresses. The election process provides dynamic fail over in the forwarding responsibility should the Master become unavailable. The advantage gained from using VRRP for IPv6 is a quicker switch over to back up routers than can be obtained with standard IPv6 Neighbor Discovery [ND] mechanisms.</t></abstract>

</front>

<seriesInfo name='Work in' value='Progress'/>

<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-vrrp-ipv6-spec-08.txt' />
</reference>



      <reference anchor="SIXNET" target="http://www.6net.org/">
        <front>
          <title>Large Scale International IPv6 Pilot Network</title>

          <author fullname="6Net" initials="" surname="6Net">
            <organization>IPv6 Promotion Council</organization>

            <address></address>
          </author>

          <date year="2005" />
        </front>

        <seriesInfo name="EU Information Society Technologies Project"
                    value="" />
      </reference>

      <reference anchor="JpIPv6DC" target="http://www.v6pc.jp/">
        <front>
          <title>IPv6 Deployment Guideline (2005 Edition)</title>

          <author fullname="Deployment Working Group" initials=""
                  surname="Deployment WG">
            <organization>IPv6 Promotion Council</organization>

            <address></address>
          </author>

          <date year="2005" />
        </front>

        <seriesInfo name="IPv6 Promotion Council (Japan)"
                    value="Deployment Working Group" />
      </reference>

<!-- [rfced] this URL is not found. Please update it. -->
      <reference anchor="FNAT"
                 target="http://www.research.att.com/~smb/papers/fnat.pdf">
        <front>
          <title>Technique for Counting NATted Hosts</title>

          <author fullname="Steven M. Bellovin" initials="S.M."
                  surname="Bellovin">
            <organization abbrev="AT&amp;T Labs">AT&amp;T Labs
            Research</organization>

            <address>
              <postal>
                <street>180 Park Avenue</street>

                <street>P.O. Box 971</street>

                <city>Florham Park</city>

                <region>NJ</region>

                <code>07932-0971</code>

                <country>USA</country>
              </postal>

              <phone>+1 973 360-8656</phone>

              <email>smb@research.att.com</email>

              <uri>http://www.research.att.com/~smb</uri>
            </address>
          </author>

          <date month="November" year="2002" />
        </front>

        <seriesInfo name="Proc. Second Internet Measurement Workshop" value="" />
      </reference>

<!--       &ietf-v6ops-icmpv6-filtering-recs; became RFC 4890 -->

&rfc4890;

<!--  use SCAN-IMP for  &ietf-v6ops-scanning-implications; -->

<reference anchor='SCAN-IMP'>
<front>
<title>IPv6 Implications for Network Scanning</title>

<author initials='T' surname='Chown' fullname='Tim Chown'>
    <organization />
</author>

<date month='March' day='28' year='2007' />

<abstract><t>The 128 bits of IPv6 address space is considerably bigger than the 32 bits of address space of IPv4. In particular, the IPv6 subnets to which hosts attach will by default have 64 bits of host address space. As a result, traditional methods of remote TCP or UDP network scanning to discover open or running services on a host will potentially become less feasible, due to the larger search space in the subnet. In addition automated attacks, such as those performed by network worms, that pick random host addresses to propagate to, may be hampered. This document discusses this property of IPv6 and describes related issues for IPv6 site network administrators to consider, which may be of importance when planning site address allocation and management strategies. While traditional network scanning probes (whether by individuals or automated via network worms) may become less common, administrators should be aware of other methods attackers may use to discover IPv6 addresses on a target network, and also be aware of appropriate measures to mitigate them.</t></abstract>

</front>

<seriesInfo name='Work in' value='Progress'/>

<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-v6ops-scanning-implications-03.txt' />
</reference>


      &rfc4225;

      &rfc3756;

      &rfc2765;

      &rfc2766;

      &rfc1858;

      &rfc3128;

      &rfc4472;

      &rfc4025;

<!--      &ietf-tcpm-icmp-attacks; -->

<reference anchor='ICMP-ATT'>
<front>
<title>ICMP attacks against TCP</title>

<author initials='F' surname='Gont' fullname='Fernando Gont'>
    <organization />
</author>

<date month='May' day='7' year='2007' />

<abstract><t>This document discusses the use of the Internet Control Message Protocol (ICMP) to perform a variety of attacks against the Transmission Control Protocol (TCP) and other similar protocols. It proposes several counter-measures to eliminate or minimize the impact of these attacks.</t></abstract>

</front>

<seriesInfo name='Work in' value='Progress'/>

<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-tcpm-icmp-attacks-02.txt' />
</reference>



<!-- [rfced] this URL is not found. Please update it. -->
      <reference anchor="TCGARCH"
                 target="https://www.trustedcomputinggroup.org/groups/TCG_1_0_Architecture_Overview.pdf">
        <front>
          <title>TCG Specification Architecture Overview</title>

          <author>
            <organization>The Trusted Computing Group</organization>
          </author>

          <date day="28" month="April" year="2004" />
        </front>
      </reference>

      <reference anchor="IEEE.802-1X">
        <front>
          <title>Port-Based Network Access Control</title>

          <author>
            <organization>Institute of Electrical and Electronics
            Engineers</organization>
          </author>

          <date day="13" month="December" year="2004" />
        </front>

        <seriesInfo name="IEEE Standard for Local and Metropolitan Area Networks"
                    value="802.1X-2004" />
      </reference>
    </references>

<vspace blankLines="100"/> <!-- insert page break -->

    <section anchor="Probing-Mapping"
             title="IPv6 Probing/Mapping Considerations">
      <t>One school of thought wanted the IPv6 numbering topology (either at
      network or node level) to match IPv4 as exactly as possible, whereas
      others see IPv6 as giving more flexibility to the address plans, not
      wanting to constrain the design of IPv6 addressing. Mirroring the
      address plans is now generally seen as a security threat because an IPv6
      deployment may have different security properties from IPv4.</t>

      <t>Given the relatively immature state of IPv6 network security, if an
      attacker knows the IPv4 address of the node and believes it to be
      dual-stacked with IPv4 and IPv6, he might want to try to probe the
      corresponding IPv6 address, based on the assumption that the security
      defenses might be lower. This might be the case particularly for nodes
      which are behind a NAT in IPv4, but globally addressable in IPv6.
      Naturally, this is not a concern if similar and adequate security
      policies are in place.</t>

      <t>On the other hand, brute-force scanning or probing of addresses is
      computationally infeasible due to the large search space of interface
      identifiers on most IPv6 subnets (somewhat less than 64 bits wide,
      depending on how identifiers are chosen), always provided that
      identifiers are chosen at random out of the available space, as
      discussed in <xref
      target="SCAN-IMP"></xref>.</t>

      <t>For example, automatic tunneling mechanisms typically use
      deterministic methods for generating IPv6 addresses, so
      probing/port-scanning an IPv6 node is simplified. The IPv4 address is
      embedded at least in 6to4, Teredo, and ISATAP addresses. Additionally, it
      is possible (in the case of 6to4 in particular) to learn the address
      behind the prefix; for example, Microsoft 6to4 implementation uses the
      address 2002:V4ADDR::V4ADDR while older Linux and FreeBSD
      implementations default to 2002:V4ADDR::1. This could also be used as
      one way to identify an implementation and hence target any specific
      weaknesses.</t>

      <t>One proposal has been to randomize the addresses or subnet identifier
      in the address of the 6to4 router. This does not really help, as the
      6to4 router (whether a host or a router) will return an ICMPv6 Hop Limit
      Exceeded message, revealing the IP address. Hosts behind the 6to4 router
      can use methods such as privacy addresses <xref
      target="RFC4941"></xref> to conceal themselves,
      provided that they are not meant to be reachable by sessions started
      from elsewhere; they would still require a globally accessible static
      address if they wish to receive communications initiated elsewhere.</t>

<?rfc needLines="5"?>
      <t>To conclude, it seems that when an automatic tunneling mechanism is
      being used, given an IPv4 address, the corresponding IPv6 address could
      possibly be guessed with relative ease. This has significant
      implications if the IPv6 security policy is less adequate than that for
      IPv4.</t>
    </section>

    <section anchor="Privacy" title="IPv6 Privacy Considerations">
      <t>The generation of IPv6 addresses from MAC addresses potentially
      allows the behavior of users to be tracked in a way which may infringe
      their privacy. <xref target="RFC4941"></xref>
      specifies mechanisms which can be used to reduce the risk of
      infringement. It has also been claimed that IPv6 harms the privacy of
      the user, either by exposing the MAC address, or by exposing the number
      of nodes connected to a site.</t>

      <t>Additional discussion of privacy issues can be found in
      <xref target="RFC4864" format="title"/> <xref
      target="RFC4864"></xref>.</t>

      <section title="Exposing MAC Addresses">
        <t>Using stateless address autoconfiguration results in the MAC
        address being incorporated in an EUI64 that exposes the model of
        network card. The concern has been that a user might not want to
        expose the details of the system to outsiders, e.g., fearing a
        resulting burglary if a thief identifies expensive equipment from the
        vendor identifier embedded in MAC addresses, or allowing the type of
        equipment in use to be identified, thus facilitating an attack on
        specific security weaknesses.</t>

        <t>In most cases, this seems completely unfounded. First, such an
        address must be learned somehow -- this is a non-trivial process; the
        addresses are visible, e.g., in Web site access logs, but the chances
        that a random Web site owner is collecting this kind of information
        (or whether it would be of any use) are quite slim. Being able to
        eavesdrop the traffic to learn such addresses (e.g., by the compromise
        of DSL (Digital Subscriber Line) or Cable modem physical media) seems
        also quite far-fetched. Further, using statically configured interface
        identifiers or privacy addresses <xref
        target="RFC4941"></xref> for such purposes is
        straightforward if worried about the risk. 
<!-- [rfced] If who is worried about the risk? Please add a subject or
        re-phrase. -->
	Second, the burglar would
        have to be able to map the IP address to the physical location;
        typically this would only be possible with information from the
        private customer database of the Internet Service Provider (ISP) and,
        for large sites, the administrative records of the site, although some
        physical address information may be available from the WHOIS database
        of Internet registries.</t>
      </section>

<?rfc needLines="6"?>

      <section title="Exposing Multiple Devices">
        <t>Another concern that has been aired involves the user wanting to
        conceal the presence of a large number of computers or other devices
        connected to a network; NAT can "hide" all this equipment behind a
        single address, but it is not perfect either <xref
        target="FNAT"></xref>.</t>

        <t>One practical reason why some administrators may find this
        desirable is being able to thwart certain ISPs' business models. These
        models require payment based on the number of connected computers,
        rather than the connectivity as a whole.</t>

        <t>Similar feasibility issues as described above apply. To a degree,
        the number of machines present could be obscured by the sufficiently
        frequent reuse of privacy addresses <xref
        target="RFC4941"></xref> -- that is, if during
        a short period, dozens of generated addresses seem to be in use, it's
        difficult to estimate whether they are generated by just one host or
        multiple hosts.</t>
      </section>

      <section title="Exposing the Site by a Stable Prefix">
        <t>When an ISP provides IPv6 connectivity to its customers, including
        home or consumer users, it delegates a fixed global routing prefix
        (usually a /48) to them. This is in contrast to the typical IPv4
        situation where home users typically receive a dynamically allocated
        address that may be stable only for a period of hours.</t>

        <t>Due to this fixed allocation, it is easier to correlate the global
        routing prefix to a network site. With consumer users, this
        correlation leads to a privacy issue, since a site is often equivalent
        to an individual or a family in such a case. Consequently some users
        might be concerned about being able to be tracked based on their /48
        allocation if it is static <xref
        target="RFC4941"></xref>. On the other hand,
        many users may find having a static allocation desirable as it allows
        them to offer services hosted in their network more easily.</t>

        <t>This situation is not affected even if a user changes his/her
        interface ID or subnet ID, because malicious users can still discover
        this binding. On larger sites, the situation can be mitigated by using
        "untraceable" IPv6 addresses as described in <xref
        target="RFC4864"></xref>, and it is possible that in
       the future
        ISPs might be prepared to offer untraceable addresses to their
        consumer customers to minimize the privacy issues.</t>

        <t>This privacy issue is common to both IPv4 and IPv6 and is inherent
        in the use of IP addresses as both identifiers for node interfaces and
        locators for the nodes.</t>
      </section>
    </section>
  </back>
</rfc>
