RFC 6980 PROPOSED STANDARD IPV6 · SECURITY · NEIGHBOR DISCOVERY

ND and Fragmentation: Security Implications of IPv6 Fragmentation with IPv6 Neighbor Discovery

Why IPv6 Neighbor Discovery messages must not be fragmented.

On rfc-editor.org ↗
PUBLISHED
August 2013
AUTHORS
F. Gont
STREAM
IETF
BUILDS ON
RFC 3971 — SEND, RFC 4861 — IPv6 Neighbor Discovery
MINIMUM IPV6 MTU
1280 octets
CPA SIZE, 1024-BIT KEYS
1050 to 1066 bytes on Ethernet
CPA SIZE, 2048-BIT KEYS
1127 to 1238 bytes
DOI
10.17487/RFC6980

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                           F. Gont
Request for Comments: 6980                        SI6 Networks / UTN-FRH
Updates: 3971, 4861                                          August 2013
Category: Standards Track
ISSN: 2070-1721


Security Implications of IPv6 Fragmentation with IPv6 Neighbor Discovery

Abstract

   This document analyzes the security implications of employing IPv6
   fragmentation with Neighbor Discovery (ND) messages.  It updates RFC
   4861 such that use of the IPv6 Fragmentation Header is forbidden in
   all Neighbor Discovery messages, thus allowing for simple and
   effective countermeasures for Neighbor Discovery attacks.  Finally,
   it discusses the security implications of using IPv6 fragmentation
   with SEcure Neighbor Discovery (SEND) and formally updates RFC 3971
   to provide advice regarding how the aforementioned security
   implications can be mitigated.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc6980.

Copyright Notice

   Copyright (c) 2013 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1. Introduction ....................................................2
   2. Traditional Neighbor Discovery and IPv6 Fragmentation ...........4
   3. SEcure Neighbor Discovery (SEND) and IPv6 Fragmentation .........5
   4. Rationale for Forbidding IPv6 Fragmentation in Neighbor
      Discovery .......................................................6
   5. Specification ...................................................6
   6. Operational Advice ..............................................7
   7. Security Considerations .........................................7
   8. Acknowledgements ................................................8
   9. References ......................................................8
      9.1. Normative References .......................................8
      9.2. Informative References .....................................9
   Appendix A. Message Size When Carrying Certificates ...............10

1.  Introduction

   The Neighbor Discovery Protocol (NDP) is specified in RFC 4861
   [RFC4861].  It is used by both hosts and routers.  Its functions
   include Neighbor Discovery (ND), Router Discovery (RD), address
   autoconfiguration, address resolution, Neighbor Unreachability
   Detection (NUD), Duplicate Address Detection (DAD), and redirection.

   Many of the possible attacks against the Neighbor Discovery Protocol
   are discussed in detail in [RFC3756].  In order to mitigate the
   aforementioned possible attacks, SEcure Neighbor Discovery (SEND) was
   standardized.  SEND employs a number of mechanisms to certify the
   origin of Neighbor Discovery packets and the authority of routers,
   and to protect Neighbor Discovery packets from being the subject of
   modification or replay attacks.

   However, a number of factors, such as the high administrative
   overhead of deploying trust anchors and the unavailability of SEND
   implementations for many widely deployed operating systems, make SEND
   hard to deploy [Gont-DPSC].  Thus, in many general scenarios, it may
   be necessary and/or convenient to use other mitigation techniques for
   NDP-based attacks.  The following mitigations are currently available
   for NDP attacks:

   o  Static Access Control Lists (ACLs) in switches

   o  Layer-2 filtering of Neighbor Discovery packets (such as RA-Guard
      [RFC6105])

   o  Neighbor Discovery monitoring tools (e.g., NDPMon [NDPMon] and
      ramond [ramond])

   o  Intrusion Prevention Systems (IPS)

   IPv6 Router Advertisement Guard (RA-Guard) is a mitigation technique
   for attack vectors based on ICMPv6 Router Advertisement (RA)
   messages.  It is meant to block attack packets at a layer-2 device
   before the attack packets actually reach the target nodes.  [RFC6104]
   describes the problem statement of "Rogue IPv6 Router
   Advertisements", and [RFC6105] specifies the "IPv6 Router
   Advertisement Guard" functionality.

   Tools such as NDPMon [NDPMon] and ramond [ramond] aim to monitor
   Neighbor Discovery traffic in the hopes of detecting possible attacks
   when there are discrepancies between the information advertised in
   Neighbor Discovery packets and the information stored on a local
   database.

   Some Intrusion Prevention Systems (IPS) can mitigate Neighbor
   Discovery attacks.  We recommend that Intrusion Prevention Systems
   implement mitigations for NDP attacks.

   IPv6 fragmentation introduces a key challenge for these mitigation or
   monitoring techniques, since it is trivial for an attacker to conceal
   his attack by fragmenting his packets into multiple fragments.  This
   may limit or even eliminate the effectiveness of the aforementioned
   mitigation or monitoring techniques.  Recent work [CPNI-IPv6]
   indicates that current implementations of the aforementioned
   mitigations for NDP attacks can be trivially evaded.  For example, as
   noted in [RA-GUARD], current RA-Guard implementations can be
   trivially evaded by fragmenting the attack packets into multiple
   fragments, such that the layer-2 device cannot find all the necessary
   information to perform packet filtering in the same packet.  While
   Neighbor Discovery monitoring tools could (in theory) implement IPv6
   fragment reassembly, this is usually an arms-race with the attacker
   (an attacker can generate lots of forged fragments to "confuse" the
   monitoring tools), and therefore the aforementioned tools are
   unreliable for the detection of such attacks.

   Section 2 analyzes the use of IPv6 fragmentation in traditional
   Neighbor Discovery.  Section 3 analyzes the use of IPv6 fragmentation
   in SEcure Neighbor Discovery (SEND).  Section 4 provides the
   rationale for forbidding the use of IPv6 fragmentation with Neighbor
   Discovery.  Section 5 formally updates RFC 4861 such that the use of
   the IPv6 Fragment Header with traditional Neighbor Discovery is
   forbidden, and also formally updates RFC 3971 by providing advice on
   the use of IPv6 fragmentation with SEND.  Section 6 provides
   operational advice about interoperability problems arising from the
   use of IPv6 fragmentation with Neighbor Discovery.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

2.  Traditional Neighbor Discovery and IPv6 Fragmentation

   The only potential use case for IPv6 fragmentation with traditional
   (i.e., non-SEND) IPv6 Neighbor Discovery would be that in which a
   Router Advertisement must include a large number of options (Prefix
   Information Options, Route Information Options, etc.).  However, this
   could still be achieved without employing fragmentation, by splitting
   the aforementioned information into multiple Router Advertisement
   messages.

      Some Neighbor Discovery implementations are known to silently
      ignore Router Advertisement messages that employ fragmentation.
      Therefore, splitting the necessary information into multiple RA
      messages (rather than sending a large RA message that is
      fragmented into multiple IPv6 fragments) is probably desirable
      even from an interoperability point of view.

   Thus, avoiding the use of IPv6 fragmentation in traditional Neighbor
   Discovery would greatly simplify and improve the effectiveness of
   monitoring and filtering Neighbor Discovery traffic and would also
   prevent interoperability problems with those implementations that do
   not support fragmentation in Neighbor Discovery messages.

3.  SEcure Neighbor Discovery (SEND) and IPv6 Fragmentation

   SEND packets typically carry more information than traditional
   Neighbor Discovery packets: for example, they include additional
   options such as the Cryptographically Generated Address (CGA) option
   and the RSA signature option.

   When SEND nodes employ any of the Neighbor Discovery messages
   specified in [RFC4861], the situation is roughly the same: if more
   information than would fit in a non-fragmented Neighbor Discovery
   packet needs to be sent, it should be split into multiple Neighbor
   Discovery messages (such that IPv6 fragmentation is avoided).

   However, Certification Path Advertisement (CPA) messages (specified
   in [RFC3971]) pose a different situation, since the Certificate
   Option they include typically contains much more information than any
   other Neighbor Discovery option.  For example, Appendix C of
   [RFC3971] reports Certification Path Advertisement messages from 1050
   to 1066 bytes on an Ethernet link layer.  Since the size of CPA
   messages could potentially exceed the MTU of the local link,
   Section 5 recommends that fragmented CPA messages be processed
   normally, but discourages the use of keys that would result in
   fragmented CPA messages.

   It should be noted that relying on fragmentation opens the door to a
   variety of IPv6 fragmentation-based attacks against SEND.  In
   particular, if an attacker is located on the same broadcast domain as
   the victim host and Certification Path Advertisement messages employ
   IPv6 fragmentation, it would be trivial for the attacker to forge
   IPv6 fragments such that they result in "Fragment ID collisions",
   causing both the attack fragments and the legitimate fragments to be
   discarded by the victim node.  This would eventually cause
   Authorization Delegation Discovery (Section 6 of [RFC3971]) to fail,
   thus leading the host to (depending on local configuration) either
   fall back to unsecured mode or reject the corresponding Router
   Advertisement messages (possibly resulting in a denial of service).

4.  Rationale for Forbidding IPv6 Fragmentation in Neighbor Discovery

   A number of considerations should be made regarding the use of IPv6
   fragmentation with Neighbor Discovery:

   o  A significant number of existing implementations already silently
      drop fragmented ND messages, so the use of IPv6 fragmentation may
      hamper interoperability among IPv6 implementations.

   o  Although it is possible to build an ND message that needs to be
      fragmented, such packets are unlikely to exist in the real world
      because of the large number of options that would be required for
      the resulting packet to exceed the minimum IPv6 MTU of
      1280 octets.

   o  If an ND message was so large as to need fragmentation, there is
      an option to distribute the same information amongst more than one
      message, each of which is small enough to not need fragmentation.

   Thus, forbidding the use of IPv6 fragmentation with Neighbor
   Discovery normalizes existing behavior and sets the expectations of
   all implementations to the existing lowest common denominator.

5.  Specification

   Nodes MUST NOT employ IPv6 fragmentation for sending any of the
   following Neighbor Discovery and SEcure Neighbor Discovery messages:

   o  Neighbor Solicitation

   o  Neighbor Advertisement

   o  Router Solicitation

   o  Router Advertisement

   o  Redirect

   o  Certification Path Solicitation

   Nodes SHOULD NOT employ IPv6 fragmentation for sending the following
   messages (see Section 6.4.2 of [RFC3971]):

   o  Certification Path Advertisement
   Nodes MUST silently ignore the following Neighbor Discovery and
   SEcure Neighbor Discovery messages if the packets carrying them
   include an IPv6 Fragmentation Header:

   o  Neighbor Solicitation

   o  Neighbor Advertisement

   o  Router Solicitation

   o  Router Advertisement

   o  Redirect

   o  Certification Path Solicitation

   Nodes SHOULD normally process the following messages when the packets
   carrying them include an IPv6 Fragmentation Header:

   o  Certification Path Advertisement

   SEND nodes SHOULD NOT employ keys that would result in fragmented CPA
   messages.

6.  Operational Advice

   An operator detecting that Neighbor Discovery traffic is being
   silently dropped should find whether the corresponding Neighbor
   Discovery messages are employing IPv6 fragmentation.  If they are, it
   is likely that the devices receiving such packets are silently
   dropping them merely because they employ IPv6 fragmentation.  In such
   a case, an operator should check whether the sending device has an
   option to prevent fragmentation of ND messages, and/or see whether it
   is possible to reduce the options carried on such messages.  We note
   that solving this (unlikely) problem might require a software upgrade
   to a version that does not employ IPv6 fragmentation with Neighbor
   Discovery.

7.  Security Considerations

   The IPv6 Fragmentation Header can be leveraged to circumvent network
   monitoring tools and current implementations of mechanisms such as
   RA-Guard [RA-GUARD].  By updating the relevant specifications such
   that the IPv6 Fragment Header is not allowed in any Neighbor
   Discovery messages except Certification Path Advertisement messages,
   protection of local nodes against Neighbor Discovery attacks, as well
   as the monitoring of Neighbor Discovery traffic, are greatly
   simplified.

   As noted in Section 3, the use of SEND could potentially result in
   fragmented Certification Path Advertisement messages, thus allowing
   an attacker to employ IPv6 fragmentation-based attacks against such
   messages.  Therefore, to the extent that is possible, such use of
   fragmentation should be avoided.

8.  Acknowledgements

   The author would like to thank (in alphabetical order) Mikael
   Abrahamsson, Ran Atkinson, Ron Bonica, Jean-Michel Combes, David
   Farmer, Adrian Farrel, Stephen Farrell, Roque Gagliano, Brian
   Haberman, Bob Hinden, Philip Homburg, Ray Hunter, Arturo Servin, Mark
   Smith, and Martin Stiemerling for providing valuable comments on
   earlier versions of this document.

   The author would also like to thank Roque Gagliano for contributing
   the information regarding message sizes in Appendix A, and Arturo
   Servin for presenting this document at IETF 81.

   Finally, the author would like to thank his brother, friend, and
   colleague, Guillermo Gont, for his love and support.

   This document resulted from the project "Security Assessment of the
   Internet Protocol version 6 (IPv6)" [CPNI-IPv6], carried out by
   Fernando Gont on behalf of the UK Centre for the Protection of
   National Infrastructure (CPNI).

9.  References

