6MAN Working Group D. Mudric Internet-Draft Ciena Updates: RFC5014, RFC6724 (if approved) A. Petrescu Intended status: Standards Track CEA, LIST Expires: May 18, 2021 November 14, 2020 Least-Common Scope Communications draft-mudric-6man-lcs-02 Abstract This draft formulates a security problem statement. The problem arises when a Host uses its Global Unicast Address (GUA) to communicate with another Host situated on the same link. To address this problem, we suggest to select and use addresses of a least scope that are common. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on May 18, 2021. Copyright Notice Copyright (c) 2020 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 Simplified BSD License text as described in Section 4.e of Mudric & Petrescu Expires May 18, 2021 [Page 1] Internet-Draft Least Common Scope November 2020 the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 2 3. Least Common Scope Communications . . . . . . . . . . . . . . 3 4. LL Address Resolution . . . . . . . . . . . . . . . . . . . . 3 5. Sending algorithm with LL Address . . . . . . . . . . . . . . 7 6. Other Issues with LL Address Resolution . . . . . . . . . . . 8 7. Security Considerations . . . . . . . . . . . . . . . . . . . 8 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 8 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 11. Normative References . . . . . . . . . . . . . . . . . . . . 9 Appendix A. ChangeLog . . . . . . . . . . . . . . . . . . . . . 9 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 1. Terminology The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. 2. Problem Statement Sockets listening on a global addresses are exposed to attacks. RFC6724 Rule 8 selects a candidate address with the smallest scope. Applications don't always have LL candidate address. They usually have a GUA address. If GUA is on a local link, an application will open a socket using GUA. To avoid using GUA on the local link, a sender needs to find a destination LL address. Currently SASA algorithm (RFC 6724 "Default Address Selection for Internet Protocol Version 6 (IPv6)") cannot use the smallest common scope, given destination GUA. For security reasons, hosts should use an address with the smallest scope. To avoid these attacks, the host should use LL or ULA addresses. These security reasons, in more detail, are described next. There is a security problem when a Host uses (one of) its Global Unicast Address(es) (GUA) to communicate to another Host situated on the same link. The problem appears even if that second Host uses its link- local address (LL) for this communication. Mudric & Petrescu Expires May 18, 2021 [Page 2] Internet-Draft Least Common Scope November 2020 The problem is that the Host that uses the GUA to actively communicate with another Host situated on the same link opens a globally reachable entry point in its operating system kernel. This entry point appears when the GUA is assigned to a socket structure. Were that address an LL, and not a GUA, that entry would not be globally reachable. To realize communications between Hosts on the same link, it is sufficient to rather use LL addresses on both Hosts. When a Host uses a GUA to communicate to another Host situated on the same link, it unnecessarily becomes an easy attack target. The attacker might be situated anywhere in the Internet (globally). 3. Least Common Scope Communications It is recommended that a Host that needs to communicate with another Host that is situated in a particular scope, to use addresses of same scope, or of the least common scope. For example, two Hosts situated on the same link should ideally use LL addresses to communicate to each other. An interpretation suggests that, given GUA and ULA, a least common 'scope' is the ULA scope (even though, formally, both ULA and GUA are of same global scope). But the global unicast addresses (GUAs) should not be used for two Hosts on the same link: the global scope is unnecessarily large; it unnecessarily opens doors to attacks. 4. LL Address Resolution The operation of resolving an LL address (LL address resolution) is to find the link-local address that is assigned to the same interface as a GUA (or an ULA). This operation can be realized in several manners. In one manner, the pair [GUA or ULA address; LL address] is stored in a distributed file such as the Active Directory or the DNS. The resolution operation is to query that file to find the LL address that corresponds to a GUA or ULA address. There are some issues to be considered. For example, typically the LL address is not assigned neither by DHCPv6 nor by RA (it is self formed by a Host when the interface is put up by using a universally known prefix "fe80::/10") then how would DNS get that LL address? Another example is: how to query DNS to request the LL address corresponding to an AAAA entry? (it is known how to query DNS to obtain the AAAA of an FQDN, but not the LL of an AAAA). Mudric & Petrescu Expires May 18, 2021 [Page 3] Internet-Draft Least Common Scope November 2020 In another manner, the operation of resolving a link-local address (LL address resolution) is performed within the context of selecting source and destination addresses within a Host. In that context, the following steps occur: 1. Given multiple destination addresses, the DASA selects GUA and ULA destination. The term 'DASA' designates the Destination Address Selection Algorithm. 2. The LL address resolution operation is performed for these GUA and ULA. 3. The GUA and the LL addresses are given as input to the SASA. The term 'SASA' stands for Source Address Selection Algorithm. The SASA selects LL. To facilitate LL communication on the local link, given a destination GUA or ULA: o Prior to SASA, a host needs to check if a destination is ON-LINK o for ON-LINK destination, a host needs to resolve the GUA or ULA destination address into a destination host LL address, o a socket needs to open a port for the source LL address, and o send packets to the destination LL address. If both GUA and ULA destinations are known, and ULA destination is not on the link, SASA SHOULD use ULA address. For the purposes of this document, Link Local (LL) address resolution is the process through which a host determines the Link Local address of a neighbor which is on the local subnet, given only neighbor's GUA or ULA IPv6 address (this 'address resolution' term is different than typical 'ND' term, or than the RFC4861 'address resolution' term which resolves an IP address into a MAC address). LL address resolution is performed only on addresses that are determined to be on-link and for which the sender does not know the corresponding Link Local address. Once the target LL address is learned, the communication sockets use LL addresses and are not exposed to security attacks. For LL address resolution, 'L' flag is added to NS message. The Target-Address, TA, field in the NS message contains the address of the target of the solicitation (e.g., a host GUA or ULA address). The 'L' flag is added to Neighbor Solicitation Message, for LL address request Mudric & Petrescu Expires May 18, 2021 [Page 4] Internet-Draft Least Common Scope November 2020 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |L| Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Target Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options ... +-+-+-+-+-+-+-+-+-+-+-+- IP Fields: Source Address If L bit is set, either LL address assigned to the interface from which this message is sent or (if Duplicate Address Detection is in progress [ADDRCONF rfc4861]) the unspecified address. Destination Address Either the solicited-node multicast address corresponding to the target GUA or ULA address, or the target GUA or ULA address. ICMP Fields: L Link Local flag. When set, the L-bit indicates that the sender is requesting Link Local address from the target. Figure 1: NS with 'L' bit After receiving the Neighbor Solicitation message, the target returns its Link Local address in the Target Link-Local Address Option in a unicast Neighbor Advertisement, NA, message. Mudric & Petrescu Expires May 18, 2021 [Page 5] Internet-Draft Least Common Scope November 2020 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |R|S|O| Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Target Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options ... +-+-+-+-+-+-+-+-+-+-+-+- IP Fields: Source Address If NS L bit is set, LL address of the same GUA target interface is provided Possible options: Target Link-Local address The Link Local address of the same GUA target, the sender of NA. This option MUST be included if NS L bit is set and LL is available. Type 4 (Target Link Local address) Length 16 bytes Link Local Address: e.g. fe80:0:0:0:aa:bb:cc:dd Receivers MUST silently ignore this option if they do not recognize it and continue processing the message. Figure 2: NA for LL address resolution The request for comments number 5014 [RFC5014], which treats about socket APIs, needs to be updated to use the given destination GUA or ULA addresses for ON-LINK determination, prior to SASA address selection; it also needs to be be updated to specify to send packets using LL address while talking to ON-LINK destinations. Mudric & Petrescu Expires May 18, 2021 [Page 6] Internet-Draft Least Common Scope November 2020 5. Sending algorithm with LL Address A sender application can choose to use LL for on-link communication. That request can be passed via a socket API to ND. ND should set NS 'L' bit to indicate the LL address resolution is required and use of LL for the on-link communication, if a destination host returns it. If a destination host is listening on GUA only for a particular application, and this algorithm is supported, the host should disable LL address resolution by not returning LL address in NA. By default, the LL address resolution should be disabled. Otherwise, a sender would send a packet to destination LL address and there is no socket listening on that address. LL address resolution should be enabled when all socket APIs are ready to support LL sockets (open one socket for GUA and one for LL and after LL address resolution, NA with LL is returned, close GUA socket) or all sockets are bound to ANY address. The process starts with an application requesting a socket to send a packet to GUA destination. First step is a destination address selection and the sequence goes to the LL address resolution, step 4: 1st: A sending application should have an option to request LL vs. GUA communication, when opening a socket to GUA destination, that might be on a local link. Socket API should have this option and use it to initiate LL address resolution. 2nd: Host should choose destination address, if multiple GUA and ULA are provided 3rd: Host should choose a source address, for the selected destination address 4th: Host should choose a next hop, and outgoing interface, based on the source address prefix 5th: If a destination is on-link, the host should resolve destination GUA into destination LL. Step 5 is further broken down into: 5.1st: Sender creates a neighbour cache entry for GUA. 5.2nd: Sender sends NS, with L bit set, to GUA. 5.3rd: Sender receives NA with link-layer and LL addresses 5.4th: Sender updates GUA cache entry with the link-layer address Mudric & Petrescu Expires May 18, 2021 [Page 7] Internet-Draft Least Common Scope November 2020 5.5th: Sender creates a neighbour cache entry for destination LL address and sets the destination link-layer address of the destination host 6th: Sender transmits a packet to link-layer address of the destination host, using destination host LL address as IPv6 packet destination address 7th: Application sending to GUA should obtain the SASA address (which is now LL address) for the further negotiations (e.g. SIP needs to negotiate media addresses by sending re-INVITE). 8th: Sender closes the socket listening on GUA and opens a socket listening on LL. 6. Other Issues with LL Address Resolution If the Host 'switches' the destination address of an ongoing flow, between the GUA and the LL, there might interruptions in communications. The 'switching' behaviour depends on the application. Some applications (e.g. a particular application using the SIP protocol) the destination address is selected prior to opening the socket dedicated to streaming the media data. In such an application, a hard outage (e.g. interface down), might involve the creation of a new socket, and thus interruptions in media streaming. The question of maintaining an ongoing communication upon 'switching' between a GUA and an LL destination address is valid, for certain applications. Multiple DNS aspects, for the resolution operation. Which LL address corresponds to a GUA?. How would DNS get that LL address? 7. Security Considerations Security 8. IANA Considerations IANA 9. Contributors Contributors. Mudric & Petrescu Expires May 18, 2021 [Page 8] Internet-Draft Least Common Scope November 2020 10. Acknowledgements Mark Smith, Eduard Vasilenko. 11. 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, . [RFC5014] Nordmark, E., Chakrabarti, S., and J. Laganier, "IPv6 Socket API for Source Address Selection", RFC 5014, DOI 10.17487/RFC5014, September 2007, . [RFC6724] Thaler, D., Ed., Draves, R., Matsumoto, A., and T. Chown, "Default Address Selection for Internet Protocol Version 6 (IPv6)", RFC 6724, DOI 10.17487/RFC6724, September 2012, . Appendix A. ChangeLog The changes are listed in reverse chronological order, most recent changes appearing at the top of the list. -00: initial version, with Dusan's comments. Authors' Addresses Dusan Mudric Ciena , Canada Phone: +1-613-670-2425 Email: dmudric@ciena.com Mudric & Petrescu Expires May 18, 2021 [Page 9] Internet-Draft Least Common Scope November 2020 Alexandre Petrescu CEA, LIST CEA Saclay Gif-sur-Yvette , Ile-de-France 91190 France Phone: +33169089223 Email: Alexandre.Petrescu@cea.fr Mudric & Petrescu Expires May 18, 2021 [Page 10]