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/rfc9416.txt | |
| parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) | |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc9416.txt')
| -rw-r--r-- | doc/rfc/rfc9416.txt | 545 | 
1 files changed, 545 insertions, 0 deletions
| diff --git a/doc/rfc/rfc9416.txt b/doc/rfc/rfc9416.txt new file mode 100644 index 0000000..89a16f0 --- /dev/null +++ b/doc/rfc/rfc9416.txt @@ -0,0 +1,545 @@ + + + + +Internet Engineering Task Force (IETF)                           F. Gont +Request for Comments: 9416                                  SI6 Networks +BCP: 72                                                          I. Arce +Updates: 3552                                                  Quarkslab +Category: Best Current Practice                                July 2023 +ISSN: 2070-1721 + + + Security Considerations for Transient Numeric Identifiers Employed in +                           Network Protocols + +Abstract + +   Poor selection of transient numerical identifiers in protocols such +   as the TCP/IP suite has historically led to a number of attacks on +   implementations, ranging from Denial of Service (DoS) or data +   injection to information leakages that can be exploited by pervasive +   monitoring.  Due diligence in the specification of transient numeric +   identifiers is required even when cryptographic techniques are +   employed, since these techniques might not mitigate all the +   associated issues.  This document formally updates RFC 3552, +   incorporating requirements for transient numeric identifiers, to +   prevent flaws in future protocols and implementations. + +Status of This Memo + +   This memo documents an Internet Best Current Practice. + +   This document is a product of the Internet Engineering Task Force +   (IETF).  It represents the consensus of the IETF community.  It has +   received public review and has been approved for publication by the +   Internet Engineering Steering Group (IESG).  Further information on +   BCPs is available in 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/rfc9416. + +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.  Code Components extracted from this document must +   include Revised BSD License text as described in Section 4.e of the +   Trust Legal Provisions and are provided without warranty as described +   in the Revised BSD License. + +Table of Contents + +   1.  Introduction +   2.  Terminology +   3.  Issues with the Specification of Transient Numeric Identifiers +   4.  Common Flaws in the Generation of Transient Numeric Identifiers +   5.  Requirements for Transient Numeric Identifiers +   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 [RFC9414]. + +   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. + +   We note that the use of cryptographic techniques for confidentiality +   and authentication might not eliminate all the issues associated with +   predictable transient numeric identifiers.  Therefore, due diligence +   in the specification of transient numeric identifiers is required +   even when cryptographic techniques are employed. + +      |  NOTE: For example, cryptographic authentication can readily +      |  mitigate data injection attacks even in the presence of +      |  predictable transient numeric identifiers (such as "sequence +      |  numbers").  However, use of flawed algorithms (such as global +      |  counters) for generating transient numeric identifiers could +      |  still result in information leakages even when cryptographic +      |  techniques are employed.  These information leakages could in +      |  turn be leveraged to perform other devastating attacks (please +      |  see [RFC9415] for further details). + +   Section 3 provides an overview of common flaws in the specification +   of transient numeric identifiers.  Section 4 provides an overview of +   common flaws in the generation of transient numeric identifiers and +   their associated security and privacy implications.  Finally, +   Section 5 provides key guidelines for protocol designers. + +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. + +   Failure Severity: +      The interoperability consequences of a failure to comply with the +      interoperability requirements of a given identifier.  Severity +      considers the worst potential consequence of a failure, determined +      by the system damage and/or time lost to repair the failure.  In +      this document, we define two types of failure severity: "soft" and +      "hard". + +   Soft Failure: +      A recoverable condition in which a protocol does not operate in +      the prescribed manner but normal operation can be resumed +      automatically in a short period of time.  For example, a simple +      packet-loss event that is subsequently recovered with a +      retransmission can be considered a soft failure. + +   Hard Failure: +      A non-recoverable condition in which a protocol does not operate +      in the prescribed manner or it operates with excessive degradation +      of service.  For example, an established TCP connection that is +      aborted due to an error condition constitutes, from the point of +      view of the transport protocol, a hard failure, since it enters a +      state from which normal operation cannot be recovered. + +   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", +   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and +   "OPTIONAL" in this document are to be interpreted as described in BCP +   14 [RFC2119] [RFC8174] when, and only when, they appear in all +   capitals, as shown here. + +3.  Issues with the Specification of Transient Numeric Identifiers + +   Recent work on transient numeric identifier usage in protocol +   specifications and implementations [RFC9414] [RFC9415] revealed 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 + +   Both under specifying and over specifying transient numeric +   identifiers is hazardous.  TCP local ports [RFC0793], as well as DNS +   IDs [RFC1035], were originally under specified, leading to +   implementations that resulted in predictable values and thus were +   vulnerable to numerous off-path attacks.  Over specification, as for +   IPv6 Interface Identifiers (IIDs) [RFC4291] and IPv6 Identification +   values [RFC2460], left implementations unable to respond to security +   and privacy issues stemming from the mandated or recommended +   algorithms -- IPv6 IIDs need not expose privacy-sensitive link-layer +   addresses, and predictable IPv6 Fragment Header Identification values +   invite the same off-path attacks that plague TCP. + +   Finally, there are protocol implementations that simply fail to +   comply with existing protocol specifications.  That is, appropriate +   guidance is provided by the protocol specification (whether it be the +   core specification or an update to it), but an implementation simply +   fails to follow such guidance.  For example, some popular operating +   systems still fail to implement transport-protocol port +   randomization, as specified in [RFC6056]. + +   Clear specification of the interoperability requirements for the +   transient numeric identifiers will help identify possible algorithms +   that could be employed to generate them and also make evident if such +   identifiers are being over specified.  A protocol specification will +   usually also benefit from a vulnerability assessment of the transient +   numeric identifiers they specify to prevent the corresponding +   considerations from being overlooked. + +4.  Common Flaws in the Generation of Transient Numeric Identifiers + +   This section briefly notes common flaws associated with the +   generation of transient numeric identifiers.  Such common flaws +   include, but are not limited to: + +   *  employing trivial algorithms (e.g., global counters) that result +      in predictable identifiers, + +   *  employing the same identifier across contexts in which constancy +      is not required, + +   *  reusing identifiers across different protocols or layers of the +      protocol stack, + +   *  initializing counters or timers to constant values when such +      initialization is not required, + +   *  employing the same increment space across different contexts, and + +   *  use of flawed Pseudorandom Number Generators (PRNGs). + +   Employing trivial algorithms for generating the identifiers means +   that any node that is able to sample such identifiers can easily +   predict future identifiers employed by the victim node. + +   When one identifier is employed across contexts where such constancy +   is not needed, activity correlation is made possible.  For example, +   employing an identifier that is constant across networks allows for +   node tracking across networks. + +   Reusing identifiers across different layers or protocols ties the +   security and privacy properties of the protocol reusing the +   identifier to the security and privacy properties of the original +   identifier (over which the protocol reusing the identifier may have +   no control regarding its generation).  Besides, when reusing an +   identifier across protocols from different layers, the goal of +   isolating the properties of a layer from those of another layer is +   broken, and the vulnerability assessment may be harder to perform +   since the combined system, rather than each protocol in isolation, +   will have to be assessed. + +   At times, a protocol needs to convey order information (whether it be +   sequence, timing, etc.).  In many cases, there is no reason for the +   corresponding counter or timer to be initialized to any specific +   value, e.g., at system bootstrap.  Similarly, there may not be a need +   for the difference between successive counter values to be +   predictable. + +   A node that implements a per-context linear function may share the +   increment space among different contexts (please see the "Simple PRF- +   Based Algorithm" section in [RFC9415]).  Sharing the same increment +   space allows an attacker that can sample identifiers in other context +   to, e.g., learn how many identifiers have been generated between two +   sampled values. + +   Finally, some implementations have been found to employ flawed PRNGs +   (e.g., see [Klein2007]). + +5.  Requirements for Transient Numeric Identifiers + +   Protocol specifications that employ transient numeric identifiers +   MUST explicitly specify the interoperability requirements for the +   aforementioned transient numeric identifiers (e.g., required +   properties such as uniqueness, along with the failure severity if +   such requirements are not met). + +   A vulnerability assessment of the aforementioned transient numeric +   identifiers MUST be performed as part of the specification process. +   Such vulnerability assessment should cover, at least, spoofing, +   tampering, repudiation, information disclosure, DoS, and elevation of +   privilege. + +      |  NOTE: Sections 8 and 9 of [RFC9415] provide a general +      |  vulnerability assessment of transient numeric identifiers, +      |  along with a vulnerability assessment of common algorithms for +      |  generating transient numeric identifiers.  Please see +      |  [Shostack2014] for further guidance on threat modeling. + +   Protocol specifications SHOULD NOT employ predictable transient +   numeric identifiers, except when such predictability is the result of +   their interoperability requirements. + +   Protocol specifications that employ transient numeric identifiers +   SHOULD recommend an algorithm for generating the aforementioned +   transient numeric identifiers that mitigates the vulnerabilities +   identified in the previous step, such as those discussed in +   [RFC9415]. + +   As discussed in Section 1, use of cryptographic techniques for +   confidentiality and authentication might not eliminate all the issues +   associated with predictable transient numeric identifiers. +   Therefore, the advice from this section MUST still be applied for +   cases where cryptographic techniques for confidentiality or +   authentication are employed. + +6.  IANA Considerations + +   This document has no IANA actions. + +7.  Security Considerations + +   This entire document is about the security and privacy implications +   of transient numeric identifiers and formally updates [RFC3552] such +   that the security and privacy implications of transient numeric +   identifiers are addressed when writing the "Security Considerations" +   section of future RFCs. + +8.  References + +8.1.  Normative References + +   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate +              Requirement Levels", BCP 14, RFC 2119, +              DOI 10.17487/RFC2119, March 1997, +              <https://www.rfc-editor.org/info/rfc2119>. + +   [RFC3552]  Rescorla, E. and B. Korver, "Guidelines for Writing RFC +              Text on Security Considerations", BCP 72, RFC 3552, +              DOI 10.17487/RFC3552, July 2003, +              <https://www.rfc-editor.org/info/rfc3552>. + +   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC +              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, +              May 2017, <https://www.rfc-editor.org/info/rfc8174>. + +8.2.  Informative References + +   [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>. + +   [IANA-PROT] +              IANA, "Protocol Registries", +              <https://www.iana.org/protocols>. + +   [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>. + +   [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>. + +   [PREDICTABLE-NUMERIC-IDS] +              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>. + +   [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>. + +   [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>. + +   [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>. + +   [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>. + +   [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>. + +   [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>. + +   [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>. + +   [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>. + +   [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>. + +   [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>. + +   [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>. + +   [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>. + +   [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>. + +   [RFC9414]  Gont, F. and I. Arce, "Unfortunate History of Transient +              Numeric Identifiers", RFC 9414, DOI 10.17487/RFC9414, July +              2023, <https://www.rfc-editor.org/info/rfc9414>. + +   [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>. + +   [Sanfilippo1998a] +              Sanfilippo, S., "about the ip header id", message to the +              Bugtraq mailing list, December 1998, +              <https://seclists.org/bugtraq/1998/Dec/48>. + +   [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>. + +   [Shostack2014] +              Shostack, A., "Threat Modeling: Designing for Security", +              Wiley, 1st edition, February 2014. + +   [Silbersack2005] +              Silbersack, M., "Improving TCP/IP security through +              randomization without sacrificing interoperability", +              EuroBSDCon 2005 Conference, January 2005, +              <http://www.silby.com/eurobsdcon05/ +              eurobsdcon_silbersack.pdf>. + +   [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>. + +Acknowledgements + +   The authors would like to thank (in alphabetical order) Bernard +   Aboba, Brian Carpenter, Roman Danyliw, Theo de Raadt, Lars Eggert, +   Russ Housley, Benjamin Kaduk, Charlie Kaufman, Erik Kline, Alvaro +   Retana, Joe Touch, Michael Tüxen, Robert Wilton, and Paul Wouters for +   providing valuable comments on draft versions of this document. + +   The authors would like to thank (in alphabetical order) Steven +   Bellovin, Joseph Lorenzo Hall, and Gre Norcie for providing valuable +   comments on [PREDICTABLE-NUMERIC-IDS], on which the present document +   is based. + +   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 |