9.1.  Normative References

   [RFC2119]   Bradner, S., "Key words for use in RFCs to Indicate
               Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC3971]   Arkko, J., Kempf, J., Zill, B., and P. Nikander, "SEcure
               Neighbor Discovery (SEND)", RFC 3971, March 2005.

   [RFC4861]   Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
               "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
               September 2007.

   [RFC6494]   Gagliano, R., Krishnan, S., and A. Kukec, "Certificate
               Profile and Certificate Management for SEcure Neighbor
               Discovery (SEND)", RFC 6494, February 2012.

9.2.  Informative References

   [CPNI-IPv6] Gont, F., "Security Assessment of the Internet Protocol
               version 6 (IPv6)", UK Centre for the Protection of
               National Infrastructure, (available on request).

   [Gont-DPSC] Gont, F., "Results of a Security Assessment of the
               Internet Protocol version 6 (IPv6)", DEEPSEC 2011
               Conference, Vienna, Austria, November 2011,
               <http://www.si6networks.com/presentations/deepsec2011/
               fgont-deepsec2011-ipv6-security.pdf>.

   [NDPMon]    SourceForge, "NDPMon - IPv6 Neighbor Discovery Protocol
               Monitor", July 2012, <http://ndpmon.sourceforge.net/>.

   [RA-GUARD]  Gont, F., "Implementation Advice for IPv6 Router
               Advertisement Guard (RA-Guard)", Work in Progress,
               November 2012.

   [ramond]    SourceForge, "ramond", January 2009,
               <http://ramond.sourceforge.net/>.

   [RFC3756]   Nikander, P., Kempf, J., and E. Nordmark, "IPv6 Neighbor
               Discovery (ND) Trust Models and Threats", RFC 3756,
               May 2004.

   [RFC6104]   Chown, T. and S. Venaas, "Rogue IPv6 Router Advertisement
               Problem Statement", RFC 6104, February 2011.

   [RFC6105]   Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and
               J. Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105,
               February 2011.

Appendix A.  Message Size When Carrying Certificates

   This section aims at estimating the size of normal Certification Path
   Advertisement messages.

   Considering a Certification Path Advertisement (CPA) such as that of
   Appendix C of [RFC3971] (certification path length of 4, between 1
   and 4 address prefix extensions, and a key length of 1024 bits), the
   certificate lengths range between 864 and 888 bytes (and the
   corresponding Ethernet packets from 1050 to 1066 bytes) [RFC3971].

   Updating the aforementioned packet size to account for the larger
   (2048 bits) keys required by [RFC6494] results in packet sizes
   ranging from 1127 to 1238 bytes, which are smaller than the minimum
   IPv6 MTU (1280 bytes) and much smaller than the ubiquitous Ethernet
   MTU (1500 bytes).

   However, we note that packet sizes may vary depending on a number of
   factors, including:

   o  the number of prefixes included in the certificate

   o  the length of Fully Qualified Domain Names (FQDNs) in Trust Anchor
      (TA) options [RFC3971] (if present)

   If larger key sizes (e.g., 4096 bits) are required in the future, a
   larger MTU size might be required to convey such information in
   Neighbor Discovery packets without the need to employ fragmentation.

Author's Address

   Fernando Gont
   SI6 Networks / UTN-FRH
   Evaristo Carriego 2644
   Haedo, Provincia de Buenos Aires  1706
   Argentina

   Phone: +54 11 4650 8472
   EMail: fgont@si6networks.com
   URI:   http://www.si6networks.com

AI ELI5

On this page
PROBLEMAttackers can hide Neighbor Discovery attacks by splitting packets into IPv6 fragments, which defeats filters such as RA-Guard and monitoring tools.
MECHANISMThe RFC forbids sending fragmented Neighbor Discovery messages and requires nodes to silently ignore those that arrive fragmented, with a softer rule for SEND Certification Path Advertisements.
WHY IT MATTERSIt updates RFC 4861 and RFC 3971. Filtering and monitoring Neighbor Discovery becomes much simpler, at the cost of ignoring a rarely needed capability.

§1The Fragmentation Problem

The Neighbor Discovery Protocol (NDP) of RFC 4861 is used by hosts and routers for functions such as router discovery, address autoconfiguration, address resolution and redirection. Attacks on it are described in RFC 3756. SEcure Neighbor Discovery (SEND) addresses them but is hard to deploy, so other mitigations are common: access control lists in switches, layer-2 filtering such as RA-Guard (RFC 6105), monitoring tools and intrusion prevention systems.

Fragmentation undermines all of these. An attacker can split the attack packet so that a layer-2 device cannot find the information it needs in a single packet. The RFC says current RA-Guard implementations can be trivially evaded this way, and that monitoring tools which try to reassemble fragments end up in an arms race with the attacker.

Guards check each note as it goes by. If a note is torn into pieces, no single piece looks bad, so the guards miss it.

§2Traditional Neighbor Discovery

The only plausible reason to fragment a traditional (non-SEND) Neighbor Discovery message is a Router Advertisement carrying a very large number of options, such as Prefix Information and Route Information options. That can be avoided by splitting the information into several Router Advertisements.

Doing so is also better for interoperability, because some implementations are known to silently ignore Router Advertisements that are fragmented. Avoiding fragmentation therefore simplifies and improves filtering and monitoring and prevents problems with implementations that do not support it.

If you have too much to say, write two short notes instead of tearing one long note in half.

§3SEND and Certification Paths

SEND packets carry more data, such as the Cryptographically Generated Address (CGA) option and the RSA signature option. For most SEND messages the answer is the same as for plain ND: split the information over several messages.

Certification Path Advertisement (CPA) messages are different, because the Certificate Option is much larger than other ND options. RFC 3971 reports CPA messages of 1050 to 1066 bytes on Ethernet, which could exceed the link MTU. Relying on fragmentation here opens SEND to attack. An attacker on the same broadcast domain could forge fragments that cause Fragment ID collisions, so that both the attack and the legitimate fragments are discarded. Authorization Delegation Discovery would then fail, and the host would either fall back to unsecured mode or reject the Router Advertisements, possibly leading to denial of service.

The secure version of the note includes a big ID card that sometimes will not fit in one envelope. A trickster can mess with the pieces so the ID card never gets put back together.

§4Rationale for Forbidding Fragmentation

The RFC gives three reasons. A significant number of implementations already silently drop fragmented ND messages, so fragmenting hurts interoperability. Such messages are unlikely to exist in practice, because exceeding the minimum IPv6 MTU of 1280 octets would take a large number of options. And any oversized message can be replaced by several smaller ones.

Forbidding fragmentation therefore normalizes existing behavior and sets every implementation's expectation to the lowest common denominator.

Most neighbors already throw away torn notes, and nobody really needs to send one, so making it a rule costs almost nothing.

§5The Specification

Nodes MUST NOT use IPv6 fragmentation to send Neighbor Solicitation, Neighbor Advertisement, Router Solicitation, Router Advertisement, Redirect or Certification Path Solicitation messages. They MUST silently ignore any of those that arrive in a packet with a Fragment Header.

Certification Path Advertisement is handled more gently: nodes SHOULD NOT fragment it and SHOULD normally process it if it arrives fragmented. SEND nodes SHOULD NOT use keys that would cause fragmented CPA messages.

This section formally updates RFC 4861 and gives advice that updates RFC 3971.

Do not tear these notes, and throw away any torn ones you get. The one big ID card note is allowed to arrive in pieces, but try not to need that.

FRAGMENT RULES BY MESSAGE (RFC 6980, SECTION 5)
MessageSending fragmentedReceiving fragmented
Neighbor SolicitationMUST NOTMUST silently ignore
Neighbor AdvertisementMUST NOTMUST silently ignore
Router SolicitationMUST NOTMUST silently ignore
Router AdvertisementMUST NOTMUST silently ignore
RedirectMUST NOTMUST silently ignore
Certification Path SolicitationMUST NOTMUST silently ignore
Certification Path AdvertisementSHOULD NOTSHOULD normally process

§6Operational Advice and Message Sizes

If an operator sees Neighbor Discovery traffic being silently dropped, the cause may be fragmentation. The operator should check whether the sender can be told not to fragment ND messages, or whether the options carried can be reduced. The RFC notes that a fix may need a software upgrade.

Appendix A estimates CPA sizes. With 1024-bit keys the certificates are 864 to 888 bytes and the Ethernet packets 1050 to 1066 bytes. With the 2048-bit keys required by RFC 6494, packets range from 1127 to 1238 bytes, below the minimum IPv6 MTU of 1280 bytes. Larger keys, for example 4096 bits, might need a larger MTU to avoid fragmentation.

If notes keep vanishing, check whether they are being torn up, and try shorter notes. The big ID card still fits in a normal envelope for now.

§7Security Considerations

The Fragment Header can be used to evade network monitoring tools and current RA-Guard implementations. Disallowing it in every Neighbor Discovery message except Certification Path Advertisement greatly simplifies both protecting local nodes and monitoring ND traffic.

Because SEND could still produce fragmented CPA messages, which an attacker can target with fragmentation-based attacks, the RFC says such use should be avoided as far as possible.

With no torn notes allowed, guards can read every note whole. The only exception is the big ID card, which should be avoided where possible.

§8References