draft-ietf-6man-deprecate-atomfrag-generation-04.txt | draft-ietf-6man-deprecate-atomfrag-generation-05.txt | |||
---|---|---|---|---|
IPv6 maintenance Working Group (6man) F. Gont | IPv6 maintenance Working Group (6man) F. Gont | |||
Internet-Draft SI6 Networks / UTN-FRH | Internet-Draft SI6 Networks / UTN-FRH | |||
Intended status: Informational W. Liu | Intended status: Informational W. Liu | |||
Expires: May 29, 2016 Huawei Technologies | Expires: July 23, 2016 Huawei Technologies | |||
T. Anderson | T. Anderson | |||
Redpill Linpro | Redpill Linpro | |||
November 26, 2015 | January 20, 2016 | |||
Deprecation of the Generation of IPv6 Atomic Fragments | Generation of IPv6 Atomic Fragments Considered Harmful | |||
draft-ietf-6man-deprecate-atomfrag-generation-04 | draft-ietf-6man-deprecate-atomfrag-generation-05 | |||
Abstract | Abstract | |||
RFC2460 requires that when a host receives an ICMPv6 "Packet Too Big" | RFC2460 requires that when a host receives an ICMPv6 "Packet Too Big" | |||
message reporting an MTU smaller than 1280 bytes, the host includes a | message reporting an MTU smaller than 1280 bytes, the host includes a | |||
Fragment Header in all subsequent packets sent to that destination, | Fragment Header in all subsequent packets sent to that destination, | |||
without reducing the assumed Path-MTU. The simplicity with which | without reducing the assumed Path-MTU. The simplicity with which | |||
ICMPv6 "Packet Too Big" messages can be forged, coupled with the | ICMPv6 "Packet Too Big" messages can be forged means that an attacker | |||
widespread filtering of IPv6 fragments, results in an attack vector | can leverage this functionality (the generation of IPv6 atomic | |||
that can be leveraged for Denial of Service purposes. This document | fragments) to trigger the use of fragmentation for any arbitrary IPv6 | |||
briefly discusses the aforementioned attack vector, and why the | flow, and subsequently perform any fragmentation-based attack. This | |||
aforementioned functionality is undesirable. | document discusses the security implications of the generation of | |||
IPv6 atomic fragments and a number of interoperability issues | ||||
associated with IPv6 atomic fragments, and concludes that the | ||||
aforementioned functionality is undesirable, thus documenting the | ||||
motivation for removing this functionality in the revision of the | ||||
core IPv6 protocol specification [I-D.ietf-6man-rfc2460bis]. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on May 29, 2016. | This Internet-Draft will expire on July 23, 2016. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Denial of Service (DoS) attack vector . . . . . . . . . . . . 3 | 3. Security Implications of the Generation of IPv6 Atomic | |||
4. Additional Considerations . . . . . . . . . . . . . . . . . . 4 | Fragments . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | 4. Additional Considerations . . . . . . . . . . . . . . . . . . 5 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 6 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | ||||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 7 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 7 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 7 | 8.2. Informative References . . . . . . . . . . . . . . . . . 8 | |||
Appendix A. Small Survey of OSes that Fail to Produce IPv6 | Appendix A. Small Survey of OSes that Fail to Produce IPv6 | |||
Atomic Fragments . . . . . . . . . . . . . . . . . . 8 | Atomic Fragments . . . . . . . . . . . . . . . . . . 9 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
1. Introduction | 1. Introduction | |||
[RFC2460] specifies the IPv6 fragmentation mechanism, which allows | [RFC2460] specifies the IPv6 fragmentation mechanism, which allows | |||
IPv6 packets to be fragmented into smaller pieces such that they fit | IPv6 packets to be fragmented into smaller pieces such that they can | |||
in the Path-MTU to the intended destination(s). | fit in the Path-MTU to the intended destination(s). | |||
Section 5 of [RFC2460] states that, when a host receives an ICMPv6 | Section 5 of [RFC2460] states that, when a host receives an ICMPv6 | |||
"Packet Too Big" message [RFC4443] advertising an MTU smaller than | "Packet Too Big" message [RFC4443] advertising an MTU smaller than | |||
1280 bytes (the minimum IPv6 MTU), the host is not required to reduce | 1280 bytes (the minimum IPv6 MTU), the host is not required to reduce | |||
the assumed Path-MTU, but must simply include a Fragment Header in | the assumed Path-MTU, but must simply include a Fragment Header in | |||
all subsequent packets sent to that destination. The resulting | all subsequent packets sent to that destination. The resulting | |||
packets will thus *not* be actually fragmented into several pieces, | packets will thus *not* be actually fragmented into several pieces, | |||
but rather just include a Fragment Header with both the "Fragment | but rather just include a Fragment Header with both the "Fragment | |||
Offset" and the "M" flag set to 0 (we refer to these packets as | Offset" and the "M" flag set to 0 (i.e., "atomic fragments" | |||
"atomic fragments"). As required by [RFC6946], these atomic | [RFC6946]). [RFC6946] requires that these atomic fragments be | |||
fragments are essentially processed by the destination host as non- | essentially processed by the destination host as non-fragmented | |||
fragmented traffic (since there are not really any fragments to be | traffic (since there are not really any fragments to be reassembled). | |||
reassembled). The goal of these atomic fragments has been to convey | The goal of these atomic fragments is simply to convey an appropriate | |||
an appropriate Fragment Identification value to be employed by IPv6/ | Identification value to be employed by IPv6/IPv4 translators for the | |||
IPv4 translators for the resulting IPv4 fragments. | resulting IPv4 fragments. | |||
While atomic fragments might seem rather benign, there are scenarios | While atomic fragments might seem rather benign, there are scenarios | |||
in which the generation of IPv6 atomic fragments can introduce an | in which the generation of IPv6 atomic fragments can be leveraged for | |||
attack vector that can be exploited for denial of service purposes. | performing a number of attacks against the corresponding IPv6 flows. | |||
Since there are concrete security implications arising from the | Since there are concrete security implications arising from the | |||
generation of IPv6 atomic fragments, and there is no real gain in | generation of IPv6 atomic fragments, and there is no real gain in | |||
generating IPv6 atomic fragments (as opposed to e.g. having IPv6/IPv4 | generating IPv6 atomic fragments (as opposed to e.g. having IPv6/IPv4 | |||
translators generate a Fragment Identification value themselves), we | translators generate a Fragment Identification value themselves), we | |||
conclude that this functionality is undesirable. | conclude that this functionality is undesirable. | |||
Section 3 describes some possible attack scenarios. Section 4 | Section 3 briefly discusses the security implications of the | |||
generation of IPv6 atomic fragments, and describes a specific Denial | ||||
of Service (DoS) attack vector that leverages the widespread | ||||
filtering of IPv6 fragments in the public Internet. Section 4 | ||||
provides additional considerations regarding the usefulness of | provides additional considerations regarding the usefulness of | |||
generating IPv6 atomic fragments. | generating IPv6 atomic fragments. | |||
2. Terminology | 2. Terminology | |||
IPv6 atomic fragments | IPv6 atomic fragments: | |||
IPv6 packets that contain a Fragment Header with the Fragment | IPv6 packets that contain a Fragment Header with the Fragment | |||
Offset set to 0 and the M flag set to 0 (as defined by [RFC6946]). | Offset set to 0 and the M flag set to 0 (as defined by [RFC6946]). | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
3. Denial of Service (DoS) attack vector | 3. Security Implications of the Generation of IPv6 Atomic Fragments | |||
Let us assume that Host A is communicating with Server B, and that, | The security implications of IP fragmentation have been discussed at | |||
as a result of the widespread filtering of IPv6 packets with | length in [RFC6274] and [I-D.ietf-6man-predictable-fragment-id]. An | |||
extension headers (including fragmentation) | attacker can leverage the generation of IPv6 atomic fragments to | |||
trigger the use of fragmentation in an arbitrary IPv6 flow and | ||||
subsequently perform any fragmentation-based attack against legacy | ||||
IPv6 nodes that do not implement [RFC6946]. | ||||
Unfortunately, even nodes that already implement [RFC6946] can be | ||||
subject to DoS attacks as a result of the generation of IPv6 atomic | ||||
fragments. Let us assume that Host A is communicating with Server B, | ||||
and that, as a result of the widespread dropping of IPv6 packets that | ||||
contain extension headers (including fragmentation) | ||||
[I-D.ietf-v6ops-ipv6-ehs-in-real-world], some intermediate node | [I-D.ietf-v6ops-ipv6-ehs-in-real-world], some intermediate node | |||
filters fragments between Host A and Server B. If an attacker sends | filters fragments between Host A and Server B. If an attacker sends | |||
a forged ICMPv6 "Packet Too Big" (PTB) error message to server B, | a forged ICMPv6 "Packet Too Big" (PTB) error message to server B, | |||
reporting an MTU smaller than 1280, this will trigger the generation | reporting an MTU smaller than 1280, this will trigger the generation | |||
of IPv6 atomic fragments from that moment on (as required by | of IPv6 atomic fragments from that moment on (as required by | |||
[RFC2460]). When server B starts sending IPv6 atomic fragments (in | [RFC2460]). When server B starts sending IPv6 atomic fragments (in | |||
response to the received ICMPv6 PTB), these packets will be dropped, | response to the received ICMPv6 PTB), these packets will be dropped, | |||
since we previously noted that packets with IPv6 EHs were being | since we previously noted that IPv6 packets with extension headers | |||
dropped between Host A and Server B. Thus, this situation will | were being dropped between Host A and Server B. Thus, this situation | |||
result in a Denial of Service (DoS) scenario. | will result in a Denial of Service (DoS) scenario. | |||
Another possible scenario is that in which two BGP peers are | Another possible scenario is that in which two BGP peers are | |||
employing IPv6 transport, and they implement Access Control Lists | employing IPv6 transport, and they implement Access Control Lists | |||
(ACLs) to drop IPv6 fragments (to avoid control-plane attacks). If | (ACLs) to drop IPv6 fragments (to avoid control-plane attacks). If | |||
the aforementioned BGP peers drop IPv6 fragments but still honor | the aforementioned BGP peers drop IPv6 fragments but still honor | |||
received ICMPv6 Packet Too Big error messages, an attacker could | received ICMPv6 Packet Too Big error messages, an attacker could | |||
easily attack the peering session by simply sending an ICMPv6 PTB | easily attack the peering session by simply sending an ICMPv6 PTB | |||
message with a reported MTU smaller than 1280 bytes. Once the attack | message with a reported MTU smaller than 1280 bytes. Once the attack | |||
packet has been sent, it will be the aforementioned routers | packet has been sent, it will be the aforementioned routers | |||
themselves the ones dropping their own traffic. | themselves the ones dropping their own traffic. | |||
skipping to change at page 4, line 22 | skipping to change at page 4, line 42 | |||
use of extension headers (by the attacker) could make this | use of extension headers (by the attacker) could make this | |||
difficult, if at all possible. | difficult, if at all possible. | |||
o Many implementations fail to perform validation checks on the | o Many implementations fail to perform validation checks on the | |||
received ICMPv6 error messages, as recommended in Section 5.2 of | received ICMPv6 error messages, as recommended in Section 5.2 of | |||
[RFC4443] and documented in [RFC5927]. It should be noted that in | [RFC4443] and documented in [RFC5927]. It should be noted that in | |||
some cases, such as when an ICMPv6 error message has (supposedly) | some cases, such as when an ICMPv6 error message has (supposedly) | |||
been elicited by a connection-less transport protocol (or some | been elicited by a connection-less transport protocol (or some | |||
other connection-less protocol being encapsulated in IPv6), it may | other connection-less protocol being encapsulated in IPv6), it may | |||
be virtually impossible to perform validation checks on the | be virtually impossible to perform validation checks on the | |||
received ICMPv6 error messages. And, because of IPv6 extension | received ICMPv6 error message. And, because of IPv6 extension | |||
headers, the ICMPv6 payload might not even contain any useful | headers, the ICMPv6 payload might not even contain any useful | |||
information on which to perform validation checks. | information on which to perform validation checks. | |||
o Upon receipt of one of the aforementioned ICMPv6 "Packet Too Big" | o Upon receipt of one of the aforementioned ICMPv6 "Packet Too Big" | |||
error messages, the Destination Cache [RFC4861] is usually updated | error messages, the Destination Cache [RFC4861] is usually updated | |||
to reflect that any subsequent packets to such destination should | to reflect that any subsequent packets to such destination should | |||
include a Fragment Header. This means that a single ICMPv6 | include a Fragment Header. This means that a single ICMPv6 | |||
"Packet Too Big" error message might affect multiple communication | "Packet Too Big" error message might affect multiple communication | |||
instances (e.g., TCP connections) with such destination. | instances (e.g., TCP connections) with such destination. | |||
o As noted in Section 4, SIIT [RFC6145] (including derivative | o As noted in Section 4, SIIT [RFC6145] (including derivative | |||
protocols such as Stateful NAT64 [RFC6146]) is the only technology | protocols such as Stateful NAT64 [RFC6146]) is the only technology | |||
which currently makes use of atomic fragments. Unfortunately, an | which currently makes use of atomic fragments. Unfortunately, an | |||
IPv6 node cannot easily limit its exposure to the aforementioned | IPv6 node cannot easily limit its exposure to the aforementioned | |||
attack vector by only generating IPv6 atomic fragments towards | attack vector by only generating IPv6 atomic fragments towards | |||
IPv4 destinations behind a stateless translator. This is due to | IPv4 destinations behind a stateless translator. This is due to | |||
the fact that Section 3.3 of RFC6052 [RFC6052] encourages | the fact that Section 3.3 of [RFC6052] encourages operators to use | |||
operators to use a Network-Specific Prefix (NSP) that maps the | a Network-Specific Prefix (NSP) that maps the IPv4 address space | |||
IPv4 address space into IPv6. When an NSP is being used, IPv6 | into IPv6. When an NSP is being used, IPv6 addresses representing | |||
addresses representing IPv4 nodes (reached through a stateless | IPv4 nodes (reached through a stateless translator) are | |||
translator) are indistinguishable from native IPv6 addresses. | indistinguishable from native IPv6 addresses. | |||
4. Additional Considerations | 4. Additional Considerations | |||
Besides the security assessment provided in Section 3, it is | Besides the security assessment provided in Section 3, it is | |||
interesting to evaluate the pros and cons of having an IPv6-to-IPv4 | interesting to evaluate the pros and cons of having an IPv6-to-IPv4 | |||
translating router rely on the generation of IPv6 atomic fragments. | translating router rely on the generation of IPv6 atomic fragments. | |||
Relying on the generation of IPv6 atomic fragments implies a reliance | Relying on the generation of IPv6 atomic fragments implies a reliance | |||
on: | on: | |||
1. ICMPv6 packets arriving from the translator to the IPv6 node | 1. ICMPv6 packets arriving from the translator to the IPv6 node | |||
2. The ability of the nodes receiving ICMPv6 PTB messages reporting | 2. The ability of the nodes receiving ICMPv6 PTB messages reporting | |||
an MTU smaller than 1280 bytes to actually produce atomic | an MTU smaller than 1280 bytes to actually produce atomic | |||
fragments | fragments | |||
3. Support for IPv6 fragmentation on the IPv6 side of the translator | 3. Support for IPv6 fragmentation on the IPv6 side of the translator | |||
4. The ability of the translator implementation to access the | ||||
information conveyed by the IPv6 Fragment Header | ||||
Unfortunately, | Unfortunately, | |||
o There exists a fair share of evidence of ICMPv6 Packet Too Big | 1. There exists a fair share of evidence of ICMPv6 Packet Too Big | |||
messages being dropped on the public Internet (for instance, that | messages being dropped on the public Internet (for instance, that | |||
is one of the reasons for which PLPMTUD [RFC4821] was produced). | is one of the reasons for which PLPMTUD [RFC4821] was produced). | |||
Therefore, relying on such messages being successfully delivered | Therefore, relying on such messages being successfully delivered | |||
will affect the robustness of the protocol that relies on them. | will affect the robustness of the protocol that relies on them. | |||
o A number of IPv6 implementations have been known to fail to | 2. A number of IPv6 implementations have been known to fail to | |||
generate IPv6 atomic fragments in response to ICMPv6 PTB messages | generate IPv6 atomic fragments in response to ICMPv6 PTB messages | |||
reporting an MTU smaller than 1280 bytes (see Appendix A for a | reporting an MTU smaller than 1280 bytes (see Appendix A for a | |||
small survey). Additionally, the results included in Section 6 of | small survey). Additionally, the results included in Section 6 | |||
[RFC6145] note that 57% of the tested web servers failed to | of [RFC6145] note that 57% of the tested web servers failed to | |||
produce IPv6 atomic fragments in response to ICMPv6 PTB messages | produce IPv6 atomic fragments in response to ICMPv6 PTB messages | |||
reporting an MTU smaller than 1280 bytes. Thus, any protocol | reporting an MTU smaller than 1280 bytes. Thus, any protocol | |||
relying on IPv6 atomic fragment generation for proper functioning | relying on IPv6 atomic fragment generation for proper functioning | |||
will have interoperability problems with the aforementioned IPv6 | will have interoperability problems with the aforementioned IPv6 | |||
stacks. | stacks. | |||
o IPv6 atomic fragment generation represents a case in which | 3. IPv6 atomic fragment generation represents a case in which | |||
fragmented traffic is produced where otherwise it would not be | fragmented traffic is produced where otherwise it would not be | |||
needed. Since there is widespread filtering of IPv6 fragments in | needed. Since there is widespread filtering of IPv6 fragments in | |||
the public Internet [I-D.ietf-v6ops-ipv6-ehs-in-real-world], this | the public Internet [I-D.ietf-v6ops-ipv6-ehs-in-real-world], this | |||
would mean that the (unnecessary) use of IPv6 fragmentation might | would mean that the (unnecessary) use of IPv6 fragmentation might | |||
result, unnecessarily, in a Denial of Service situation even in | result, unnecessarily, in a Denial of Service situation even in | |||
legitimate cases. | legitimate cases. | |||
Finally, we note that SIIT essentially employs the Fragment Header of | 4. The packet-handling API at the node where the translator is | |||
IPv6 atomic fragments to signal the translator how to set the DF bit | running may obscure fragmentation-related information. In such | |||
of IPv4 datagrams (the DF bit is cleared when the IPv6 packet | scenarios, the information conveyed by the Fragment Header may be | |||
contains a Fragment Header, and is otherwise set to 1 when the IPv6 | unavailable to the translator. [JOOL] discusses a sample | |||
packet does not contain an IPv6 Fragment Header). Additionally, the | framework (Linux Netfilter) that hinders access to the | |||
translator will employ the low-order 16-bits of the IPv6 Fragment | information conveyed in IPv6 atomic fragments. | |||
Identification for setting the IPv4 Fragment Identification. At | ||||
least in theory, this is expected to reduce the Fragment ID collision | We note that SIIT essentially employs the Fragment Header of IPv6 | |||
rate in the following specific scenario: | atomic fragments to signal the translator how to set the DF bit of | |||
IPv4 datagrams (the DF bit is cleared when the IPv6 packet contains a | ||||
Fragment Header, and is otherwise set to 1 when the IPv6 packet does | ||||
not contain an IPv6 Fragment Header). Additionally, the translator | ||||
will employ the low-order 16-bits of the IPv6 Fragment Identification | ||||
for setting the IPv4 Fragment Identification. At least in theory, | ||||
this is expected to reduce the IPv4 Identification collision rate in | ||||
the following specific scenario: | ||||
1. An IPv6 node communicates with an IPv4 node (through SIIT) | 1. An IPv6 node communicates with an IPv4 node (through SIIT) | |||
2. The IPv4 node is located behind an IPv4 link with an MTU < 1260 | 2. The IPv4 node is located behind an IPv4 link with an MTU smaller | |||
than 1260 bytes | ||||
3. ECMP routing [RFC2992] with more than one translator is employed | 3. ECMP routing [RFC2992] with more than one translator is employed | |||
for e.g., redundancy purposes | for e.g., redundancy purposes | |||
In such a scenario, if each translator were to select the IPv4 | In such a scenario, if each translator were to select the IPv4 | |||
Fragment Identification on its own (rather than selecting the IPv4 | Identification on its own (rather than selecting the IPv4 | |||
Fragment ID from the low-order 16-bits of the Fragment Identification | Identification from the low-order 16-bits of the Fragment | |||
of atomic fragments), this could possibly lead to IPv4 Fragment ID | Identification of IPv6 atomic fragments), this could possibly lead to | |||
collisions. However, since a number of implementations set IPv6 | IPv4 Identification collisions. However, since a number of | |||
Fragment ID according to the output of a Pseudo-Random Number | implementations set the IPv6 Fragment Identification according to the | |||
Generator (PRNG) (see Appendix B of | output of a Pseudo-Random Number Generator (PRNG) (see Appendix B of | |||
[I-D.ietf-6man-predictable-fragment-id]) and the translator only | [I-D.ietf-6man-predictable-fragment-id]) and the translator only | |||
employs the low-order 16-bits of such value, it is very unlikely that | employs the low-order 16-bits of such value, it is very unlikely that | |||
relying on the Fragment ID of the IPv6 atomic fragment will result in | relying on the Fragment Identification of the IPv6 atomic fragment | |||
a reduced Fragment ID collision rate (when compared to the case where | will result in a reduced IPv4 Identification collision rate (when | |||
the translator selects each IPv4 Fragment ID on its own). | compared to the case where the translator selects each IPv4 | |||
Identification on its own). | ||||
Finally, we note that [RFC6145] is currently the only "consumer" of | Finally, we note that [RFC6145] is currently the only "consumer" of | |||
IPv6 atomic fragments, and it correctly and diligently notes (in | IPv6 atomic fragments, and it correctly and diligently notes (in | |||
Section 6) the possible interoperability problems of relying on IPv6 | Section 6) the possible interoperability problems of relying on IPv6 | |||
atomic fragments, proposing as a workaround that leads to more robust | atomic fragments, proposing as a workaround that leads to more robust | |||
behavior and simplified code. | behavior and simplified code. | |||
5. IANA Considerations | 5. IANA Considerations | |||
There are no IANA registries within this document. The RFC-Editor | There are no IANA registries within this document. The RFC-Editor | |||
can remove this section before publication of this document as an | can remove this section before publication of this document as an | |||
RFC. | RFC. | |||
6. Security Considerations | 6. Security Considerations | |||
This document describes a Denial of Service (DoS) attack vector that | This document briefly discusses the security implications of the | |||
leverages the widespread filtering of IPv6 fragments in the public | generation of IPv6 atomic fragments, and describes a specific Denial | |||
Internet by means of ICMPv6 PTB error messages. It concludes that | of Service (DoS) attack vector that leverages the widespread | |||
the generation of IPv6 atomic fragments is an undesirable feature. | filtering of IPv6 fragments in the public Internet. It concludes | |||
that the generation of IPv6 atomic fragments is an undesirable | ||||
feature, and documents the motivation for removing this functionality | ||||
from [I-D.ietf-6man-rfc2460bis]. | ||||
7. Acknowledgements | 7. Acknowledgements | |||
The authors would like to thank (in alphabetical order) Alberto | The authors would like to thank (in alphabetical order) Congxiao Bao, | |||
Leiva, Bob Briscoe, Brian Carpenter, Tatuya Jinmei, Jeroen Massar, | Bob Briscoe, Brian Carpenter, Tatuya Jinmei, Bob Hinden, Alberto | |||
Erik Nordmark, and Ole Troan, for providing valuable comments on | Leiva, Xing Li, Jeroen Massar, Erik Nordmark, Qiong Sun, Ole Troan, | |||
earlier versions of this document. | and Tina Tsou, for providing valuable comments on earlier versions of | |||
this document. | ||||
Fernando Gont would like to thank Fernando Gont would like to thank | Fernando Gont would like to thank Jan Zorz / Go6 Lab | |||
Jan Zorz / Go6 Lab <http://go6lab.si/>, and Jared Mauch / NTT | <http://go6lab.si/>, and Jared Mauch / NTT America, for providing | |||
America, for providing access to systems and networks that were | access to systems and networks that were employed to produce some of | |||
employed to produce some of tests that resulted in the publication of | tests that resulted in the publication of this document. | |||
this document. Additionally, he would like to thank SixXS | Additionally, he would like to thank SixXS <https://www.sixxs.net> | |||
<https://www.sixxs.net> for providing IPv6 connectivity. | for providing IPv6 connectivity. | |||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
(IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | |||
December 1998, <http://www.rfc-editor.org/info/rfc2460>. | December 1998, <http://www.rfc-editor.org/info/rfc2460>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
skipping to change at page 8, line 15 | skipping to change at page 9, line 5 | |||
[RFC6052] Bao, C., Huitema, C., Bagnulo, M., Boucadair, M., and X. | [RFC6052] Bao, C., Huitema, C., Bagnulo, M., Boucadair, M., and X. | |||
Li, "IPv6 Addressing of IPv4/IPv6 Translators", RFC 6052, | Li, "IPv6 Addressing of IPv4/IPv6 Translators", RFC 6052, | |||
DOI 10.17487/RFC6052, October 2010, | DOI 10.17487/RFC6052, October 2010, | |||
<http://www.rfc-editor.org/info/rfc6052>. | <http://www.rfc-editor.org/info/rfc6052>. | |||
[RFC6146] Bagnulo, M., Matthews, P., and I. van Beijnum, "Stateful | [RFC6146] Bagnulo, M., Matthews, P., and I. van Beijnum, "Stateful | |||
NAT64: Network Address and Protocol Translation from IPv6 | NAT64: Network Address and Protocol Translation from IPv6 | |||
Clients to IPv4 Servers", RFC 6146, DOI 10.17487/RFC6146, | Clients to IPv4 Servers", RFC 6146, DOI 10.17487/RFC6146, | |||
April 2011, <http://www.rfc-editor.org/info/rfc6146>. | April 2011, <http://www.rfc-editor.org/info/rfc6146>. | |||
[RFC6274] Gont, F., "Security Assessment of the Internet Protocol | ||||
Version 4", RFC 6274, DOI 10.17487/RFC6274, July 2011, | ||||
<http://www.rfc-editor.org/info/rfc6274>. | ||||
[RFC6946] Gont, F., "Processing of IPv6 "Atomic" Fragments", | [RFC6946] Gont, F., "Processing of IPv6 "Atomic" Fragments", | |||
RFC 6946, DOI 10.17487/RFC6946, May 2013, | RFC 6946, DOI 10.17487/RFC6946, May 2013, | |||
<http://www.rfc-editor.org/info/rfc6946>. | <http://www.rfc-editor.org/info/rfc6946>. | |||
[I-D.ietf-6man-predictable-fragment-id] | [I-D.ietf-6man-predictable-fragment-id] | |||
Gont, F., "Security Implications of Predictable Fragment | Gont, F., "Security Implications of Predictable Fragment | |||
Identification Values", draft-ietf-6man-predictable- | Identification Values", draft-ietf-6man-predictable- | |||
fragment-id-10 (work in progress), October 2015. | fragment-id-10 (work in progress), October 2015. | |||
[I-D.ietf-v6ops-ipv6-ehs-in-real-world] | [I-D.ietf-v6ops-ipv6-ehs-in-real-world] | |||
Gont, F., Linkova, J., Chown, T., and S. LIU, | Gont, F., Linkova, J., Chown, T., and S. LIU, | |||
"Observations on the Dropping of Packets with IPv6 | "Observations on the Dropping of Packets with IPv6 | |||
Extension Headers in the Real World", draft-ietf-v6ops- | Extension Headers in the Real World", draft-ietf-v6ops- | |||
ipv6-ehs-in-real-world-01 (work in progress), October | ipv6-ehs-in-real-world-02 (work in progress), December | |||
2015. | 2015. | |||
[I-D.ietf-6man-rfc2460bis] | ||||
Deering, S. and B. Hinden, "Internet Protocol, Version 6 | ||||
(IPv6) Specification", draft-ietf-6man-rfc2460bis-02 (work | ||||
in progress), December 2015. | ||||
[Morbitzer] | [Morbitzer] | |||
Morbitzer, M., "TCP Idle Scans in IPv6", Master's Thesis. | Morbitzer, M., "TCP Idle Scans in IPv6", Master's Thesis. | |||
Thesis number: 670. Department of Computing Science, | Thesis number: 670. Department of Computing Science, | |||
Radboud University Nijmegen. August 2013, | Radboud University Nijmegen. August 2013, | |||
<https://www.ru.nl/publish/pages/578936/ | <http://www.ru.nl/publish/pages/769526/ | |||
m_morbitzer_masterthesis.pdf>. | m_morbitzer_masterthesis.pdf>. | |||
[JOOL] Leiva Popper, A., "nf_defrag_ipv4 and nf_defrag_ipv6", | ||||
April 2015, <https://github.com/NICMx/Jool/wiki/ | ||||
nf_defrag_ipv4-and-nf_defrag_ipv6#implementation-gotchas>. | ||||
Appendix A. Small Survey of OSes that Fail to Produce IPv6 Atomic | Appendix A. Small Survey of OSes that Fail to Produce IPv6 Atomic | |||
Fragments | Fragments | |||
[This section will probably be removed from this document before it | [This section will probably be removed from this document before it | |||
is published as an RFC]. | is published as an RFC]. | |||
This section includes a non-exhaustive list of operating systems that | This section includes a non-exhaustive list of operating systems that | |||
*fail* to produce IPv6 atomic fragments. It is based on the results | *fail* to produce IPv6 atomic fragments. It is based on the results | |||
published in [RFC6946] and [Morbitzer]. | published in [RFC6946] and [Morbitzer]. It is simply meant as a | |||
datapoint regarding the extent to which IPv6 implementations can be | ||||
relied upon to generate IPv6 atomic fragments. | ||||
The following Operating Systems fail to generate IPv6 atomic | The following Operating Systems fail to generate IPv6 atomic | |||
fragments in response to ICMPv6 PTB messages that report an MTU | fragments in response to ICMPv6 PTB messages that report an MTU | |||
smaller than 1280 bytes: | smaller than 1280 bytes: | |||
o FreeBSD 8.0 | o FreeBSD 8.0 | |||
o Linux kernel 2.6.32 | o Linux kernel 2.6.32 | |||
o Linux kernel 3.2 | o Linux kernel 3.2 | |||
o Linux kernel current | ||||
o Mac OS X 10.6.7 | o Mac OS X 10.6.7 | |||
o NetBSD 5.1 | o NetBSD 5.1 | |||
Authors' Addresses | Authors' Addresses | |||
Fernando Gont | Fernando Gont | |||
SI6 Networks / UTN-FRH | SI6 Networks / UTN-FRH | |||
Evaristo Carriego 2644 | Evaristo Carriego 2644 | |||
Haedo, Provincia de Buenos Aires 1706 | Haedo, Provincia de Buenos Aires 1706 | |||
End of changes. 38 change blocks. | ||||
104 lines changed or deleted | 156 lines changed or added | |||
This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |