Network Working Group G. Nakibly Internet-Draft National EW Research & Updates: 3056, 5214 Simulation Center (if approved) F. Templin, Ed. Intended status: Informational Boeing Research & Technology Expires: August 5, 2010 February 1, 2010 Routing Loops using ISATAP and 6to4: Problem Statement and Proposed Solutions draft-nakibly-v6ops-tunnel-loops-01.txt Abstract This document is concerned with security vulnerabilities in the ISATAP and 6to4 tunnels. These vulnerabilities allow an attacker to take advantage of inconsistencies between a tunnel's overlay IPv6 routing state and the native IPv6 routing state. The attacks form routing loops which can be abused as a vehicle for traffic amplification to facilitate DoS attacks. We describe these security vulnerabilities and the attacks which exploit them. We further recommend on solutions to remove the vulnerabilities. Status of this Memo This Internet-Draft is submitted to IETF in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. 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." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on August 5, 2010. Copyright Notice Nakibly & Templin Expires August 5, 2010 [Page 1] Internet-Draft ISATAP and 6to4 Routing Loops February 2010 Copyright (c) 2010 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 (http://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 the Trust Legal Provisions and are provided without warranty as described in the BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Detailed Descriptions of the Attacks . . . . . . . . . . . . . 3 2.1. Attack #1: 6to4 Relay to ISATAP Router . . . . . . . . . . 4 2.2. Attack #2: ISATAP Router to 6to4 Relay . . . . . . . . . . 5 2.3. Attack #3: ISATAP Router to ISATAP Router . . . . . . . . 6 3. Recommended Solutions . . . . . . . . . . . . . . . . . . . . 7 3.1. Destination and Source Address Check . . . . . . . . . . . 7 3.1.1. Known IPv6 Prefix Check . . . . . . . . . . . . . . . 8 3.2. Neighbor Cache Check . . . . . . . . . . . . . . . . . . . 9 3.3. Known IPv4 Address Check . . . . . . . . . . . . . . . . . 11 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 5. Security Considerations . . . . . . . . . . . . . . . . . . . 12 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 12 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7.1. Normative References . . . . . . . . . . . . . . . . . . . 12 7.2. Informative References . . . . . . . . . . . . . . . . . . 12 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 12 Nakibly & Templin Expires August 5, 2010 [Page 2] Internet-Draft ISATAP and 6to4 Routing Loops February 2010 1. Introduction Recent research [USENIX09] has pointed out the existence of some security vulnerabilities in the design of the automatic tunnels ISATAP [RFC5214] and 6to4 [RFC3056]. These vulnerabilities allow a specially crafted packet to loop back and forth between ISATAP routers or 6to4 relays thereby overloading them. In automatic tunnels a packet's egress node's IPv4 address is computationally derived from the destination IPv6 address of the packet. This feature eliminates the need to keep an explicit routing table at the tunnel's end points. In particular, the end points do not have to be updated as peers join and leave the tunnel. In fact, the end points of an automatic tunnel do not know which other end points are currently part of the tunnel. However, all end points operate on the implicit assumption that once a packet arrives at the tunnel, its destination indeed is part of the tunnel. This assumption poses a security vulnerability since it may result in an inconsistency between a tunnel's overlay IPv6 routing state and the native IPv6 routing state there by allowing a routing loop to be formed. An attacker can exploit this vulnerability by crafting a packet which is routed over a tunnel to a node that is not participating in that tunnel. This node may forward the packet out of the tunnel to a native IPv6 network. In that network, the packet is routed back to the ingress point that forwards it back into the tunnel. Consequently, the packet will loop in and out of the tunnel. A loop terminates only when the Hop Limit field in the IPv6 header of the packet is zeroed out. The maximum value that can be assigned to this field is 255. Note that when the packet is tunneled over IPv4 routers, the Hop Limit does not decrease. Every attack packet will traverse each hop along the loop 255/N times, where N is the number of IPv6 routers on the loop. As a result, the loops can be used as traffic amplification tools with a ratio of 255/N. The number of IPv6 routers on the loop is determined by the positions of the two victims. The closer the two victims are, the larger the amplification ratio will be. 2. Detailed Descriptions of the Attacks For the sake of completeness, this section details the three attacks from [USENIX09] that exemplify how the security vulnerability described above may be exploited. Nakibly & Templin Expires August 5, 2010 [Page 3] Internet-Draft ISATAP and 6to4 Routing Loops February 2010 2.1. Attack #1: 6to4 Relay to ISATAP Router The two victims of this attack are a 6to4 relay and an ISATAP router. Let IPa and IPb denote the IPv4 address of the ISATAP router and the 6to4 relay, respectively. Let Prfa denote the IPv6 64-bit prefix of the ISATAP tunnel. The attack is depicted in Figure Figure 1. It is initiated by sending an IPv6 packet (packet 0 in Figure Figure 1) to a 6to4 destination address with an embedded router address of IPa, i.e., the destination address begins with 2002:IPa::/48. The source address of the packet is an ISATAP address with Prfa as the prefix and IPb as the embedded IPv4 address. As the destination address is 6to4, the packet will be routed over the IPv6 network to the closest 6to4 relay. The relay receives the packet through its IPv6 interface and processes it as a normal IPv6 packet that needs to be delivered to the appropriate 6to4 site. Hence, the packet is forwarded over the relay's IPv4 interface with an IPv4 header having a destination address derived from the IPv6 destination, i.e., IPa. The source address is the address of the 6to4 relay, IPb. The packet (packet 1 in Figure Figure 1.) is routed over the IPv4 network to the ISATAP router. The router receives the packet on its IPv4 interface. It processes the packet as a regular IPv4 packet that originates from one of the end points of the ISATAP tunnel. Since the IPv4 source address corresponds to the IPv6 source address, the packet will be decapsulated. Since the packet's IPv6 destination is outside the ISATAP tunnel, the packet will be forwarded onto the native IPv6 interface. The forwarded packet (packet 2 in Figure Figure 1.) is identical to the original attack packet. Hence, it will be routed back to the closest 6to4 relay, in which the loop will start again. ISATAP Router 6to4 Relay (IPa) (IPb) | | 0 | 1 |<------ |<===============| | 2 | |--------------->| | . | | . | 1 - IPv4: IPb --> IPa IPv6: Prfa::0200:5EFE:IPb --> 2002:IPa:* 0,2- IPv6: Prfa::0200:5EFE:IPb --> 2002:IPa:* Legend: ====> - tunneled IPv6, ---> - native IPv6 Figure 1: Attack #1: 6to4 Relay to ISATAP Router Nakibly & Templin Expires August 5, 2010 [Page 4] Internet-Draft ISATAP and 6to4 Routing Loops February 2010 2.2. Attack #2: ISATAP Router to 6to4 Relay The two victims in this attack are again a 6to4 relay and an ISATAP router, but here they have swapped roles. This time the ISATAP router accepts the attack packet and forwards it on its ISATAP tunnel to the 6to4 relay, which decapsulates it and forwards it back to the ISATAP router on the IPv6 network. Let IPa, IPa and Prfa be the same as above. The attack is depicted in Figure Figure 2. This attack is initiated by sending an IPv6 packet (packet 0 in Figure Figure 2) with a destination ISATAP address having Prfa as the prefix and IPb as the embedded IPv4 address. The source address of the packet is a 6to4 address with a router having the IPa address , i.e., the destination address begins with 2002:IPa::/48. The packet will be routed over the IPv6 network to the ISATAP router. The router receives the packet through its IPv6 interface and processes it as a normal IPv6 packet that needs to be delivered to the appropriate end point in the ISATAP tunnel. Hence, the packet is forwarded over the router's IPv4 interface with an IPv4 encapsulation having a destination address derived from the IPv6 destination , i.e., IPb. The source address is the address of the ISATAP router, IPa. The packet (packet 1 in Figure Figure 2) is routed over the IPv4 network to the 6to4 relay. The relay receives the packet on its IPv4 interface. It processes the packet as a normal IPv4 packet that originates from one of the end points of the 6to4 tunnel. Since the IPv4 source address corresponds to the IPv6 source address, the packet will be admitted and decapsulated. Since the packet's IPv6 destination is outside the 6to4 tunnel, the packet will be forwarded out on the native IPv6 interface. The forwarded packet (packet 2 in Figure Figure 2) is identical to the original attack packet. Hence, it will be routed back to the ISATAP router, in which the loop will start again. Nakibly & Templin Expires August 5, 2010 [Page 5] Internet-Draft ISATAP and 6to4 Routing Loops February 2010 ISATAP Router 6to4 Relay (IPa) (IPb) 0 | | ----->| 1 | |===============>| | 2 | |<---------------| | . | | . | 1 - IPv4: IPa --> IPb IPv6: 2002:IPa:* --> Prfa::0200:5EFE:IPb 0,2- IPv6: 2002:IPa:* --> Prfa::0200:5EFE:IPb Legend: ====> - tunneled IPv6, ---> - native IPv6 Figure 2: Attack #2: ISATAP Router to 6to4 Relay 2.3. Attack #3: ISATAP Router to ISATAP Router The two victims in this attack are two ISATAP routers -- router A and router B -- having addresses IPa and IPb, respectively. Let Prfa and Prfb be the prefixes of the ISATAP tunnels of router A and router B, respectively. Note that the two routers do not participate in the same ISATAP tunnel. However, they may reside at the same or different sites. The attack is depicted in Figure Figure 3. It is initiated by sending an IPv6 packet (packet 0 in Figure Figure 3) with a destination ISATAP address having Prfa as the prefix and IPb as the embedded IPv4 address. The source address of the packet is an ISATAP address having Prfb as the prefix and IPa as the embedded IPv4 address. The packet will be routed over the IPv6 network to router A. The router receives the packet through its IPv6 interface and processes it as a normal IPv6 packet that needs to be delivered to the appropriate end point of its ISATAP tunnel. The fact that the source address is also an ISATAP address does not matter here; the important thing is that the packet originated outside of the tunnel A. Hence, the packet is forwarded over the router's IPv4 interface with an IPv4 encapsulation having a destination address derived from the IPv6 destination , i.e., IPb. The source address is the address of the router A, IPa. The packet (marked with 1 in Figure Figure 3) is routed over the IPv4 network to router B. The router receives the packet on its IPv4 interface. It processes the packet as a regular IPv4 packet that originates from one of the end points of its tunnel. Since the IPv4 source address corresponds to the IPv6 source address, the packet will be decapsulated. The packet's IPv6 destination is outside of router B's tunnel; hence the packet is forwarded out onto the IPv6 interface. The forwarded packet (packet 2 in Figure Figure 3) is identical to the original attack packet. Hence, it will Nakibly & Templin Expires August 5, 2010 [Page 6] Internet-Draft ISATAP and 6to4 Routing Loops February 2010 be routed back to router A, in which the loop will start again. The attack can also be launched on two ISATAP routers having private IPv4 addresses in th same IPv4 routing region. ISATAP Router ISATAP Router (IPa) (IPb) 0 | | ----->| 1 | |===============>| | 2 | |<---------------| | . | | . | 1 - IPv4: IPa --> IPb IPv6: Prfb::0200:5EFE:IPa --> Prfa::0200:5EFE:IPb 0,2- IPv6: Prfb::0200:5EFE:IPa --> Prfa::0200:5EFE:IPb Legend: ====> - tunneled IPv6, ---> - native IPv6 Figure 3: Attack #3: ISATAP Router to ISATAP Router 3. Recommended Solutions This section describes the recommended solutions that mitigate the attacks above. For each solution we shall discuss its advantages and disadvantages. 3.1. Destination and Source Address Check Tunnel routers can use a source address check mitigation when they forward an IPv6 packet into a tunnel interface with an IPv6 source address that embeds one of the router's configured IPv4 addresses. Similarly, tunnel routers can use a destination address check mitigation when they receive an IPv6 packet on a tunnel interface with an IPv6 destination address that embeds one of the router's configured IPv4 addresses. These checks should correspond to both tunnels' IPv6 address formats, regardless of the type of tunnel the router employs. For example, if tunnel router A (ISATAP router or 6to4 relay) forwards a packet into a tunnel interface with an IPv6 source address that matches the 6to4 prefix 2002:IPa::/48, the router discards the packet if IPa is one of its own IPv4 addresses. In a second example, if tunnel router B (ISATAP router or 6to4 relay) receives an IPv6 packet on a tunnel interface with an IPv6 destination address that Nakibly & Templin Expires August 5, 2010 [Page 7] Internet-Draft ISATAP and 6to4 Routing Loops February 2010 matches the ISATAP address suffix ::0200:5EFE:IPb, the router discards the packet if IPb is one of its own IPv4 addresses. In both of these examples, the router can unambiguously check the addresses IPa and IPb since both are known to be public IPv4 addresses by definition of the 6to4 and ISATAP address formats. However, the router cannot perform the simple check if the embedded IPv4 address is a private one [RFC1918] since it is ambiguous in scope. This reservation is relevant only to attacks of type #3 (a loop between two ISATAP routers) since the other two types of attack involves a 6to4 tunnel which always embeds public IPv4 addresses. When a tunnel router (ISATAP, 6to4) has a way of knowing whether an embedded IPv4 address is one of its own addresses, it can avoid the routing loop attack scenarios depicted in Figures 1, 2 and 3 by performing the following simple checks: o When the router forwards an IPv6 packet into a tunnel interface, it discards the packet if the IPv6 source address is not one of the router's configured IPv6 addresses but embeds one of the router's configured IPv4 addresses. o When the router receives an IPv6 packet on a tunnel interface, it discards the packet if the IPv6 destination address is not one of the router's configured IPv6 addresses but embeds one of the router's configured IPv4 addresses. This approach can be employed by an ISATAP router or 6to4 relay. As noted above the router must perform the embedded IPv4 address inspections for both ISATAP and 6to4 IPv6 address formats even if the router does not implement one of those tunnels. This approach has the advantage that it is easy to implement and that no ancillary state is required, since checking is through static lookup in the lists of IPv4 and IPv6 addresses belonging to the router. As noted above, this simple approach alone cannot be used when the embedded IPv4 address in the ISATAP address is private, because the address may be legitimately allocated to another node in another routing region. To apply this check the router must first unambiguously determine the scope of the address. The following check serves this purpose. 3.1.1. Known IPv6 Prefix Check The known IPv6 prefix check is tied to the conceptual ISATAP link model. It observes that an ISATAP link spans a portion of a connected IPv4 routing region up to (but not beyond) the entire connected IPv4 routing region itself. For example, if there were no physical or logical segmentations (e.g., enterprise network border Nakibly & Templin Expires August 5, 2010 [Page 8] Internet-Draft ISATAP and 6to4 Routing Loops February 2010 gateways) the entire public IPv4 Internet would be spanned by a single ISATAP link. Similarly, a private IPv4 address routing region can be spanned by one or more ISATAP links that are distinct from the links that span other private IPv4 routing regions. Each IPv4 routing region can be segmented through logical or physical segmentation, e.g., through ip-proto-41 filters, firewalls, etc. In that case, each distinct segment is spanned by a distinct ISATAP link. As for any links, multiple distinct ISATAP links can be joined together by bridges or IPv6 routers. Each ISATAP link configures a set of IPv6 subnet prefixes, where each subnet prefix spans either the entire link or only a portion of the link. Therefore, if the router can determine the full list of IPv6 subnet prefixes assigned to ISATAP interfaces attached to the link, it can use the list to determine when static destination and source address checks are necessary. By keeping track of the list of IPv6 prefixes assigned to ISATAP interfaces connected to the link, an ISATAP router can perform the following checks on an ISATAP address which embeds a private IPv4 address: o When the ISATAP router forwards an IPv6 packet into an ISATAP interface with a source address that matches an IPv6 prefix in the on-link prefix list, it determines whether the packet should be discarded or forwarded by performing the source address check specified in Section 3.1. Otherwise, the router forwards the packet. o When the ISATAP router receives an IPv6 packet on an ISATAP interface with a destination address that matches an IPv6 prefix in the on-link prefix list, it determines whether the packet should be discarded or accepted by performing the destination address check specified in Section 3.1. Otherwise, the router accepts the packet. The disadvantage of this approach is the administrative overhead for maintaining the list of IPv6 subnet prefixes associated with an ISATAP link may become unwieldy should that list be long and/or frequently updated. 3.2. Neighbor Cache Check The neighbor cache check mitigation observes that the routing loop attack scenarios depicted in Figures 1, 2 and 3 specifically target the ISATAP IPv6 on-link subnet model. In this approach, hosts configure IPv6 addresses and assign IPv6 subnet prefixes on an ISATAP interface based on the Prefix Information Options included in the unicast Router Advertisement (RA) messages they receive from routers. Nakibly & Templin Expires August 5, 2010 [Page 9] Internet-Draft ISATAP and 6to4 Routing Loops February 2010 Moreover, ISATAP hosts must first send Router Solicitation (RS) messages to routers in order to elicit these RAs since the ISATAP link model is Non-Broadcast, Multiple Access (NBMA). Therefore, ISATAP routers can keep track of the hosts from which they have recently received RS messages by maintaining entries in their ISATAP interface neighbor cache that are keyed on the IPv6 unicast link- local source addresses received in the RS messages. The ISATAP router can then determine which hosts are willing participants in the ISATAP IPv6 on-link subnets. By keeping track of the hosts that have recently sent RS messages, an ISATAP router can perform the following simple checks: o When the ISATAP router forwards a packet into an ISATAP interface with an IPv6 destination address that matches a non-link-local prefix assigned to the interface and that embeds the IPv4 address IPa, it discards the packet if there is no corresponding neighbor cache entry for the interface keyed on an IPv6 unicast link-local address that embeds the IPv4 address IPa. o When the ISATAP router receives a packet on an ISATAP interface with an IPv6 source address that matches a non-link-local prefix assigned to the interface and embeds the IPv4 address IPb, it discards the packet if there is no corresponding neighbor cache entry for the interface keyed on an IPv6 unicast link-local address that embeds the IPv4 address IPb. This approach can only be employed by an ISATAP router. It has the advantage that the ISATAP router discards only those IPv6 packets that could cause the looping conditions, i.e., those packets with source and/or destination addresses taken from an ISATAP IPv6 on-link subnet prefix but for which no corresponding neighbor cache entry exists. In contrast, other approaches could in some cases discard IPv6 packets that pertain to legitimate communications. The approach is also easy to implement, and naturally leverages the relationship between the router's advertised prefix lifetimes and the interval between the host's successive RS transmissions according to the specifications in [RFC5214]. This approach requires the ISATAP router to maintain a neighbor cache with entries created or updated by the reception of ISATAP host RS messages. These entries must be retained for a duration that is at least as long as the router's advertised prefix lifetimes, i.e., even if the entries transition into the STALE state. This may require an implementation to adjust its garbage-collection interval for stale neighbor cache entries. The approach further requires that hosts perform the RS/RA exchanges specified in Section 8.3.4 of [RFC5214], i.e., the host-initiated RS/RA exchanges must be performed. Finally, Nakibly & Templin Expires August 5, 2010 [Page 10] Internet-Draft ISATAP and 6to4 Routing Loops February 2010 this approach assumes that the neighbor cache will remain coherent and not subject to malicious attack, which must be confirmed based on specific deployment scenarios. One possible way for an attacker to subvert the neighbor cache is to send false RS messages with a spoofed source address. 3.3. Known IPv4 Address Check The known IPv4 address check method observes that each on-link IPv6 subnet prefix on an ISATAP interface is configured over a limited set of IPv4 addresses, since each ISATAP Potential Router List will be used only by a finite set of hosts. Therefore, only those hosts configured from a subset of the IPv4 addresses in an IPv4 routing region are authorized to configure IPv6 addresses and subnet prefixes advertised by a given ISATAP router. By keeping track of the set of IPv4 addresses that are authorized to use an ISATAP on-link IPv6 subnet, an ISATAP router can perform the following simple checks: o When the ISATAP router forwards an IPv6 packet into an ISATAP interface with a destination address that matches a non-link-local prefix assigned to the interface and that embeds the IPv4 address IPa, it discards the packet if IPa does not belong to the list of IPv4 addresses over which the ISATAP on-link IPv6 subnet is configured. o When the ISATAP router receives an IPv6 packet on an ISATAP interface with a source address that matches a non-link-local prefix assigned to the interface and that embeds the IPv4 address IPb, it discards the packet if IPb does not belong to the list of IPv4 addresses over which the ISATAP on-link IPv6 subnet is configured. This approach can only be employed by an ISATAP router, and offers a close analogy to the neighbor cache check discussed in Section 3.2. Indeed, one possible interpretation of this approach is that the router should simply cache the IPv4 addresses of hosts that have sent it an RS message. In this interpretation, the only difference between this approach and the neighbor cache check discussed in Section 3.2 is the nature of the internal data structure used to store the IPv4 addresses, which is likely to be an implementation detail. Therefore, the same set of advantages and disadvantages as described in Section 3.2 apply. Alternatively, the ISATAP router could pre-configure a static list of known IPv4 host addresses. This list would be discovered through some unspecified means (e.g., manual configuration), and would serve as a "Potential Host List (PHL)" for the ISATAP interface. Nakibly & Templin Expires August 5, 2010 [Page 11] Internet-Draft ISATAP and 6to4 Routing Loops February 2010 4. IANA Considerations This document has no IANA considerations. 5. Security Considerations This document aims at mitigating routing loops which involves ISATAP routers and 6to4 relays. It contains various checks that aim to recognize and drop specific packets that have strong potential to cause a routing loop. These checks does not introduce new security threats. 6. Acknowledgments This work has benefited from discussions on the V6OPS, 6MAN and SECDIR mailing lists. Remi Despres and Christian Huitema are acknowledged for their contributions. 7. References 7.1. Normative References [RFC1918] Rekhter, Y., Moskowitz, R., Karrenberg, D., Groot, G., and E. Lear, "Address Allocation for Private Internets", BCP 5, RFC 1918, February 1996. [RFC3056] Carpenter, B. and K. Moore, "Connection of IPv6 Domains via IPv4 Clouds", RFC 3056, February 2001. [RFC5214] Templin, F., Gleeson, T., and D. Thaler, "Intra-Site Automatic Tunnel Addressing Protocol (ISATAP)", RFC 5214, March 2008. 7.2. Informative References [USENIX09] Nakibly, G. and M. Arov, "Routing Loop Attacks using IPv6 Tunnels", USENIX WOOT, August 2009. Nakibly & Templin Expires August 5, 2010 [Page 12] Internet-Draft ISATAP and 6to4 Routing Loops February 2010 Authors' Addresses Gabi Nakibly National EW Research & Simulation Center P.O. Box 2250 (630) Haifa 31021 Israel Email: gnakibly@yahoo.com Fred L. Templin (editor) Boeing Research & Technology P.O. Box 3707 MC 7L-49 Seattle, WA 98124 USA Email: fltemplin@acm.org Nakibly & Templin Expires August 5, 2010 [Page 13]