Hi Brian,

Many thanks for the time you took to do a thorough review, please see inline 
below with [PC].

Cheers,
Pablo.

-----Original Message-----
From: Brian Weis via Datatracker <nore...@ietf.org> 
Sent: jueves, 27 de agosto de 2020 5:14
To: sec...@ietf.org
Cc: draft-ietf-spring-srv6-network-programming....@ietf.org; spring@ietf.org; 
last-c...@ietf.org
Subject: Secdir last call review of 
draft-ietf-spring-srv6-network-programming-17

Reviewer: Brian Weis
Review result: Has Nits

This document is titled “SRv6 Network Programming”, which is attention 
grabbing. It fleshes out how Segment Routing routes IPv6 packets by Segment ID 
(SID), as well as defining the format of a SID for IPv6. The Introduction 
states, “An ingress node steers a packet through an ordered list of 
instructions, called segments.” When one considers this statement along with 
the document title, it’s apparent that network devices are indeed being given 
“instructions” in the programming sense, where each “instruction” is encoded in 
an IPv6 address.

An “instruction” (i.e., SRv6 SID) comprises a locator (which is used to route 
to a particular network device), and also directs the network device acting as 
the locator how to process the IPv6 packet. With the help of an IPv6 Segment 
Routing Header (SRH) header, a series of “instructions” can source route a 
packet through the network, where each network device acting as a locator 
learns how to handle the packet before possibly sending it on to the next SID 
(if any).

The encoding of an IPv6 address as an SRv6 SID includes a locator, a code 
indicating a certain function, and optionally arguments to that function. An 
initial set of codes (and their associated algorithms) is defined in this 
document. Most of the codes describe how the egress router should decapsulate 
the packet, with might include defining  which routing table the receiving 
router should look up after decapsulation.

The Security Considerations section points to the Security Considerations of 
the architecture document and the SRH document. Both documents focus on the 
fact that SRv6 is intended to be used within a single domain (e.g., provider
network) and discuss routing mitigations such as filtering external traffic 
appropriately. They seem to assume that the boundaries of the domain itself are 
inviolate such that the domain boundary devices are not subverted, and that 
there are no bad actors within the domain. These are common assumptions for 
service provider networks where Segment Routing is intended to be deployed.

However, it cannot be certain that all networks deploying Service Routing to be 
free of bad actors, and there will certainly be some benefit to a bad actor 
changing “instructions” encoded in IPv6 addresses. Perhaps there is opportunity 
for mischief in changing the routing table argument in an End.DT46, for 
example. Also, as other SRv6 functions are defined (e.g., packet inspection 
functions), it would be important to ensure that those SIDs are not modified to 
avoid or decrease the quality of those inspection functions.

[PC] Indeed, the assumption that a domain is free of bad actors is a common 
assumption for networks where SRv6 is intended to be deployed. The security 
section of RFC8754 does talk about these bad actor attacks (7.1) on such 
networks, and other types of attacks they can launch.

The SRH document does describe an HMAC TLV that is intended to mitigate these 
kinds of attacks. Since neither of the referenced documents Security 
Considerations mention it, it would be a good idea to describe here that there 
are threats to changing SIDs, and point out how to mitigate them with the HMAC 
TLV.

[PC] The HMAC TLV allows a segment endpoint node to "verify that the SRH 
applied to a packet was selected by an authorized party and to ensure that the 
segment list is not modified after generation."  We could call this out 
specifically in the security section.
<OLD>
Together, they describe the required security mechanisms
   that allow establishment of an SR domain of trust to operate
   SRv6-based services for internal traffic while preventing any
   external traffic from accessing or exploiting the SRv6-based
   services.  
</OLD>
<NEW>
Together, they describe the required security mechanisms
   that allow establishment of an SR domain of trust to operate
   SRv6-based services for internal traffic while preventing any
   external traffic from accessing or exploiting the SRv6-based
   services. Additionally, RFC8754 defines an HMAC TLV permitting nodes in the 
SR domain to verify that the SRH applied to a packet was selected by an 
authorized party and to ensure that the segment list is not modified after 
generation, providing further protection against bad actors within the SR 
domain.
</NEW>

Also, if I’m not mistaken, when there is just one SID then it is placed in the
IPv6 DA and there is no SRH header or HMAC TLV. 

[PC] The SRH MAY be included when there is just one SID if flags or TLVs are 
required (RFC8754 section 4.1 paragraph 1) so the HMAC TLV may be used in this 
case.

This is a general problem with ensuring that the DA on packets are not changed 
in transit, and one could use IPsec to mitigate that issue. It’s probably 
worthwhile mentioning something like that.


_______________________________________________
spring mailing list
spring@ietf.org
https://www.ietf.org/mailman/listinfo/spring

Reply via email to