rfc8021.txt | rfc8021-fgont_late-entry.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) F. Gont | Internet Engineering Task Force (IETF) F. Gont | |||
Request for Comments: 8021 SI6 Networks / UTN-FRH | Request for Comments: 7943 SI6 Networks / UTN-FRH | |||
Category: Informational W. Liu | Category: Informational W. Liu | |||
ISSN: 2070-1721 Huawei Technologies | ISSN: 2070-1721 Huawei Technologies | |||
T. Anderson | T. Anderson | |||
Redpill Linpro | Redpill Linpro | |||
November 2016 | November 2016 | |||
Generation of IPv6 Atomic Fragments Considered Harmful | Generation of IPv6 Atomic Fragments Considered Harmful | |||
Abstract | Abstract | |||
skipping to change at page 1, line 36 | skipping to change at page 1, line 36 | |||
This document is a product of the Internet Engineering Task Force | This document is a product of the Internet Engineering Task Force | |||
(IETF). It represents the consensus of the IETF community. It has | (IETF). It represents the consensus of the IETF community. It has | |||
received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
Internet Engineering Steering Group (IESG). Not all documents | Internet Engineering Steering Group (IESG). Not all documents | |||
approved by the IESG are a candidate for any level of Internet | approved by the IESG are a candidate for any level of Internet | |||
Standard; see Section 2 of RFC 7841. | Standard; see Section 2 of RFC 7841. | |||
Information about the current status of this document, any errata, | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | and how to provide feedback on it may be obtained at | |||
http://www.rfc-editor.org/info/rfc8021. | http://www.rfc-editor.org/info/rfc7943. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 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. Security Implications of the Generation of IPv6 Atomic | 2. Security Implications of the Generation of IPv6 Atomic | |||
Fragments .......................................................3 | Fragments . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Additional Considerations .......................................5 | 3. Additional Considerations . . . . . . . . . . . . . . . . . . 5 | |||
4. Conclusions .....................................................7 | 4. Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
5. Security Considerations .........................................8 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
6. References ......................................................8 | 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
6.1. Normative References ........................................8 | 6.1. Normative References . . . . . . . . . . . . . . . . . . 8 | |||
6.2. Informative References ......................................9 | 6.2. Informative References . . . . . . . . . . . . . . . . . 9 | |||
Acknowledgements ..................................................11 | Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
Authors' Addresses ................................................11 | 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 can | IPv6 packets to be fragmented into smaller pieces such that they can | |||
fit in the Path MTU to the intended destination(s). | fit in the Path MTU to the intended destination(s). | |||
A legacy IPv4/IPv6 translator implementing the Stateless IP/ICMP | A legacy IPv4/IPv6 translator implementing the Stateless IP/ICMP | |||
Translation Algorithm [RFC6145] may legitimately generate ICMPv6 | Translation Algorithm [RFC6145] may legitimately generate ICMPv6 | |||
"Packet Too Big" (PTB) error messages [RFC4443] advertising a | "Packet Too Big" (PTB) error messages [RFC4443] advertising an MTU | |||
"Next-Hop MTU" smaller than 1280 (the minimum IPv6 MTU). Section 5 | smaller than 1280 (the minimum IPv6 MTU). Section 5 of [RFC2460] | |||
of [RFC2460] states that, upon receiving such an ICMPv6 error | states that, upon receiving such an ICMPv6 error message, hosts are | |||
message, hosts are not required to reduce the assumed Path MTU but | not required to reduce the assumed Path MTU but must simply include a | |||
must simply include a Fragment Header in all subsequent packets sent | Fragment Header in all subsequent packets sent to that destination. | |||
to that destination. The resulting packets will thus *not* be | The resulting packets will thus *not* be actually fragmented into | |||
actually fragmented into several pieces; rather, they will be | several pieces; rather, they will be "atomic" fragments [RFC6946] | |||
"atomic" fragments [RFC6946] (i.e., they will just include a Fragment | (i.e., they will just include a Fragment Header with both the | |||
Header with both the "Fragment Offset" and the "M" flag set to 0). | "Fragment Offset" and the "M" flag set to 0). [RFC6946] requires | |||
[RFC6946] requires that these atomic fragments be essentially | that these atomic fragments be essentially processed by the | |||
processed by the destination host as non-fragmented traffic (since | destination host(s) as non-fragmented traffic (since there are not | |||
there are not really any fragments to be reassembled). The goal of | really any fragments to be reassembled). The goal of these atomic | |||
these atomic fragments is simply to convey an appropriate | fragments is simply to convey an appropriate Identification value to | |||
Identification value to be employed by IPv6/IPv4 translators for the | be employed by IPv6/IPv4 translators for the resulting IPv4 | |||
resulting IPv4 fragments. | 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 be leveraged for | in which the generation of IPv6 atomic fragments can be leveraged for | |||
performing a number of attacks against the corresponding IPv6 flows. | 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, for example, having | generating IPv6 atomic fragments (as opposed to, for example, having | |||
IPv6/IPv4 translators generate a Fragment Identification value | IPv6/IPv4 translators generate an IPv4 Identification value | |||
themselves), we conclude that this functionality is undesirable. | themselves), we conclude that this functionality is undesirable. | |||
Section 2 briefly discusses the security implications of the | Section 2 briefly discusses the security implications of the | |||
generation of IPv6 atomic fragments and describes a specific Denial- | generation of IPv6 atomic fragments and describes a specific Denial- | |||
of-Service (DoS) attack vector that leverages the widespread | of-Service (DoS) attack vector that leverages the widespread dropping | |||
filtering of IPv6 fragments in the public Internet. Section 3 | of IPv6 fragments in the public Internet. Section 3 provides | |||
provides additional considerations regarding the usefulness of | additional considerations regarding the usefulness of generating IPv6 | |||
generating IPv6 atomic fragments. | atomic fragments. | |||
2. Security Implications of the Generation of IPv6 Atomic Fragments | 2. Security Implications of the Generation of IPv6 Atomic Fragments | |||
The security implications of IP fragmentation have been discussed at | The security implications of IP fragmentation have been discussed at | |||
length in [RFC6274] and [RFC7739]. An attacker can leverage the | length in [RFC6274] and [RFC7739]. An attacker can leverage the | |||
generation of IPv6 atomic fragments to trigger the use of | generation of IPv6 atomic fragments to trigger the use of | |||
fragmentation in an arbitrary IPv6 flow (in scenarios in which actual | fragmentation in an arbitrary IPv6 flow (in scenarios in which actual | |||
fragmentation of packets is not needed) and can subsequently perform | fragmentation of packets is not needed) and can subsequently perform | |||
any type of fragmentation-based attack against legacy IPv6 nodes that | any type of fragmentation-based attack against legacy IPv6 nodes that | |||
do not implement [RFC6946]. That is, employing fragmentation where | do not implement [RFC6946]. That is, employing fragmentation where | |||
not actually needed allows for fragmentation-based attack vectors to | not actually needed allows for fragmentation-based attack vectors to | |||
be employed, unnecessarily. | be employed, unnecessarily. | |||
We note that, unfortunately, even nodes that already implement | We note that, unfortunately, even nodes that already implement | |||
[RFC6946] can be subject to DoS attacks as a result of the generation | [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 | of IPv6 atomic fragments. Let us assume that Client A is | |||
with Server B and that, as a result of the widespread dropping of | communicating with Server B and that, as a result of the widespread | |||
IPv6 packets that contain extension headers (including fragmentation) | dropping of IPv6 packets that contain extension headers (including | |||
[RFC7872], some intermediate node filters fragments between Server B | fragmentation) [RFC7872], some intermediate node filters fragments | |||
and Host A. If an attacker sends a forged ICMPv6 PTB error message | between Server B and Client A. If an attacker sends a forged ICMPv6 | |||
to Server B, reporting an MTU smaller than 1280, this will trigger | PTB error message to Server B, reporting an MTU smaller than 1280, | |||
the generation of IPv6 atomic fragments from that moment on (as | this will trigger the generation of IPv6 atomic fragments from that | |||
required by [RFC2460]). When Server B starts sending IPv6 atomic | moment on (as required by [RFC2460]). When Server B starts sending | |||
fragments (in response to the received ICMPv6 PTB error message), | IPv6 atomic fragments (in response to the received ICMPv6 PTB error | |||
these packets will be dropped, since we previously noted that IPv6 | message), these packets will be dropped, since we previously noted | |||
packets with extension headers were being dropped between Server B | that IPv6 packets with extension headers were being dropped between | |||
and Host A. Thus, this situation will result in a DoS scenario. | Server B and Client A. Thus, this situation will result in a 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 PTB error messages, an attacker could easily attack | received ICMPv6 PTB error messages, an attacker could easily attack | |||
the peering session by simply sending an ICMPv6 PTB message with a | the corresponding peering session by simply sending an ICMPv6 PTB | |||
reported MTU smaller than 1280 bytes. Once the attack packet has | message with a reported MTU smaller than 1280 bytes. Once the attack | |||
been sent, the aforementioned routers will themselves be the ones | packet has been sent, the aforementioned routers will themselves be | |||
dropping their own traffic. | the ones dropping their own traffic. | |||
The aforementioned attack vector is exacerbated by the following | The aforementioned attack vector is exacerbated by the following | |||
factors: | factors: | |||
o The attacker does not need to forge the IPv6 Source Address of his | o The attacker does not need to forge the IPv6 Source Address of his | |||
attack packets. Hence, deployment of simple filters in the style | attack packets. Hence, deployment of simple BCP38 filters does | |||
of BCP 38 not help as a countermeasure. | not help as a countermeasure. | |||
o Only the IPv6 addresses of the IPv6 packet embedded in the ICMPv6 | o Only the IPv6 addresses of the IPv6 packet embedded in the ICMPv6 | |||
payload need to be forged. While one could envision filtering | payload need to be forged. While one could envision filtering | |||
devices enforcing filters per BCP 38 on the ICMPv6 payload, the | devices enforcing BCP38-style filters on the ICMPv6 payload, the | |||
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 connectionless transport protocol (or some | been elicited by a connectionless transport protocol (or some | |||
other connectionless protocol being encapsulated in IPv6), it may | other connectionless 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 | |||
skipping to change at page 5, line 5 | skipping to change at page 4, line 44 | |||
TCP connections) with such a destination. | TCP connections) with such a destination. | |||
o As noted in Section 3, SIIT (the Stateless IP/ICMP Translation | o As noted in Section 3, SIIT (the Stateless IP/ICMP Translation | |||
Algorithm) [RFC6145], including derivative protocols such as | Algorithm) [RFC6145], including derivative protocols such as | |||
Stateful NAT64 (Network Address and Protocol Translation from IPv6 | Stateful NAT64 (Network Address and Protocol Translation from IPv6 | |||
Clients to IPv4 Servers) [RFC6146], was the only technology making | Clients to IPv4 Servers) [RFC6146], was the only technology making | |||
use of atomic fragments. Unfortunately, an IPv6 node cannot | use of atomic fragments. Unfortunately, an IPv6 node cannot | |||
easily limit its exposure to the aforementioned attack vector by | easily limit its exposure to the aforementioned attack vector by | |||
only generating IPv6 atomic fragments towards IPv4 destinations | only generating IPv6 atomic fragments towards IPv4 destinations | |||
behind a stateless translator. This is due to the fact that | behind a stateless translator. This is due to the fact that | |||
Section 3.3 of [RFC6052] encourages operators to use a | Section 3.3 of [RFC6052] encourages operators to use a Network- | |||
Network-Specific Prefix (NSP) that maps the IPv4 address space | Specific Prefix (NSP) that maps the IPv4 address space into IPv6. | |||
into IPv6. When an NSP is being used, IPv6 addresses representing | When an NSP is being used, IPv6 addresses representing IPv4 nodes | |||
IPv4 nodes (reached through a stateless translator) are | (reached through a stateless translator) are indistinguishable | |||
indistinguishable from native IPv6 addresses. | from native IPv6 addresses. | |||
3. Additional Considerations | 3. Additional Considerations | |||
Besides the security assessment provided in Section 2, it is | Besides the security assessment provided in Section 2, 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 | Relying on the generation of IPv6 atomic fragments implies a reliance | |||
reliance on: | on: | |||
1. ICMPv6 packets arriving from the translator to the IPv6 node | 1. ICMPv6 packets arriving from the translator to the destination | |||
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 | 4. The ability of the translator implementation to access the | |||
information conveyed by the IPv6 Fragment Header | information conveyed by the IPv6 Fragment Header | |||
5. The value extracted from the low-order 16 bits of the IPv6 | 5. The value extracted from the low-order 16 bits of the IPv6 | |||
fragment Identification resulting in an appropriate IPv4 | fragment Identification resulting in an appropriate IPv4 | |||
Identification value | Identification value | |||
Unfortunately, | Unfortunately, | |||
1. There exists a fair share of evidence of ICMPv6 PTB messages being | 1. There exists a fair share of evidence of ICMPv6 PTB error | |||
dropped on the public Internet (for instance, that is one of the | messages being dropped on the public Internet (for instance, that | |||
reasons for which Packetization Layer Path MTU Discovery (PLPMTUD) | is one of the reasons for which Packetization Layer Path MTU | |||
[RFC4821] was produced). Therefore, relying on such messages | Discovery (PLPMTUD) [RFC4821] was produced). Therefore, relying | |||
being successfully delivered will affect the robustness of the | on such messages being successfully delivered will affect the | |||
protocol that relies on them. | robustness of the protocol that relies on them. | |||
2. 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. Additionally, the | reporting an MTU smaller than 1280 bytes. Additionally, the | |||
results included in Section 6 of [RFC6145] note that 57% of the | results included in Section 6 of [RFC6145] note that 57% of the | |||
tested web servers failed to produce IPv6 atomic fragments in | tested web servers failed to produce IPv6 atomic fragments in | |||
response to ICMPv6 PTB messages reporting an MTU smaller than | response to ICMPv6 PTB messages reporting an MTU smaller than | |||
1280 bytes. Thus, any protocol relying on IPv6 atomic fragment | 1280 bytes. Thus, any protocol relying on IPv6 atomic fragment | |||
generation for proper functioning will have interoperability | generation for proper functioning will have interoperability | |||
problems with the aforementioned IPv6 stacks. | problems with the aforementioned IPv6 stacks. | |||
3. 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 dropping of IPv6 fragments in | |||
the public Internet [RFC7872], this would mean that the | the public Internet [RFC7872], this would mean that the | |||
(unnecessary) use of IPv6 fragmentation might result, | (unnecessary) use of IPv6 fragmentation might result, | |||
unnecessarily, in a DoS situation even in legitimate cases. | unnecessarily, in a DoS situation even in legitimate cases. | |||
4. The packet-handling API at the node where the translator is | 4. The packet-handling API at the node where the translator is | |||
running may obscure fragmentation-related information. In such | running may obscure fragmentation-related information. In such | |||
scenarios, the information conveyed by the Fragment Header may be | scenarios, the information conveyed by the Fragment Header may be | |||
unavailable to the translator. [JOOL] discusses a sample | unavailable to the translator. [JOOL] discusses a sample | |||
framework (Linux Netfilter) that hinders access to the information | framework (Linux Netfilter) that hinders access to the | |||
conveyed in IPv6 atomic fragments. | information conveyed in IPv6 fragments. | |||
5. While [RFC2460] requires that the IPv6 fragment Identification of | 5. While [RFC2460] requires that the IPv6 fragment Identification of | |||
a fragmented packet be different than that of any other fragmented | a fragmented packet be different than that of any other | |||
packet sent recently with the same Source Address and Destination | fragmented packet sent recently with the same Source Address and | |||
Address, there is no requirement on the low-order 16 bits of such | Destination Address, there is no requirement on the low-order 16 | |||
a value. Thus, there is no guarantee that IPv4 fragment | bits of such a value. Thus, there is no guarantee that IPv4 | |||
identification collisions will be avoided or reduced by employing | Identification collisions will be avoided or reduced by employing | |||
the low-order 16 bits of the IPv6 fragment Identification of a | the low-order 16 bits of the IPv6 fragment Identification of a | |||
packet sent by a source host. Besides, collisions might occur | packet sent by a source host. Besides, collisions might occur | |||
where two distinct IPv6 Destination Addresses are translated into | where two distinct IPv6 Destination Addresses are translated into | |||
the same IPv4 address, such that Identification values that might | the same IPv4 address, such that Identification values that might | |||
have been generated to be unique in the context of IPv6 end up | have been generated to be unique in the context of IPv6 end up | |||
colliding when used in the context of translated IPv4. | colliding when used in the context of translated IPv4. | |||
We note that SIIT essentially employs the Fragment Header of IPv6 | We note that SIIT essentially employs the Fragment Header of IPv6 | |||
atomic fragments to signal the translator how to set the | atomic fragments to signal the translator how to set the Don't | |||
Don't Fragment (DF) bit of IPv4 datagrams (the DF bit is cleared when | Fragment (DF) bit of IPv4 datagrams (the DF bit is cleared when the | |||
the IPv6 packet contains a Fragment Header and is otherwise set to 1 | IPv6 packet contains a Fragment Header and is otherwise set to 1 when | |||
when the IPv6 packet does not contain an IPv6 Fragment Header). | the IPv6 packet does not contain an IPv6 Fragment Header). | |||
Additionally, the translator will employ the low-order 16 bits of the | Additionally, the translator will employ the low-order 16 bits of the | |||
IPv6 Fragment Identification for setting the IPv4 Fragment | IPv6 fragment Identification for setting the IPv4 Identification. At | |||
Identification. At least in theory, this is expected to reduce the | least in theory, this is expected to reduce the IPv4 Identification | |||
IPv4 Identification collision rate in the following specific | collision rate in the following specific scenario: | |||
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 smaller | 2. The IPv4 node is located behind an IPv4 link with an MTU smaller | |||
than 1260 bytes. An IPv4 Path MTU of 1260 corresponds to an IPv6 | than 1260 bytes. An IPv4 Path MTU of 1260 corresponds to an IPv6 | |||
Path MTU of 1280, due to an optionless IPv4 header being 20 bytes | Path MTU of 1280, due to an optionless IPv4 header being 20 bytes | |||
shorter than the IPv6 header. | shorter than the IPv6 header. | |||
3. ECMP routing [RFC2992] with more than one translator is employed | 3. ECMP routing [RFC2992] with more than one translator is employed, | |||
(for example) for redundancy purposes. | for example, for 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 | |||
Identification on its own (rather than selecting the IPv4 | Identification on its own (rather than selecting the IPv4 | |||
Identification from the low-order 16 bits of the Fragment | Identification from the low-order 16 bits of the fragment | |||
Identification of IPv6 atomic fragments), this could possibly lead to | Identification of IPv6 atomic fragments), this could possibly lead to | |||
IPv4 Identification collisions. However, as noted above, the value | IPv4 Identification collisions. However, as noted above, the value | |||
extracted from the low-order 16 bits of the IPv6 fragment | extracted from the low-order 16 bits of the IPv6 fragment | |||
Identification might not result in an appropriate IPv4 | Identification might not result in an appropriate IPv4 | |||
Identification: for example, a number of implementations set the IPv6 | Identification: for example, a number of implementations set the IPv6 | |||
Fragment Identification according to the output of a Pseudorandom | fragment Identification according to the output of a Pseudorandom | |||
Number Generator (PRNG) (see Appendix B of [RFC7739]); hence, if the | Number Generator (PRNG) (see Appendix B of [RFC7739]); hence, if the | |||
translator only employs the low-order 16 bits of such a value, it is | translator only employs the low-order 16 bits of such a value, it is | |||
very unlikely that relying on the Fragment Identification of the IPv6 | very unlikely that relying on the fragment Identification of the IPv6 | |||
atomic fragment will result in a reduced IPv4 Identification | atomic fragment will result in a reduced IPv4 Identification | |||
collision rate (when compared to the case where the translator | collision rate (when compared to the case where the translator | |||
selects each IPv4 Identification on its own). Besides, because of | selects each IPv4 Identification on its own). Besides, because of | |||
the limited size of the IPv4 Identification field, it is nevertheless | the limited size of the IPv4 Identification field, it is nevertheless | |||
virtually impossible to guarantee uniqueness of the | virtually impossible to guarantee uniqueness of the IPv4 | |||
IPv4 Identification values without artificially limiting the data | Identification values without artificially limiting the data rate of | |||
rate of fragmented traffic [RFC6864] [RFC4963]. | fragmented traffic [RFC6864] [RFC4963]. | |||
[RFC6145] was the only "consumer" of IPv6 atomic fragments, and it | [RFC6145] was the only "consumer" of IPv6 atomic fragments, and it | |||
correctly and diligently noted (in its Section 6) the possible | correctly and diligently noted (in its Section 6) the possible | |||
interoperability problems of relying on IPv6 atomic fragments, | interoperability problems of relying on IPv6 atomic fragments, | |||
proposing a workaround that led to more robust behavior and | proposing a workaround that led to more robust behavior and | |||
simplified code. [RFC6145] has been obsoleted by [RFC7915], such | simplified code. [RFC6145] has been obsoleted by [RFC7915], such | |||
that SIIT does not rely on IPv6 atomic fragments. | that SIIT does not rely on IPv6 atomic fragments. | |||
4. Conclusions | 4. Conclusions | |||
Taking all of the above considerations into account, we recommend | Taking all of the above considerations into account, we recommend | |||
that IPv6 atomic fragments be deprecated. | that IPv6 atomic fragments be deprecated. | |||
In particular: | In particular: | |||
o IPv4/IPv6 translators should be updated to not generate ICMPv6 PTB | o IPv4/IPv6 translators should be updated to not generate ICMPv6 PTB | |||
errors containing a Path MTU value smaller than the minimum IPv6 | error messages containing an MTU value smaller than the minimum | |||
MTU of 1280 bytes. This will ensure that current IPv6 nodes will | IPv6 MTU of 1280 bytes. This will ensure that current IPv6 nodes | |||
never have a legitimate need to start generating IPv6 atomic | will never have a legitimate need to start generating IPv6 atomic | |||
fragments. | fragments. | |||
o The recommendation in the previous bullet ensures that there are | o The recommendation in the previous bullet ensures that there are | |||
no longer any valid reasons for ICMPv6 PTB errors containing a | no longer any valid reasons for ICMPv6 PTB error messages | |||
Path MTU value smaller than the minimum IPv6 MTU to exist. IPv6 | reporting an MTU value smaller than the minimum IPv6 MTU (1280 | |||
nodes should therefore be updated to ignore them as invalid. | bytes). IPv6 nodes should therefore be updated to ignore ICMPv6 | |||
PTB error messages reporting an MTU smaller than 1280 bytes as | ||||
invalid. | ||||
We note that these recommendations have been incorporated in | We note that these recommendations have been incorporated in | |||
[IPv6-PMTUD], [IPv6-Spec], and [RFC7915]. | [IPv6-PMTUD], [IPv6-Spec], and [RFC7915]. | |||
5. Security Considerations | 5. Security Considerations | |||
This document briefly discusses the security implications of the | This document briefly discusses the security implications of the | |||
generation of IPv6 atomic fragments and describes one specific DoS | generation of IPv6 atomic fragments and describes one specific DoS | |||
attack vector that leverages the widespread filtering of IPv6 | attack vector that leverages the widespread dropping of IPv6 | |||
fragments in the public Internet. It concludes that the generation | fragments in the public Internet. It concludes that the generation | |||
of IPv6 atomic fragments is an undesirable feature and documents the | of IPv6 atomic fragments is an undesirable feature and documents the | |||
motivation for removing this functionality from [IPv6-Spec]. | motivation for removing this functionality from [IPv6-Spec]. | |||
6. References | 6. References | |||
6.1. Normative References | 6.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, | |||
skipping to change at page 9, line 50 | skipping to change at page 9, line 50 | |||
February 2016, <http://www.rfc-editor.org/info/rfc7739>. | February 2016, <http://www.rfc-editor.org/info/rfc7739>. | |||
[RFC7872] Gont, F., Linkova, J., Chown, T., and W. Liu, | [RFC7872] Gont, F., Linkova, J., Chown, T., and W. Liu, | |||
"Observations on the Dropping of Packets with IPv6 | "Observations on the Dropping of Packets with IPv6 | |||
Extension Headers in the Real World", RFC 7872, | Extension Headers in the Real World", RFC 7872, | |||
DOI 10.17487/RFC7872, June 2016, | DOI 10.17487/RFC7872, June 2016, | |||
<http://www.rfc-editor.org/info/rfc7872>. | <http://www.rfc-editor.org/info/rfc7872>. | |||
[IPv6-Spec] | [IPv6-Spec] | |||
Deering, S. and R. Hinden, "Internet Protocol, Version 6 | Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
(IPv6) Specification", Work in Progress, | (IPv6) Specification", Work in Progress, draft-ietf-6man- | |||
draft-ietf-6man-rfc2460bis-07, October 2016. | rfc2460bis-07, October 2016. | |||
[IPv6-PMTUD] | [IPv6-PMTUD] | |||
McCann, J., Deering, S., Mogul, J., and R. Hinden, Ed., | McCann, J., Deering, S., Mogul, J., and R. Hinden, "Path | |||
"Path MTU Discovery for IP version 6", Work in Progress, | MTU Discovery for IP version 6", Work in Progress, draft- | |||
draft-ietf-6man-rfc1981bis-03, October 2016. | ietf-6man-rfc1981bis-03, October 2016. | |||
[Morbitzer] | ||||
Morbitzer, M., "TCP Idle Scans in IPv6", Master's Thesis. | ||||
Thesis number: 670. Department of Computing Science, | ||||
Radboud University Nijmegen. August 2013, | ||||
<http://www.ru.nl/publish/pages/769526/ | ||||
m_morbitzer_masterthesis.pdf>. | ||||
[JOOL] Leiva Popper, A., "nf_defrag_ipv4 and nf_defrag_ipv6", | [JOOL] Leiva Popper, A., "nf_defrag_ipv4 and nf_defrag_ipv6", | |||
April 2015, <https://github.com/NICMx/Jool/wiki/ | April 2015, <https://github.com/NICMx/Jool/wiki/ | |||
nf_defrag_ipv4-and-nf_defrag_ipv6#implementation-gotchas>. | nf_defrag_ipv4-and-nf_defrag_ipv6#implementation-gotchas>. | |||
Acknowledgements | Acknowledgements | |||
The authors would like to thank (in alphabetical order) Congxiao Bao, | The authors would like to thank (in alphabetical order) Congxiao Bao, | |||
Bob Briscoe, Carlos Jesus Bernardos Cano, Brian Carpenter, | Carlos Jesus Bernardos Cano, Bob Briscoe, Brian Carpenter, Tatuya | |||
Bob Hinden, Tatuya Jinmei, Alberto Leiva, Ted Lemon, Xing Li, | Jinmei, Bob Hinden, Alberto Leiva, Ted Lemon, Xing Li, Jeroen Massar, | |||
Jeroen Massar, Erik Nordmark, Qiong Sun, Joe Touch, Ole Troan, | Erik Nordmark, Joe Touch, Qiong Sun, Ole Troan, Tina Tsou, and Bernie | |||
Tina Tsou, and Bernie Volz for providing valuable comments on earlier | Volz, for providing valuable comments on earlier versions of this | |||
draft versions of this document. | document. | |||
Fernando Gont would like to thank Jan Zorz / Go6 Lab | Fernando Gont would like to thank Jan Zorz / Go6 Lab | |||
<http://go6lab.si/> and Jared Mauch / NTT America for providing | <http://go6lab.si/>, and Jared Mauch / NTT America, for providing | |||
access to systems and networks that were employed to produce some of | access to systems and networks that were employed to produce some of | |||
the tests that resulted in the publication of this document. | the tests that resulted in the publication of this document. | |||
Additionally, he would like to thank SixXS <https://www.sixxs.net> | Additionally, he would like to thank Ivan Arce and Diego Armando | |||
for providing IPv6 connectivity. | Maradona for their inspiration. | |||
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 | |||
Argentina | Argentina | |||
Phone: +54 11 4650 8472 | Phone: +54 11 4650 8472 | |||
Email: fgont@si6networks.com | Email: fgont@si6networks.com | |||
URI: http://www.si6networks.com | URI: http://www.si6networks.com | |||
Will(Shucheng) Liu | ||||
Will (Shucheng) Liu | ||||
Huawei Technologies | Huawei Technologies | |||
Bantian, Longgang District | Bantian, Longgang District | |||
Shenzhen 518129 | Shenzhen 518129 | |||
China | P.R. China | |||
Email: liushucheng@huawei.com | Email: liushucheng@huawei.com | |||
Tore Anderson | Tore Anderson | |||
Redpill Linpro | Redpill Linpro | |||
Vitaminveien 1A | Vitaminveien 1A | |||
Oslo 0485 | Oslo 0485 | |||
Norway | Norway | |||
Phone: +47 959 31 212 | Phone: +47 959 31 212 | |||
End of changes. 43 change blocks. | ||||
154 lines changed or deleted | 162 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |