diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc9414.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc9414.txt')
-rw-r--r-- | doc/rfc/rfc9414.txt | 1613 |
1 files changed, 1613 insertions, 0 deletions
diff --git a/doc/rfc/rfc9414.txt b/doc/rfc/rfc9414.txt new file mode 100644 index 0000000..b6aaf86 --- /dev/null +++ b/doc/rfc/rfc9414.txt @@ -0,0 +1,1613 @@ + + + + +Internet Research Task Force (IRTF) F. Gont +Request for Comments: 9414 SI6 Networks +Category: Informational I. Arce +ISSN: 2070-1721 Quarkslab + July 2023 + + + Unfortunate History of Transient Numeric Identifiers + +Abstract + + This document analyzes the timeline of the specification and + implementation of different types of "transient numeric identifiers" + used in IETF protocols and how the security and privacy properties of + such protocols have been affected as a result of it. It provides + empirical evidence that advice in this area is warranted. This + document is a product of the Privacy Enhancements and Assessments + Research Group (PEARG) in the IRTF. + +Status of This Memo + + This document is not an Internet Standards Track specification; it is + published for informational purposes. + + This document is a product of the Internet Research Task Force + (IRTF). The IRTF publishes the results of Internet-related research + and development activities. These results might not be suitable for + deployment. This RFC represents the consensus of the Privacy + Enhancements and Assessments Research Group of the Internet Research + Task Force (IRTF). Documents approved for publication by the IRSG + are not candidates for any level of Internet Standard; see Section 2 + of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc9414. + +Copyright Notice + + Copyright (c) 2023 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 + (https://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. + +Table of Contents + + 1. Introduction + 2. Terminology + 3. Threat Model + 4. Issues with the Specification of Transient Numeric Identifiers + 4.1. IPv4/IPv6 Identification + 4.2. TCP Initial Sequence Numbers (ISNs) + 4.3. IPv6 Interface Identifiers (IIDs) + 4.4. NTP Reference IDs (REFIDs) + 4.5. Transport-Protocol Ephemeral Port Numbers + 4.6. DNS ID + 5. Conclusions + 6. IANA Considerations + 7. Security Considerations + 8. References + 8.1. Normative References + 8.2. Informative References + Acknowledgements + Authors' Addresses + +1. Introduction + + Networking protocols employ a variety of transient numeric + identifiers for different protocol objects, such as IPv4 and IPv6 + Identification values [RFC0791] [RFC8200], IPv6 Interface Identifiers + (IIDs) [RFC4291], transport-protocol ephemeral port numbers + [RFC6056], TCP Initial Sequence Numbers (ISNs) [RFC9293], NTP + Reference IDs (REFIDs) [RFC5905], and DNS IDs [RFC1035]. These + identifiers typically have specific requirements (e.g., uniqueness + during a specified period of time) that must be satisfied such that + they do not result in negative interoperability implications and an + associated failure severity when such requirements are not met + [RFC9415]. + + | NOTE: Some documents refer to the DNS ID as the DNS "Query ID" + | or "TxID". + + For more than 30 years, a large number of implementations of IETF + protocols have been subject to a variety of attacks, with effects + ranging from Denial of Service (DoS) or data injection to information + leakages that could be exploited for pervasive monitoring [RFC7258]. + The root cause of these issues has been, in many cases, the poor + selection of transient numeric identifiers in such protocols, usually + as a result of insufficient or misleading specifications. While it + is generally trivial to identify an algorithm that can satisfy the + interoperability requirements of a given transient numeric + identifier, empirical evidence exists that doing so without + negatively affecting the security and/or privacy properties of the + aforementioned protocols is prone to error. + + For example, implementations have been subject to security and/or + privacy issues resulting from: + + * predictable IPv4 or IPv6 Identification values (e.g., see + [Sanfilippo1998a], [RFC6274], and [RFC7739]), + + * predictable IPv6 IIDs (e.g., see [RFC7217], [RFC7707], and + [RFC7721]), + + * predictable transport-protocol ephemeral port numbers (e.g., see + [RFC6056] and [Silbersack2005]), + + * predictable TCP Initial Sequence Numbers (ISNs) (e.g., see + [Morris1985], [Bellovin1989], and [RFC6528]), + + * predictable initial timestamps in TCP timestamps options (e.g., + see [TCPT-uptime] and [RFC7323]), and + + * predictable DNS IDs (see, e.g., [Schuba1993] and [Klein2007]). + + Recent history indicates that, when new protocols are standardized or + new protocol implementations are produced, the security and privacy + properties of the associated transient numeric identifiers tend to be + overlooked, and inappropriate algorithms to generate such identifiers + are either suggested in the specifications or selected by + implementers. As a result, advice in this area is warranted. + + This document contains a non-exhaustive timeline of the specification + and vulnerability disclosures related to some sample transient + numeric identifiers, including other work that has led to advances in + this area. This analysis indicates that: + + * vulnerabilities associated with the inappropriate generation of + transient numeric identifiers have affected protocol + implementations for an extremely long period of time, + + * such vulnerabilities, even when addressed for a given protocol + version, were later reintroduced in new versions or new + implementations of the same protocol, and + + * standardization efforts that discuss and provide advice in this + area can have a positive effect on IETF specifications and their + corresponding implementations. + + While it is generally possible to identify an algorithm that can + satisfy the interoperability requirements for a given transient + numeric identifier, this document provides empirical evidence that + doing so without negatively affecting the security and/or privacy + properties of the corresponding protocols is nontrivial. Other + related documents ([RFC9415] and [RFC9416]) provide guidance in this + area, as motivated by the present document. + + This document represents the consensus of the Privacy Enhancements + and Assessments Research Group (PEARG). + +2. Terminology + + Transient Numeric Identifier: + A data object in a protocol specification that can be used to + definitely distinguish a protocol object (a datagram, network + interface, transport-protocol endpoint, session, etc.) from all + other objects of the same type, in a given context. Transient + numeric identifiers are usually defined as a series of bits and + represented using integer values. These identifiers are typically + dynamically selected, as opposed to statically assigned numeric + identifiers (e.g., see [IANA-PROT]). We note that different + transient numeric identifiers may have additional requirements or + properties depending on their specific use in a protocol. We use + the term "transient numeric identifier" (or simply "numeric + identifier" or "identifier" as short forms) as a generic term to + refer to any data object in a protocol specification that + satisfies the identification property stated above. + + The terms "constant IID", "stable IID", and "temporary IID" are to be + interpreted as defined in [RFC7721]. + +3. Threat Model + + Throughout this document, we do not consider on-path attacks. That + is, we assume the attacker does not have physical or logical access + to the system(s) being attacked and that the attacker can only + observe traffic explicitly directed to the attacker. Similarly, an + attacker cannot observe traffic transferred between the sender and + the receiver(s) of a target protocol but may be able to interact with + any of these entities, including by, e.g., sending any traffic to + them to sample transient numeric identifiers employed by the target + hosts when communicating with the attacker. + + For example, when analyzing vulnerabilities associated with TCP + Initial Sequence Numbers (ISNs), we consider the attacker is unable + to capture network traffic corresponding to a TCP connection between + two other hosts. However, we consider the attacker is able to + communicate with any of these hosts (e.g., establish a TCP connection + with any of them) to, e.g., sample the TCP ISNs employed by these + hosts when communicating with the attacker. + + Similarly, when considering host-tracking attacks based on IPv6 + Interface Identifiers, we consider an attacker may learn the IPv6 + address employed by a victim host if, e.g., the address becomes + exposed as a result of the victim host communicating with an + attacker-operated server. Subsequently, an attacker may perform + host-tracking by probing a set of target addresses composed by a set + of target prefixes and the IPv6 Interface Identifier originally + learned by the attacker. Alternatively, an attacker may perform + host-tracking if, e.g., the victim host communicates with an + attacker-operated server as it moves from one location to another, + thereby exposing its configured addresses. We note that none of + these scenarios require the attacker observe traffic not explicitly + directed to the attacker. + +4. Issues with the Specification of Transient Numeric Identifiers + + While assessing IETF protocol specifications regarding the use of + transient numeric identifiers, we have found that most of the issues + discussed in this document arise as a result of one of the following + conditions: + + * protocol specifications that under specify their transient numeric + identifiers + + * protocol specifications that over specify their transient numeric + identifiers + + * protocol implementations that simply fail to comply with the + specified requirements + + A number of IETF protocol specifications under specified their + transient numeric identifiers, thus leading to implementations that + were vulnerable to numerous off-path attacks. Examples of them are + the specification of TCP local ports in [RFC0793] or the + specification of the DNS ID in [RFC1035]. + + | NOTE: The TCP local port in an active OPEN request is commonly + | known as the "ephemeral port" of the corresponding TCP + | connection [RFC6056]. + + On the other hand, there are a number of IETF protocol specifications + that over specify some of their associated transient numeric + identifiers. For example, [RFC4291] essentially overloads the + semantics of IPv6 Interface Identifiers (IIDs) by embedding link- + layer addresses in the IPv6 IIDs when the interoperability + requirement of uniqueness could be achieved in other ways that do not + result in negative security and privacy implications [RFC7721]. + Similarly, [RFC2460] suggests the use of a global counter for the + generation of Identification values when the interoperability + requirement of uniqueness per {IPv6 Source Address, IPv6 Destination + Address} could be achieved with other algorithms that do not result + in negative security and privacy implications [RFC7739]. + + Finally, there are protocol implementations that simply fail to + comply with existing protocol specifications. For example, some + popular operating systems still fail to implement transport-protocol + ephemeral port randomization, as recommended in [RFC6056], or TCP + Initial Sequence Number randomization, as recommended in [RFC9293]. + + The following subsections document the timelines for a number of + sample transient numeric identifiers that illustrate how the problem + discussed in this document has affected protocols from different + layers over time. These sample transient numeric identifiers have + different interoperability requirements and failure severities (see + Section 6 of [RFC9415]), and thus are considered to be representative + of the problem being analyzed in this document. + +4.1. IPv4/IPv6 Identification + + This section presents the timeline of the Identification field + employed by IPv4 (in the base header) and IPv6 (in Fragment Headers). + The reason for presenting both cases in the same section is to make + it evident that, while the Identification value serves the same + purpose in both protocols, the work and research done for the IPv4 + case did not influence IPv6 specifications or implementations. + + The IPv4 Identification is specified in [RFC0791], which specifies + the interoperability requirements for the Identification field, i.e., + the sender must choose the Identification field to be unique for a + given {Source Address, Destination Address, Protocol} for the time + the datagram (or any fragment of it) could be alive in the Internet. + It suggests that a sending protocol module may keep "a table of + Identifiers, one entry for each destination it has communicated with + in the last maximum packet lifetime for the [I]nternet", and it also + suggests that "since the Identifier field allows 65,536 different + values, hosts may be able to simply use unique identifiers + independent of destination". The above has been interpreted numerous + times as a suggestion to employ per-destination or global counters + for the generation of Identification values. While [RFC0791] does + not suggest any flawed algorithm for the generation of Identification + values, the specification omits a discussion of the security and + privacy implications of predictable Identification values. This + resulted in many IPv4 implementations generating predictable + Identification values by means of a global counter, at least at some + point in time. + + The IPv6 Identification was originally specified in [RFC1883]. It + serves the same purpose as its IPv4 counterpart, but rather than + being part of the base header (as in the IPv4 case), it is part of + the Fragment Header (which may or may not be present in an IPv6 + packet). Section 4.5 of [RFC1883] states that the Identification + must be different than that of any other fragmented packet sent + recently (within the maximum likely lifetime of a packet) with the + same Source Address and Destination Address. Subsequently, it notes + that this requirement can be met by means of a wrap-around 32-bit + counter that is incremented each time a packet must be fragmented and + that it is an implementation choice whether to use a global or a per- + destination counter. Thus, the specification of the IPv6 + Identification is similar to that of the IPv4 case, with the only + difference that, in the IPv6 case, the suggestions to use simple + counters is more explicit. [RFC2460] is the first revision of the + core IPv6 specification and maintains the same text for the + specification of the IPv6 Identification field. [RFC8200], the + second revision of the core IPv6 specification, removes the + suggestion from [RFC2460] to use a counter for the generation of IPv6 + Identification values and points to [RFC7739] for sample algorithms + for their generation. + + September 1981: + [RFC0791] specifies the interoperability requirements for the IPv4 + Identification but does not perform a vulnerability assessment of + this transient numeric identifier. + + December 1995: + [RFC1883], the first specification of the IPv6 protocol, is + published. It suggests that a counter be used to generate the + IPv6 Identification values and notes that it is an implementation + choice whether to maintain a single counter for the node or + multiple counters (e.g., one for each of the node's possible + Source Addresses, or one for each active {Source Address, + Destination Address} set). + + December 1998: + [Sanfilippo1998a] finds that predictable IPv4 Identification + values (as generated by most popular implementations) can be + leveraged to count the number of packets sent by a target node. + [Sanfilippo1998b] explains how to leverage the same vulnerability + to implement a port-scanning technique known as "idle scan". A + tool that implements this attack is publicly released. + + December 1998: + [RFC2460], a revision of the IPv6 specification, is published, + obsoleting [RFC1883]. It maintains the same specification of the + IPv6 Identification field as its predecessor [RFC1883]. + + December 1998: + OpenBSD implements randomization of the IPv4 Identification field + [OpenBSD-IPv4-ID]. + + November 1999: + [Sanfilippo1999] discusses how to leverage predictable IPv4 + Identification values to uncover the rules of a number of + firewalls. + + September 2002: + [Fyodor2002] documents the implementation of the "idle scan" + technique in the popular Network Mapper (nmap) tool. + + November 2002: + [Bellovin2002] explains how the IPv4 Identification field can be + exploited to count the number of systems behind a NAT. + + October 2003: + OpenBSD implements randomization of the IPv6 Identification field + [OpenBSD-IPv6-ID]. + + December 2003: + [Zalewski2003] explains a technique to perform TCP data injection + attacks based on predictable IPv4 Identification values, which + requires less effort than TCP injection attacks performed with + bare TCP packets. + + January 2005: + [Silbersack2005] discusses shortcomings in a number of techniques + to mitigate predictable IPv4 Identification values. + + October 2007: + [Klein2007] describes a weakness in the pseudorandom number + generator (PRNG) in use for the generation of IP Identification + values by a number of operating systems. + + June 2011: + [Gont2011] describes how to perform idle scan attacks in IPv6. + + November 2011: + Linux mitigates predictable IPv6 Identification values + [RedHat2011] [SUSE2011] [Ubuntu2011]. + + December 2011: + [draft-gont-6man-predictable-fragment-id-00] describes the + security implications of predictable IPv6 Identification values + and possible mitigations. This document has the intended status + of "Standards Track", with the intention to formally update + [RFC2460] to introduce security and privacy requirements on the + generation of IPv6 Identification values. + + May 2012: + [Gont2012] notes that some major IPv6 implementations still employ + predictable IPv6 Identification values. + + March 2013: + The 6man WG adopts [draft-gont-6man-predictable-fragment-id-03] + but changes the track to "BCP" (while still formally updating + [RFC2460]), posting the resulting document as + [draft-ietf-6man-predictable-fragment-id-00]. + + June 2013: + A patch to incorporate support for IPv6-based idle scans in nmap + is submitted [Morbitzer2013]. + + December 2014: + The 6man WG changes the intended status of + [draft-ietf-6man-predictable-fragment-id-01] to "Informational" + and posts it as [draft-ietf-6man-predictable-fragment-id-02]. As + a result, it no longer formally updates [RFC2460], and security + and privacy requirements on the generation of IPv6 Identification + values are eliminated. + + June 2015: + [draft-ietf-6man-predictable-fragment-id-08] notes that some + popular host and router implementations still employ predictable + IPv6 Identification values. + + February 2016: + [RFC7739] (based on [draft-ietf-6man-predictable-fragment-id-10]) + analyzes the security and privacy implications of predictable IPv6 + Identification values and provides guidance for selecting an + algorithm to generate such values. However, being published as an + "Informational" RFC, it does not formally update [RFC2460] and + does not introduce security and privacy requirements on the + generation of IPv6 Identification values. + + June 2016: + [draft-ietf-6man-rfc2460bis-05], a draft revision of [RFC2460], + removes the suggestion from [RFC2460] to use a counter for the + generation of IPv6 Identification values but does not perform a + vulnerability assessment of the generation of IPv6 Identification + values and does not introduce security and privacy requirements on + the generation of IPv6 Identification values. + + July 2017: + [draft-ietf-6man-rfc2460bis-13] is finally published as [RFC8200], + obsoleting [RFC2460] and pointing to [RFC7739] for sample + algorithms for the generation of IPv6 Identification values. + However, it does not introduce security and privacy requirements + on the generation of IPv6 Identification values. + + October 2019: + [IPID-DEV] notes that the IPv6 Identification generators of two + popular operating systems are flawed. + +4.2. TCP Initial Sequence Numbers (ISNs) + + [RFC0793] suggests that the choice of the ISN of a connection is not + arbitrary but aims to reduce the chances of a stale segment from + being accepted by a new incarnation of a previous connection. + [RFC0793] suggests the use of a global 32-bit ISN generator that is + incremented by 1 roughly every 4 microseconds. However, as a matter + of fact, protection against stale segments from a previous + incarnation of the connection is enforced by preventing the creation + of a new incarnation of a previous connection before 2*MSL has passed + since a segment corresponding to the old incarnation was last seen + (where "MSL" is the "Maximum Segment Lifetime" [RFC0793]). This is + accomplished by the TIME-WAIT state and TCP's "quiet time" concept + (see Appendix B of [RFC1323]). Based on the assumption that ISNs are + monotonically increasing across connections, many stacks (e.g., + 4.2BSD-derived) use the ISN of an incoming SYN segment to perform + "heuristics" that enable the creation of a new incarnation of a + connection while the previous incarnation is still in the TIME-WAIT + state (see p. 945 of [Wright1994]). This avoids an interoperability + problem that may arise when a node establishes connections to a + specific TCP end-point at a high rate [Silbersack2005]. + + The interoperability requirements for TCP ISNs are probably not as + clearly spelled out as one would expect. Furthermore, the suggestion + of employing a global counter in [RFC0793] negatively affects the + security and privacy properties of the protocol. + + September 1981: + [RFC0793] suggests the use of a global 32-bit ISN generator, whose + lower bit is incremented roughly every 4 microseconds. However, + such an ISN generator makes it trivial to predict the ISN that a + TCP implementation will use for new connections, thus allowing a + variety of attacks against TCP. + + February 1985: + [Morris1985] is the first to describe how to exploit predictable + TCP ISNs for forging TCP connections that could then be leveraged + for trust relationship exploitation. + + April 1989: + [Bellovin1989] discusses the security considerations for + predictable ISNs (along with a range of other protocol-based + vulnerabilities). + + January 1995: + [Shimomura1995] reports a real-world exploitation of the + vulnerability described in [Morris1985] ten years before (in + 1985). + + May 1996: + [RFC1948] is the first IETF effort, authored by Steven Bellovin, + to address predictable TCP ISNs. However, [RFC1948] does not + formally update [RFC0793]. Note: The same concept specified in + this document for TCP ISNs was later proposed for TCP ephemeral + ports [RFC6056], TCP Timestamps, and eventually even IPv6 + Interface Identifiers [RFC7217]. + + July 1996: + OpenBSD implements TCP ISN randomization based on random + increments (please see Appendix A.2 of [RFC9415]) + [OpenBSD-TCP-ISN-I]. + + December 2000: + OpenBSD implements TCP ISN randomization using simple + randomization (please see Section 7.1 of [RFC9415]) + [OpenBSD-TCP-ISN-R]. + + March 2001: + [Zalewski2001] provides a detailed analysis of statistical + weaknesses in some TCP ISN generators and includes a survey of the + algorithms in use by popular TCP implementations. Vulnerability + advisories [USCERT2001] were released regarding statistical + weaknesses in some TCP ISN generators, affecting popular TCP + implementations. Other vulnerability advisories on the same + vulnerability, such as [CERT2001], were published later on. + + March 2002: + [Zalewski2002] updates and complements [Zalewski2001]. It + concludes that "while some vendors [...] reacted promptly and + tested their solutions properly, many still either ignored the + issue and never evaluated their implementations, or implemented a + flawed solution that apparently was not tested using a known + approach" [Zalewski2002]. + + June 2007: + OpenBSD implements TCP ISN randomization based on the algorithm + specified in [RFC1948] (currently obsoleted and replaced by + [RFC6528]) for the TCP endpoint that performs the active open + while keeping the simple randomization scheme for the endpoint + performing the passive open [OpenBSD-TCP-ISN-H]. This provides + monotonically increasing ISNs for the "client side" (allowing the + BSD heuristics to work as expected) while avoiding any patterns in + the ISN generation for the "server side". + + February 2012: + [RFC6528], published 27 years after Morris's original work + [Morris1985], formally updates [RFC0793] to mitigate predictable + TCP ISNs. + + August 2014: + The algorithm specified in [RFC6528] becomes the recommended + ("SHOULD") algorithm for TCP ISN generation in + [draft-eddy-rfc793bis-04], an early revision of the core TCP + specification [RFC9293]. + + August 2022: + [RFC9293], a revision of the core TCP specification, is published, + adopting the algorithm specified in [RFC6528] as the recommended + ("SHOULD") algorithm for TCP ISN generation. + +4.3. IPv6 Interface Identifiers (IIDs) + + IPv6 Interface Identifiers can be generated as a result of different + mechanisms, including Stateless Address Autoconfiguration (SLAAC) + [RFC4862], DHCPv6 [RFC8415], and manual configuration. This section + focuses on Interface Identifiers resulting from SLAAC. + + The Interface Identifier of stable IPv6 addresses resulting from + SLAAC originally resulted in the underlying link-layer address being + embedded in the IID. At the time, employing the underlying link- + layer address for the IID was seen as a convenient way to obtain a + unique address. However, recent awareness about the security and + privacy properties of this approach [RFC7707] [RFC7721] has led to + the replacement of this flawed scheme with an alternative one + [RFC7217] [RFC8064] that does not negatively affect the security and + privacy properties of the protocol. + + January 1997: + [RFC2073] specifies the syntax of IPv6 global addresses (referred + to as "An IPv6 Provider-Based Unicast Address Format" at the + time), which is consistent with the IPv6 addressing architecture + specified in [RFC1884]. Hosts are recommended to "generate + addresses using link-specific addresses as Interface ID such as 48 + bit IEEE-802 MAC addresses". + + July 1998: + [RFC2374] specifies "An IPv6 Aggregatable Global Unicast Address + Format" (obsoleting [RFC2073]), changing the size of the IID to 64 + bits, and specifies that IIDs must be constructed in IEEE 64-bit + Extended Unique Identifier (EUI-64) format. How such identifiers + are constructed is specified in the corresponding "IPv6 over + <link>" specifications, such as "IPv6 over Ethernet". + + January 2001: + [RFC3041] recognizes the problem of IPv6 network activity + correlation and specifies IPv6 temporary addresses. Temporary + addresses are to be used along with stable addresses. + + August 2003: + [RFC3587] obsoletes [RFC2374], making the Top-Level Aggregator + (TLA) / Next-Level Aggregator (NLA) structure historic, though the + syntax and recommendations for the stable IIDs remain unchanged. + + February 2006: + [RFC4291] is published as the latest "IP Version 6 Addressing + Architecture", requiring the IIDs of "all unicast addresses, + except those that start with the binary value 000" to employ the + Modified EUI-64 format. The details of constructing such + interface identifiers are defined in the corresponding "IPv6 over + <link>" specifications. + + March 2008: + [RFC5157] provides hints regarding how patterns in IPv6 addresses + could be leveraged for the purpose of address scanning. + + December 2011: + [draft-gont-6man-stable-privacy-addresses-00] notes that the + original scheme for generating stable addresses allows for IPv6 + address scanning and for active host tracking (even when IPv6 + temporary addresses are employed). It also specifies an + alternative algorithm meant to replace IIDs based on Modified + EUI-64 format identifiers. + + November 2012: + The 6man WG adopts [draft-gont-6man-stable-privacy-addresses-01] + as a working group item (as + [draft-ietf-6man-stable-privacy-addresses-00]). However, the + document no longer formally updates [RFC4291]; therefore, the + specified algorithm no longer formally replaces the Modified + EUI-64 format identifiers. + + February 2013: + An address-scanning tool (scan6 of [IPv6-Toolkit]) that leverages + IPv6 address patterns is released [Gont2013]. + + July 2013: + [draft-cooper-6man-ipv6-address-generation-privacy-00] elaborates + on the security and privacy properties of all known algorithms for + generating IPv6 IIDs. + + January 2014: + The 6man WG posts [draft-ietf-6man-default-iids-00] + ("Recommendation on Stable IPv6 Interface Identifiers"), + recommending [draft-ietf-6man-stable-privacy-addresses-17] for the + generation of stable addresses. + + April 2014: + [RFC7217] (formerly [draft-ietf-6man-stable-privacy-addresses-17]) + is published, specifying "A Method for Generating Semantically + Opaque Interface Identifiers with IPv6 Stateless Address + Autoconfiguration (SLAAC)" as an alternative to (but *not* + replacement of) Modified EUI-64 format IIDs. + + March 2016: + [RFC7707] (formerly [draft-gont-opsec-ipv6-host-scanning-02] and + later [draft-ietf-opsec-ipv6-host-scanning-08]), about "Network + Reconnaissance in IPv6 Networks", is published. + + March 2016: + [RFC7721] (formerly + [draft-cooper-6man-ipv6-address-generation-privacy-00] and later + [draft-ietf-6man-ipv6-address-generation-privacy-08]), about + "Security and Privacy Considerations for IPv6 Address Generation + Mechanisms", is published. + + May 2016: + [draft-gont-6man-non-stable-iids-00] is posted, with the goal of + specifying requirements for non-stable addresses and updating + [RFC4941] such that use of only temporary addresses is allowed. + + May 2016: + [draft-gont-6man-address-usage-recommendations-00] is posted, + providing an analysis of how different aspects on an address (from + stability to usage mode) affect their corresponding security and + privacy properties and meaning to eventually provide advice in + this area. + + February 2017: + [draft-ietf-6man-default-iids-16], produced by the 6man WG, is + published as [RFC8064] ("Recommendation on Stable IPv6 Interface + Identifiers"), with requirements for stable addresses and a + recommendation to employ [RFC7217] for the generation of stable + addresses. It formally updates a large number of RFCs. + + March 2018: + [draft-fgont-6man-rfc4941bis-00] is posted (as suggested by the + 6man WG) to address flaws in [RFC4941] by revising it (as an + alternative to the [draft-gont-6man-non-stable-iids-00] effort, + posted in March 2016). + + July 2018: + [draft-fgont-6man-rfc4941bis-00] is adopted (as + [draft-ietf-6man-rfc4941bis-00]) as a WG item of the 6man WG. + + December 2020: + [draft-ietf-6man-rfc4941bis-12] is approved by the IESG for + publication as an RFC. + + February 2021: + [draft-ietf-6man-rfc4941bis-12] is finally published as [RFC8981]. + +4.4. NTP Reference IDs (REFIDs) + + The NTP [RFC5905] Reference ID is a 32-bit code identifying the + particular server or reference clock. Above stratum 1 (secondary + servers and clients), this value can be employed to avoid degree-one + timing loops, that is, scenarios where two NTP peers are (mutually) + the time source of each other. If using the IPv4 address family, the + identifier is the four-octet IPv4 address. If using the IPv6 address + family, it is the first four octets of the MD5 hash of the IPv6 + address. + + June 2010: + [RFC5905] ("Network Time Protocol Version 4: Protocol and + Algorithms Specification") is published. It specifies that, for + NTP peers with stratum higher than 1, the REFID embeds the IPv4 + address of the time source or the first four octets of the MD5 + hash of the IPv6 address of the time source. + + July 2016: + [draft-stenn-ntp-not-you-refid-00] is posted, describing the + information leakage produced via the NTP REFID. It proposes that + NTP returns a special REFID when a packet employs an IP Source + Address that is not believed to be a current NTP peer but + otherwise generates and returns the common REFID. It is + subsequently adopted by the NTP WG as + [draft-ietf-ntp-refid-updates-00]. + + April 2019: + [Gont-NTP] notes that the proposed fix specified in + [draft-ietf-ntp-refid-updates-00] is, at the very least, sub- + optimal. As a result of a lack of WG support, the + [draft-ietf-ntp-refid-updates-00] effort is eventually abandoned. + +4.5. Transport-Protocol Ephemeral Port Numbers + + Most (if not all) transport protocols employ "port numbers" to + demultiplex packets to the corresponding transport-protocol + instances. "Ephemeral ports" refer to the local ports employed in + active OPEN requests, that is, typically the local port numbers + employed on the side initiating the communication. + + August 1980: + [RFC0768] notes that the UDP source port is optional and + identifies the port of the sending process. It does not specify + interoperability requirements for source port selection, nor does + it suggest possible ways to select port numbers. Most popular + implementations end up selecting source ports from a system-wide + global counter. + + September 1981: + [RFC0793] (the TCP specification) essentially describes the use of + port numbers and specifies that port numbers should result in a + unique socket pair {local address, local port, remote address, + remote port}. How ephemeral ports are selected and the port range + from which they are selected are left unspecified. + + July 1996: + OpenBSD implements ephemeral port randomization [OpenBSD-PR]. + + July 2008: + The CERT Coordination Center publishes details of what became + known as the "Kaminsky Attack" [VU-800113] [Kaminsky2008] on the + DNS. The attack exploits the lack of ephemeral port randomization + and DNS ID randomization in many major DNS implementations to + perform cache poisoning in an effective and practical manner. + + January 2009: + [RFC5452] mandates the use of port randomization for DNS resolvers + and mandates that implementations must randomize ports from the + range of available ports (53 or 1024 and above) that is as large + as possible and practicable. It does not recommend possible + algorithms for port randomization, although the document + specifically targets DNS resolvers, for which a simple port + randomization suffices (e.g., Algorithm 1 of [RFC6056]). This + document led to the implementation of port randomization in the + DNS resolvers themselves, rather than in the underlying transport + protocols. + + January 2011: + [RFC6056] notes that many TCP and UDP implementations result in + predictable ephemeral port numbers and also notes that many + implementations select port numbers from a small portion of the + whole port number space. It recommends the implementation and use + of ephemeral port randomization, proposes a number of possible + algorithms for port randomization, and also recommends to + randomize port numbers over the range 1024-65535. + + March 2016: + [NIST-NTP] reports a non-normal distribution of the ephemeral port + numbers employed by the NTP clients of an Internet Time Service. + + April 2019: + [draft-gont-ntp-port-randomization-00] notes that some NTP + implementations employ the NTP service port (123) as the local + port for nonsymmetric modes and aims to update the NTP + specification to recommend port randomization in such cases, which + is in line with [RFC6056]. The proposal experiences some pushback + in the relevant working group (NTP WG) [NTP-PORTR] but is finally + adopted as a working group item as + [draft-ietf-ntp-port-randomization-00]. + + August 2021: + [draft-ietf-ntp-port-randomization-08] is finally published as + [RFC9109]. + +4.6. DNS ID + + The DNS ID [RFC1035] can be employed to match DNS replies to + outstanding DNS queries. + + | NOTE: Some documents refer to the DNS ID as the DNS "Query ID" + | or "TxID". + + November 1987: + [RFC1035] specifies that the DNS ID is a 16-bit identifier + assigned by the program that generates any kind of query and that + this identifier is copied in the corresponding reply and can be + used by the requester to match up replies to outstanding queries. + It does not specify the interoperability requirements for this + numeric identifier, nor does it suggest an algorithm for + generating it. + + August 1993: + [Schuba1993] describes DNS cache poisoning attacks that require + the attacker to guess the DNS ID. + + June 1995: + [Vixie1995] suggests that both the UDP source port and the DNS ID + of query packets should be randomized, although that might not + provide enough entropy to prevent an attacker from guessing these + values. + + April 1997: + [Arce1997] finds that implementations employ predictable UDP + source ports and predictable DNS IDs and argues that both should + be randomized. + + November 2002: + [Sacramento2002] finds that, by spoofing multiple requests for the + same domain name from different IP addresses, an attacker may + guess the DNS ID employed for a victim with a high probability of + success, thus allowing for DNS cache poisoning attacks. + + March 2007: + [Klein2007c] finds that the Microsoft Windows DNS server generates + predictable DNS ID values. + + July 2007: + [Klein2007b] finds that a popular DNS server software (BIND 9) + that randomizes the DNS ID is still subject to DNS cache poisoning + attacks by forging a large number of queries and leveraging the + birthday paradox. + + October 2007: + [Klein2007] finds that OpenBSD's DNS software (based on the BIND + DNS server of the Internet Systems Consortium (ISC)) generates + predictable DNS ID values. + + January 2009: + [RFC5452] is published, requiring resolvers to randomize the DNS + ID of queries and to verify that the DNS ID of a reply matches + that of the DNS query as part of the DNS reply validation process. + + May 2010: + [Economou2010] finds that the Windows SMTP Service implements its + own DNS resolver that results in predictable DNS ID values. + Additionally, it fails to validate that the DNS ID of a reply + matches that of the DNS query that supposedly elicited it. + +5. Conclusions + + For more than 30 years, a large number of implementations of IETF + protocols have been subject to a variety of attacks, with effects + ranging from Denial of Service (DoS) or data injection to information + leakages that could be exploited for pervasive monitoring [RFC7258]. + The root cause of these issues has been, in many cases, the poor + selection of transient numeric identifiers in such protocols, usually + as a result of insufficient or misleading specifications. + + While it is generally possible to identify an algorithm that can + satisfy the interoperability requirements for a given transient + numeric identifier, this document provides empirical evidence that + doing so without negatively affecting the security and/or privacy + properties of the aforementioned protocols is nontrivial. It is thus + evident that advice in this area is warranted. + + [RFC9416] aims at requiring future IETF protocol specifications to + contain analysis of the security and privacy properties of any + transient numeric identifiers specified by the protocol and to + recommend an algorithm for the generation of such transient numeric + identifiers. [RFC9415] specifies a number of sample algorithms for + generating transient numeric identifiers with specific + interoperability requirements and failure severities. + +6. IANA Considerations + + This document has no IANA actions. + +7. Security Considerations + + This document analyzes the timeline of the specification and + implementation of the transient numeric identifiers of some sample + IETF protocols and how the security and privacy properties of such + protocols have been affected as a result of it. It provides concrete + evidence that advice in this area is warranted. + + [RFC9415] analyzes and categorizes transient numeric identifiers + based on their interoperability requirements and their associated + failure severities and recommends possible algorithms that can be + employed to comply with those requirements without negatively + affecting the security and privacy properties of the corresponding + protocols. + + [RFC9416] formally requires IETF protocol specifications to specify + the interoperability requirements for their transient numeric + identifiers, to do a warranted vulnerability assessment of such + transient numeric identifiers, and to recommend possible algorithms + for their generation, such that the interoperability requirements are + complied with, while any negative security or privacy properties of + these transient numeric identifiers are mitigated. + +8. References + +8.1. Normative References + + [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, + DOI 10.17487/RFC0768, August 1980, + <https://www.rfc-editor.org/info/rfc768>. + + [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, + DOI 10.17487/RFC0791, September 1981, + <https://www.rfc-editor.org/info/rfc791>. + + [RFC0793] Postel, J., "Transmission Control Protocol", RFC 793, + DOI 10.17487/RFC0793, September 1981, + <https://www.rfc-editor.org/info/rfc793>. + + [RFC1323] Jacobson, V., Braden, R., and D. Borman, "TCP Extensions + for High Performance", RFC 1323, DOI 10.17487/RFC1323, May + 1992, <https://www.rfc-editor.org/info/rfc1323>. + + [RFC1883] Deering, S. and R. Hinden, "Internet Protocol, Version 6 + (IPv6) Specification", RFC 1883, DOI 10.17487/RFC1883, + December 1995, <https://www.rfc-editor.org/info/rfc1883>. + + [RFC1884] Hinden, R., Ed. and S. Deering, Ed., "IP Version 6 + Addressing Architecture", RFC 1884, DOI 10.17487/RFC1884, + December 1995, <https://www.rfc-editor.org/info/rfc1884>. + + [RFC2073] Rekhter, Y., Lothberg, P., Hinden, R., Deering, S., and J. + Postel, "An IPv6 Provider-Based Unicast Address Format", + RFC 2073, DOI 10.17487/RFC2073, January 1997, + <https://www.rfc-editor.org/info/rfc2073>. + + [RFC2374] Hinden, R., O'Dell, M., and S. Deering, "An IPv6 + Aggregatable Global Unicast Address Format", RFC 2374, + DOI 10.17487/RFC2374, July 1998, + <https://www.rfc-editor.org/info/rfc2374>. + + [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 + (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, + December 1998, <https://www.rfc-editor.org/info/rfc2460>. + + [RFC3041] Narten, T. and R. Draves, "Privacy Extensions for + Stateless Address Autoconfiguration in IPv6", RFC 3041, + DOI 10.17487/RFC3041, January 2001, + <https://www.rfc-editor.org/info/rfc3041>. + + [RFC3587] Hinden, R., Deering, S., and E. Nordmark, "IPv6 Global + Unicast Address Format", RFC 3587, DOI 10.17487/RFC3587, + August 2003, <https://www.rfc-editor.org/info/rfc3587>. + + [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing + Architecture", RFC 4291, DOI 10.17487/RFC4291, February + 2006, <https://www.rfc-editor.org/info/rfc4291>. + + [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless + Address Autoconfiguration", RFC 4862, + DOI 10.17487/RFC4862, September 2007, + <https://www.rfc-editor.org/info/rfc4862>. + + [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy + Extensions for Stateless Address Autoconfiguration in + IPv6", RFC 4941, DOI 10.17487/RFC4941, September 2007, + <https://www.rfc-editor.org/info/rfc4941>. + + [RFC5452] Hubert, A. and R. van Mook, "Measures for Making DNS More + Resilient against Forged Answers", RFC 5452, + DOI 10.17487/RFC5452, January 2009, + <https://www.rfc-editor.org/info/rfc5452>. + + [RFC6056] Larsen, M. and F. Gont, "Recommendations for Transport- + Protocol Port Randomization", BCP 156, RFC 6056, + DOI 10.17487/RFC6056, January 2011, + <https://www.rfc-editor.org/info/rfc6056>. + + [RFC6528] Gont, F. and S. Bellovin, "Defending against Sequence + Number Attacks", RFC 6528, DOI 10.17487/RFC6528, February + 2012, <https://www.rfc-editor.org/info/rfc6528>. + + [RFC7217] Gont, F., "A Method for Generating Semantically Opaque + Interface Identifiers with IPv6 Stateless Address + Autoconfiguration (SLAAC)", RFC 7217, + DOI 10.17487/RFC7217, April 2014, + <https://www.rfc-editor.org/info/rfc7217>. + + [RFC7323] Borman, D., Braden, B., Jacobson, V., and R. + Scheffenegger, Ed., "TCP Extensions for High Performance", + RFC 7323, DOI 10.17487/RFC7323, September 2014, + <https://www.rfc-editor.org/info/rfc7323>. + + [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 + (IPv6) Specification", STD 86, RFC 8200, + DOI 10.17487/RFC8200, July 2017, + <https://www.rfc-editor.org/info/rfc8200>. + + [RFC8415] Mrugalski, T., Siodelski, M., Volz, B., Yourtchenko, A., + Richardson, M., Jiang, S., Lemon, T., and T. Winters, + "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)", + RFC 8415, DOI 10.17487/RFC8415, November 2018, + <https://www.rfc-editor.org/info/rfc8415>. + + [RFC9293] Eddy, W., Ed., "Transmission Control Protocol (TCP)", + STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022, + <https://www.rfc-editor.org/info/rfc9293>. + +8.2. Informative References + + [Arce1997] Arce, I. and E. Kargieman, "BIND Vulnerabilities and + Solutions", April 1997, + <http://www.openbsd.org/advisories/sni_12_resolverid.txt>. + + [Bellovin1989] + Bellovin, S., "Security Problems in the TCP/IP Protocol + Suite", Computer Communications Review, vol. 19, no. 2, + pp. 32-48, April 1989, + <https://www.cs.columbia.edu/~smb/papers/ipext.pdf>. + + [Bellovin2002] + Bellovin, S., "A Technique for Counting NATted Hosts", + IMW'02, Marseille, France, DOI 10.1145/637201.637243, + November 2002, + <https://www.cs.columbia.edu/~smb/papers/fnat.pdf>. + + [CERT2001] CERT/CC, "CERT Advisory CA-2001-09: Statistical Weaknesses + in TCP/IP Initial Sequence Numbers", May 2001, + <https://resources.sei.cmu.edu/asset_files/ + WhitePaper/2001_019_001_496192.pdf>. + + [draft-cooper-6man-ipv6-address-generation-privacy-00] + Cooper, A., Gont, F., and D. Thaler, "Privacy + Considerations for IPv6 Address Generation Mechanisms", + Work in Progress, Internet-Draft, draft-cooper-6man-ipv6- + address-generation-privacy-00, 15 July 2013, + <https://www.ietf.org/archive/id/draft-cooper-6man-ipv6- + address-generation-privacy-00.txt>. + + [draft-eddy-rfc793bis-04] + Eddy, W., Ed., "Transmission Control Protocol + Specification", Work in Progress, Internet-Draft, draft- + eddy-rfc793bis-04, 25 August 2014, + <https://www.ietf.org/archive/id/draft-eddy-rfc793bis- + 04.txt>. + + [draft-fgont-6man-rfc4941bis-00] + Gont, F., Krishnan, S., Narten, T., and R. Draves, + "Privacy Extensions for Stateless Address + Autoconfiguration in IPv6", Work in Progress, Internet- + Draft, draft-fgont-6man-rfc4941bis-00, 25 March 2018, + <https://www.ietf.org/archive/id/draft-fgont-6man- + rfc4941bis-00.txt>. + + [draft-gont-6man-address-usage-recommendations-00] + Gont, F. and W. LIU, "IPv6 Address Usage Recommendations", + Work in Progress, Internet-Draft, draft-gont-6man-address- + usage-recommendations-00, 27 May 2016, + <https://www.ietf.org/archive/id/draft-gont-6man-address- + usage-recommendations-00.txt>. + + [draft-gont-6man-non-stable-iids-00] + Gont, F. and W. Liu, "Recommendation on Non-Stable IPv6 + Interface Identifiers", Work in Progress, Internet-Draft, + draft-gont-6man-non-stable-iids-00, 23 May 2016, + <https://www.ietf.org/archive/id/draft-gont-6man-non- + stable-iids-00.txt>. + + [draft-gont-6man-predictable-fragment-id-00] + Gont, F., "Security Implications of Predictable Fragment + Identification Values", Work in Progress, Internet-Draft, + draft-gont-6man-predictable-fragment-id-00, 15 December + 2011, <https://www.ietf.org/archive/id/draft-gont-6man- + predictable-fragment-id-00.txt>. + + [draft-gont-6man-predictable-fragment-id-03] + Gont, F., "Security Implications of Predictable Fragment + Identification Values", Work in Progress, Internet-Draft, + draft-gont-6man-predictable-fragment-id-03, 9 January + 2013, <https://www.ietf.org/archive/id/draft-gont-6man- + predictable-fragment-id-03.txt>. + + [draft-gont-6man-stable-privacy-addresses-00] + Gont, F., "A method for Generating Stable Privacy-Enhanced + Addresses with IPv6 Stateless Address Autoconfiguration + (SLAAC)", Work in Progress, Internet-Draft, draft-gont- + 6man-stable-privacy-addresses-00, 15 December 2011, + <https://www.ietf.org/archive/id/draft-gont-6man-stable- + privacy-addresses-00.txt>. + + [draft-gont-6man-stable-privacy-addresses-01] + Gont, F., "A method for Generating Stable Privacy-Enhanced + Addresses with IPv6 Stateless Address Autoconfiguration + (SLAAC)", Work in Progress, Internet-Draft, draft-gont- + 6man-stable-privacy-addresses-01, 31 March 2012, + <https://www.ietf.org/archive/id/draft-gont-6man-stable- + privacy-addresses-01.txt>. + + [draft-gont-ntp-port-randomization-00] + Gont, F. and G. Gont, "Port Randomization in the Network + Time Protocol Version 4", Work in Progress, Internet- + Draft, draft-gont-ntp-port-randomization-00, 16 April + 2019, <https://www.ietf.org/archive/id/draft-gont-ntp- + port-randomization-00.txt>. + + [draft-gont-opsec-ipv6-host-scanning-02] + Gont, F. and T. Chown, "Network Reconnaissance in IPv6 + Networks", Work in Progress, Internet-Draft, draft-gont- + opsec-ipv6-host-scanning-02, 23 October 2012, + <https://www.ietf.org/archive/id/draft-gont-opsec-ipv6- + host-scanning-02.txt>. + + [draft-gont-predictable-numeric-ids-03] + Gont, F. and I. Arce, "Security and Privacy Implications + of Numeric Identifiers Employed in Network Protocols", + Work in Progress, Internet-Draft, draft-gont-predictable- + numeric-ids-03, 11 March 2019, + <https://datatracker.ietf.org/doc/html/draft-gont- + predictable-numeric-ids-03>. + + [draft-ietf-6man-default-iids-00] + Gont, F., Cooper, A., Thaler, D., and W. Liu, + "Recommendation on Stable IPv6 Interface Identifiers", + Work in Progress, Internet-Draft, draft-ietf-6man-default- + iids-00, 24 January 2014, + <https://www.ietf.org/archive/id/draft-ietf-6man-default- + iids-00.txt>. + + [draft-ietf-6man-default-iids-16] + Gont, F., Cooper, A., Thaler, D., and W. LIU, + "Recommendation on Stable IPv6 Interface Identifiers", + Work in Progress, Internet-Draft, draft-ietf-6man-default- + iids-16, 28 September 2016, + <https://www.ietf.org/archive/id/draft-ietf-6man-default- + iids-16.txt>. + + [draft-ietf-6man-ipv6-address-generation-privacy-08] + Cooper, A., Gont, F., and D. Thaler, "Privacy + Considerations for IPv6 Address Generation Mechanisms", + Work in Progress, Internet-Draft, draft-ietf-6man-ipv6- + address-generation-privacy-08, 23 September 2015, + <https://www.ietf.org/archive/id/draft-ietf-6man-ipv6- + address-generation-privacy-08.txt>. + + [draft-ietf-6man-predictable-fragment-id-00] + Gont, F., "Security Implications of Predictable Fragment + Identification Values", Work in Progress, Internet-Draft, + draft-ietf-6man-predictable-fragment-id-00, 22 March 2013, + <https://www.ietf.org/archive/id/draft-ietf-6man- + predictable-fragment-id-00.txt>. + + [draft-ietf-6man-predictable-fragment-id-01] + Gont, F., "Security Implications of Predictable Fragment + Identification Values", Work in Progress, Internet-Draft, + draft-ietf-6man-predictable-fragment-id-01, 29 April 2014, + <https://www.ietf.org/archive/id/draft-ietf-6man- + predictable-fragment-id-01.txt>. + + [draft-ietf-6man-predictable-fragment-id-02] + Gont, F., "Security Implications of Predictable Fragment + Identification Values", Work in Progress, Internet-Draft, + draft-ietf-6man-predictable-fragment-id-02, 19 December + 2014, <https://datatracker.ietf.org/doc/html/draft-ietf- + 6man-predictable-fragment-id-02>. + + [draft-ietf-6man-predictable-fragment-id-08] + Gont, F., "Security Implications of Predictable Fragment + Identification Values", Work in Progress, Internet-Draft, + draft-ietf-6man-predictable-fragment-id-08, 9 June 2015, + <https://www.ietf.org/archive/id/draft-ietf-6man- + predictable-fragment-id-08.txt>. + + [draft-ietf-6man-predictable-fragment-id-10] + Gont, F., "Security Implications of Predictable Fragment + Identification Values", Work in Progress, Internet-Draft, + draft-ietf-6man-predictable-fragment-id-10, 9 October + 2015, <https://www.ietf.org/archive/id/draft-ietf-6man- + predictable-fragment-id-10.txt>. + + [draft-ietf-6man-rfc2460bis-05] + Deering, S. and R. Hinden, "Internet Protocol, Version 6 + (IPv6) Specification", Work in Progress, Internet-Draft, + draft-ietf-6man-rfc2460bis-05, 28 June 2016, + <https://www.ietf.org/archive/id/draft-ietf-6man- + rfc2460bis-05.txt>. + + [draft-ietf-6man-rfc2460bis-13] + Deering, S. and R. Hinden, "draft-ietf-6man-rfc2460bis- + 13", Work in Progress, Internet-Draft, draft-ietf-6man- + rfc2460bis-13, 19 May 2017, + <https://www.ietf.org/archive/id/draft-ietf-6man- + rfc2460bis-13.txt>. + + [draft-ietf-6man-rfc4941bis-00] + Gont, F., Krishnan, S., Narten, T., and R. Draves, + "Privacy Extensions for Stateless Address + Autoconfiguration in IPv6", Work in Progress, Internet- + Draft, draft-ietf-6man-rfc4941bis-00, 2 July 2018, + <https://www.ietf.org/archive/id/draft-ietf-6man- + rfc4941bis-00.txt>. + + [draft-ietf-6man-rfc4941bis-12] + Gont, F., Krishnan, S., Narten, T., and R. Draves, + "Temporary Address Extensions for Stateless Address + Autoconfiguration in IPv6", Work in Progress, Internet- + Draft, draft-ietf-6man-rfc4941bis-12, 2 November 2020, + <https://www.ietf.org/archive/id/draft-ietf-6man- + rfc4941bis-12.txt>. + + [draft-ietf-6man-stable-privacy-addresses-00] + Gont, F., "A method for Generating Stable Privacy-Enhanced + Addresses with IPv6 Stateless Address Autoconfiguration + (SLAAC)", Work in Progress, Internet-Draft, draft-ietf- + 6man-stable-privacy-addresses-00, 18 May 2012, + <https://www.ietf.org/archive/id/draft-ietf-6man-stable- + privacy-addresses-00.txt>. + + [draft-ietf-6man-stable-privacy-addresses-17] + Gont, F., "A Method for Generating Semantically Opaque + Interface Identifiers with IPv6 Stateless Address + Autoconfiguration (SLAAC)", Work in Progress, Internet- + Draft, draft-ietf-6man-stable-privacy-addresses-17, 27 + January 2014, <https://www.ietf.org/archive/id/draft-ietf- + 6man-stable-privacy-addresses-17.txt>. + + [draft-ietf-ntp-port-randomization-00] + Gont, F., Gont, G., and M. Lichvar, "Port Randomization in + the Network Time Protocol Version 4", Work in Progress, + Internet-Draft, draft-ietf-ntp-port-randomization-00, 22 + October 2019, <https://www.ietf.org/archive/id/draft-ietf- + ntp-port-randomization-00.txt>. + + [draft-ietf-ntp-port-randomization-08] + Gont, F., Gont, G., and M. Lichvar, "Port Randomization in + the Network Time Protocol Version 4", Work in Progress, + Internet-Draft, draft-ietf-ntp-port-randomization-00, 10 + June 2021, <https://www.ietf.org/archive/id/draft-ietf- + ntp-port-randomization-08.txt>. + + [draft-ietf-ntp-refid-updates-00] + Stenn, H. and S. Goldberg, "Network Time Protocol REFID + Updates", Work in Progress, Internet-Draft, draft-ietf- + ntp-refid-updates-00, 13 November 2016, + <https://www.ietf.org/archive/id/draft-ietf-ntp-refid- + updates-00.txt>. + + [draft-ietf-opsec-ipv6-host-scanning-08] + Gont, F. and T. Chown, "Network Reconnaissance in IPv6 + Networks", Work in Progress, Internet-Draft, draft-ietf- + opsec-ipv6-host-scanning-08, 28 August 2015, + <https://www.ietf.org/archive/id/draft-ietf-opsec-ipv6- + host-scanning-08.txt>. + + [draft-stenn-ntp-not-you-refid-00] + Goldberg, S. and H. Stenn, "Network Time Protocol Not You + REFID", Work in Progress, Internet-Draft, draft-stenn-ntp- + not-you-refid-00, 8 July 2016, + <https://www.ietf.org/archive/id/draft-stenn-ntp-not-you- + refid-00.txt>. + + [Economou2010] + Economou, N., "Windows SMTP Service DNS query Id + vulnerabilities", Advisory ID Internal CORE-2010-0427, May + 2010, <https://www.coresecurity.com/core-labs/advisories/ + core-2010-0424-windows-smtp-dns-query-id-bugs>. + + [Fyodor2002] + Fyodor, "Idle scanning and related IP ID games", September + 2002, + <https://nmap.org/presentations/CanSecWest03/CD_Content/ + idlescan_paper/idlescan.html>. + + [Gont-NTP] Gont, F., "[Ntp] Comments on draft-ietf-ntp-refid-updates- + 05", message to the IETF NTP mailing list, 16 April 2019, + <https://mailarchive.ietf.org/arch/msg/ntp/ + NkfTHxUUOdp14Agh3h1IPqfcRRg>. + + [Gont2011] Gont, F., "Hacking IPv6 Networks (training course)", Hack + In Paris 2011 Conference, Paris, France, June 2011, + <https://www.si6networks.com/files/presentations/hip2011/ + fgont-hip2011-hacking-ipv6-networks.pdf>. + + [Gont2012] Gont, F., "Recent Advances in IPv6 Security", BSDCan 2012 + Conference, Ottawa, Canada, May 2012, + <https://www.si6networks.com/files/presentations/ + bsdcan2012/fgont-bsdcan2012-recent-advances-in- + ipv6-security.pdf>. + + [Gont2013] Gont, F., "Beta release of the SI6 Network's IPv6 Toolkit + (help wanted!)", message to the IPv6 Hackers mailing list, + 11 February 2013, + <https://lists.si6networks.com/pipermail/ + ipv6hackers/2013-February/000947.html>. + + [IANA-PROT] + IANA, "Protocol Registries", + <https://www.iana.org/protocols>. + + [IPID-DEV] Klein, A. and B. Pinkas, "From IP ID to Device ID and + KASLR Bypass (Extended Version)", + DOI 10.48550/arXiv.1906.10478, October 2019, + <https://arxiv.org/pdf/1906.10478.pdf>. + + [IPv6-Toolkit] + SI6 Networks, "IPv6 Toolkit", + <https://www.si6networks.com/tools/ipv6toolkit>. + + [Kaminsky2008] + Kaminsky, D., "Black Ops 2008: It's The End Of The Cache + As We Know It", August 2008, + <https://www.blackhat.com/presentations/bh-jp-08/bh-jp-08- + Kaminsky/BlackHat-Japan-08-Kaminsky-DNS08-BlackOps.pdf>. + + [Klein2007] + Klein, A., "OpenBSD DNS Cache Poisoning and Multiple O/S + Predictable IP ID Vulnerability", October 2007, + <https://dl.packetstormsecurity.net/papers/attack/OpenBSD_ + DNS_Cache_Poisoning_and_Multiple_OS_Predictable_IP_ID_Vuln + erability.pdf>. + + [Klein2007b] + Klein, A., "BIND 9 DNS Cache Poisoning", March 2007, + <https://citeseerx.ist.psu.edu/doc/10.1.1.86.4474>. + + [Klein2007c] + Klein, A., "Windows DNS Server Cache Poisoning", March + 2007, <https://dl.packetstormsecurity.net/papers/attack/ + Windows_DNS_Cache_Poisoning.pdf>. + + [Morbitzer2013] + Morbitzer, M., "[PATCH] TCP Idle Scan in IPv6", message to + the nmap-dev mailing list, 3 June 2013, + <https://seclists.org/nmap-dev/2013/q2/394>. + + [Morris1985] + Morris, R., "A Weakness in the 4.2BSD UNIX TCP/IP + Software", CSTR 117, AT&T Bell Laboratories, Murray Hill, + NJ, February 1985, + <https://pdos.csail.mit.edu/~rtm/papers/117.pdf>. + + [NIST-NTP] Sherman, J. and J. Levine, "Usage Analysis of the NIST + Internet Time Service", Journal of Research of the + National Institute of Standards and Technology, Volume + 121, March 2016, + <https://tf.nist.gov/general/pdf/2818.pdf>. + + [NTP-PORTR] + Gont, F., "[Ntp] New rev of the NTP port randomization I-D + (Fwd: New Version Notification for draft-gont-ntp-port- + randomization-01.txt)", message to the IETF NTP mailing + list, 21 May 2019, + <https://mailarchive.ietf.org/arch/msg/ntp/ + xSCu5Vhb3zoWcqEjUMmzP8pOdW4/>. + + [OpenBSD-IPv4-ID] + OpenBSD, "Randomization of the IPv4 Identification field", + December 1998, + <https://cvsweb.openbsd.org/src/sys/netinet/ + ip_id.c?rev=1.1>. + + [OpenBSD-IPv6-ID] + OpenBSD, "Randomization of the IPv6 Identification field", + October 2003, + <https://cvsweb.openbsd.org/src/sys/netinet6/ + ip6_id.c?rev=1.1>. + + [OpenBSD-PR] + OpenBSD, "Implementation of port randomization", July + 1996, <https://cvsweb.openbsd.org/src/sys/netinet/ + in_pcb.c?rev=1.6>. + + [OpenBSD-TCP-ISN-H] + OpenBSD, "Implementation of RFC1948 for TCP ISN + randomization", June 2007, + <https://cvsweb.openbsd.org/src/sys/netinet/ + tcp_subr.c?rev=1.97>. + + [OpenBSD-TCP-ISN-I] + OpenBSD, "Implementation of TCP ISN randomization based on + random increments", July 1996, + <https://cvsweb.openbsd.org/src/sys/netinet/ + tcp_subr.c?rev=1.6>. + + [OpenBSD-TCP-ISN-R] + OpenBSD, "Implementation of TCP ISN randomization based on + simple randomization", December 2000, + <https://cvsweb.openbsd.org/src/sys/netinet/ + tcp_subr.c?rev=1.37>. + + [RedHat2011] + Red Hat, "RHSA-2011:1465-1 - Security Advisory", November + 2011, <https://rhn.redhat.com/errata/RHSA-2011-1465.html>. + + [RFC1035] Mockapetris, P., "Domain names - implementation and + specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, + November 1987, <https://www.rfc-editor.org/info/rfc1035>. + + [RFC1948] Bellovin, S., "Defending Against Sequence Number Attacks", + RFC 1948, DOI 10.17487/RFC1948, May 1996, + <https://www.rfc-editor.org/info/rfc1948>. + + [RFC5157] Chown, T., "IPv6 Implications for Network Scanning", + RFC 5157, DOI 10.17487/RFC5157, March 2008, + <https://www.rfc-editor.org/info/rfc5157>. + + [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, + "Network Time Protocol Version 4: Protocol and Algorithms + Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, + <https://www.rfc-editor.org/info/rfc5905>. + + [RFC6274] Gont, F., "Security Assessment of the Internet Protocol + Version 4", RFC 6274, DOI 10.17487/RFC6274, July 2011, + <https://www.rfc-editor.org/info/rfc6274>. + + [RFC7258] Farrell, S. and H. Tschofenig, "Pervasive Monitoring Is an + Attack", BCP 188, RFC 7258, DOI 10.17487/RFC7258, May + 2014, <https://www.rfc-editor.org/info/rfc7258>. + + [RFC7707] Gont, F. and T. Chown, "Network Reconnaissance in IPv6 + Networks", RFC 7707, DOI 10.17487/RFC7707, March 2016, + <https://www.rfc-editor.org/info/rfc7707>. + + [RFC7721] Cooper, A., Gont, F., and D. Thaler, "Security and Privacy + Considerations for IPv6 Address Generation Mechanisms", + RFC 7721, DOI 10.17487/RFC7721, March 2016, + <https://www.rfc-editor.org/info/rfc7721>. + + [RFC7739] Gont, F., "Security Implications of Predictable Fragment + Identification Values", RFC 7739, DOI 10.17487/RFC7739, + February 2016, <https://www.rfc-editor.org/info/rfc7739>. + + [RFC8064] Gont, F., Cooper, A., Thaler, D., and W. Liu, + "Recommendation on Stable IPv6 Interface Identifiers", + RFC 8064, DOI 10.17487/RFC8064, February 2017, + <https://www.rfc-editor.org/info/rfc8064>. + + [RFC8981] Gont, F., Krishnan, S., Narten, T., and R. Draves, + "Temporary Address Extensions for Stateless Address + Autoconfiguration in IPv6", RFC 8981, + DOI 10.17487/RFC8981, February 2021, + <https://www.rfc-editor.org/info/rfc8981>. + + [RFC9109] Gont, F., Gont, G., and M. Lichvar, "Network Time Protocol + Version 4: Port Randomization", RFC 9109, + DOI 10.17487/RFC9109, August 2021, + <https://www.rfc-editor.org/info/rfc9109>. + + [RFC9415] Gont, F. and I. Arce, "On the Generation of Transient + Numeric Identifiers", RFC 9415, DOI 10.17487/RFC9415, July + 2023, <https://www.rfc-editor.org/info/rfc9415>. + + [RFC9416] Gont, F. and I. Arce, "Security Considerations for + Transient Numeric Identifiers Employed in Network + Protocols", BCP 72, RFC 9416, DOI 10.17487/RFC9416, July + 2023, <https://www.rfc-editor.org/info/rfc9416>. + + [Sacramento2002] + Sacramento, V., "CAIS-ALERT: Vulnerability in the sending + requests control of BIND", message to the Bugtraq mailing + list, 25 November 2002, + <https://seclists.org/bugtraq/2002/Nov/331>. + + [Sanfilippo1998a] + Sanfilippo, S., "about the ip header id", message to the + Bugtraq mailing list, 14 December 1998, + <http://seclists.org/bugtraq/1998/Dec/48>. + + [Sanfilippo1998b] + Sanfilippo, S., "new tcp scan method", message to the + Bugtraq mailing list, 18 December 1998, + <https://seclists.org/bugtraq/1998/Dec/79>. + + [Sanfilippo1999] + Sanfilippo, S., "more ip id", message to the Bugtraq + mailing list, November 1999, + <https://github.com/antirez/hping/raw/master/docs/MORE- + FUN-WITH-IPID>. + + [Schuba1993] + Schuba, C., "Addressing Weakness in the Domain Name System + Protocol", August 1993, + <http://ftp.cerias.purdue.edu/pub/papers/christoph-schuba/ + schuba-DNS-msthesis.pdf>. + + [Shimomura1995] + Shimomura, T., "Technical details of the attack described + by Markoff in NYT", message to the USENET + comp.security.misc newsgroup, 25 January 1995, + <https://www.gont.com.ar/files/post-shimomura-usenet.txt>. + + [Silbersack2005] + Silbersack, M., "Improving TCP/IP security through + randomization without sacrificing interoperability", + EuroBSDCon 2005 Conference, January 2005, + <https://citeseerx.ist.psu.edu/viewdoc/ + download?doi=10.1.1.91.4542&rep=rep1&type=pdf>. + + [SUSE2011] Meissner, M., "[security-announce] SUSE Security + Announcement: Linux kernel security update (SUSE- + SA:2011:046)", message to the openSUSE Security Announce + mailing list, 13 December 2011, + <https://lists.opensuse.org/opensuse-security- + announce/2011-12/msg00011.html>. + + [TCPT-uptime] + McDanel, B., "TCP Timestamping - Obtaining System Uptime + Remotely", message to the Bugtraq mailing list, March + 2001, <https://seclists.org/bugtraq/2001/Mar/182>. + + [Ubuntu2011] + Ubuntu, "USN-1253-1: Linux kernel vulnerabilities", + November 2011, + <https://ubuntu.com/security/notices/USN-1253-1>. + + [USCERT2001] + CERT CC, "Multiple TCP/IP implementations may use + statistically predictable initial sequence numbers", + Vulnerability Note VU#498440, March 2001, + <https://www.kb.cert.org/vuls/id/498440>. + + [Vixie1995] + Vixie, P., "DNS and BIND Security Issues", 5th Usenix + Security Symposium, June 1995, <https://www.usenix.org/leg + acy/publications/library/proceedings/security95/ + full_papers/vixie.pdf>. + + [VU-800113] + CERT/CC, "Multiple DNS implementations vulnerable to cache + poisoning", Vulnerability Note VU#800113, July 2008, + <https://www.kb.cert.org/vuls/id/800113>. + + [Wright1994] + Wright, G. and W. Stevens, "TCP/IP Illustrated, Volume 2: + The Implementation", Addison-Wesley, February 1995. + + [Zalewski2001] + Zalewski, M., "Strange Attractors and TCP/IP Sequence + Number Analysis (2001)", March 2001, + <https://lcamtuf.coredump.cx/oldtcp/tcpseq.html>. + + [Zalewski2002] + Zalewski, M., "Strange Attractors and TCP/IP Sequence + Number Analysis - One Year Later (2002)", 2002, + <https://lcamtuf.coredump.cx/newtcp/>. + + [Zalewski2003] + Zalewski, M., "A new TCP/IP blind data injection + technique?", December 2003, + <https://lcamtuf.coredump.cx/ipfrag.txt>. + +Acknowledgements + + The authors would like to thank (in alphabetical order) Bernard + Aboba, Dave Crocker, Spencer Dawkins, Theo de Raadt, Sara Dickinson, + Guillermo Gont, Christian Huitema, Colin Perkins, Vincent Roca, Kris + Shrishak, Joe Touch, Brian Trammell, and Christopher Wood for + providing valuable comments on earlier versions of this document. + + The authors would like to thank (in alphabetical order) Steven + Bellovin, Joseph Lorenzo Hall, Gre Norcie, and Martin Thomson for + providing valuable comments on + [draft-gont-predictable-numeric-ids-03], on which this document is + based. + + Section 4.2 of this document borrows text from [RFC6528], authored by + Fernando Gont and Steven Bellovin. + + The authors would like to thank Sara Dickinson and Christopher Wood + for their guidance during the publication process of this document. + + The authors would like to thank Diego Armando Maradona for his magic + and inspiration. + +Authors' Addresses + + Fernando Gont + SI6 Networks + Segurola y Habana + 4310 7mo piso + Ciudad Autonoma de Buenos Aires + Argentina + Email: fgont@si6networks.com + URI: https://www.si6networks.com + + + Ivan Arce + Quarkslab + Segurola y Habana + 4310 7mo piso + Ciudad Autonoma de Buenos Aires + Argentina + Email: iarce@quarkslab.com + URI: https://www.quarkslab.com |