Subject: Re: [6lo] Roman Danyliw's Discuss on draft-ietf-6lo-backbone-router-16: (with DISCUSS)

From: "Pascal Thubert (pthubert)" <[email-masked]>
Date: Tue, 3 Mar 2020 16:03:14 +0000

Dear Roman and Benjamin

Many thanks for your reviews!

I took the liberty to merge your comments on section 11 in a single thread, since they have commonalities.
Also, I'll try to answer the questions with my own words as they come, and then propose a global change to section 11 at the end of the email.
The overall changes are posted as -1ç but you may use the copied text below to propose amendments / additions, I hope that all works for you.

https://www.ietf.org/rfcdiff?url2=draft-ietf-6lo-backbone-router-19

Please see below:

> 
> ----------------------------------------------------------------------
> DISCUSS (Roman):
> ----------------------------------------------------------------------
> 
> Section 11.  Can assumptions of the about the security properties of the links
> be clarified.
> 
> This specification applies to LLNs and a backbone in which the
>    individual links are protected against rogue access, e.g., by
>    authenticating a node that attaches to the network and encrypting at
>    the MAC layer the transmissions that may be overheard.  In
>    particular, the LLN MAC is required to provide secure unicast to/from
>    the Backbone Router and secure Broadcast from the Backbone Router in
>    a way that prevents tampering with or replaying the RA messages.
> 
> -- what are the specific assumptions about the protections that will be on the
> link.  Is the list of properties in the “e.g.” the full list?

For all I know it is the full list, let me remove the "e.g.,".  

Compiling this question with Benjamin's below I'd say that this work inherits from ND, which allows any node that can access the link to do anything, appear as a router,  source traffic and attract traffic. ND can also be used to DoS a network from a remote node by sending high volumes of packets, each to a different forged address, and each causing a temp state in the router and a broadcast on the fabric.

We interwork with that on the backbone, and the draft gives precedence to the legacy operation, meaning that a node that can attack ND can attack us in the exact same way.

I can add words to say that. RFC 4861 section 11.1 tells us to "keep the bad guys out or all bets are off", IOW, Woodstock. Section 11.2 has the hopeful thinking that SeND will be deployed, and we know it will not happen. For info, this only implementation that shipped that I'm aware of is the router side by our co-author Eric in Cisco's IOS. We are well placed to know it's doomed and very motivated to give another chance to securing ND. Which lead us to AP-ND.
And since ND does nothing for that, it means "do not let the bad guys access the network at L2" and "do not let the bad guys compromise any system on the network". I will not even try the Woodstock analogy there.

What changes:
- nodes that are attached to the LLN cannot attack that easily (if AP-ND is enforced) 
- we have nodes that are more sensitive than others (the 6BBR and 6LBR are new targets that can impact many nodes, note that the default router already was one, and anybody could impersonate it).
- when a policy enforces AP-ND to all nodes including the backbone then :
    * the increased security that we have on the LLN will also apply to the backbone (no impersonation or stealing address)
    * the complete list of addresses n the network will be known to the default router which will block the remote DoS attacks
    * DAD and Lookups will be fast and without multicast, which again will be a protection against some ND-based DoS attacks. 
    * DAD will work on Wi-Fi (arguably it does not today in a large conference like IETF)
    * L2 tables will be small and stable

> -- As the second sentence references the only the LLN MAC, using Figure 1
> and 2 as a reference (realizing they are non-normative), what’s expected
> properties of the links between the router-and-6BBR or IPv6 node-and-6BBR
> (i.e., the links connecting to the “backbone side”)?

This is typically (IOW always) a legacy ethernet link and the expectation has to be compatible with existing deployments and capabilities (Woodstock).
The registration is an attempt to migrate to a more zero-trusty behavior.

> 
> 
> ----------------------------------------------------------------------
> COMMENT: (Benjamin)
> ----------------------------------------------------------------------
>
> 
> We force a sequencing that has EDAR/EDAC occur before normal NS(DAD);
> does this provide a new DoS avenue by virtue of delaying the normal
> NS(DAD) procedure by (e.g.) dropping the EDAC messages?

I do not see a large opening since the unicast query is rapid. The node could have a short time out in the order of a few ms before it starts DADing. Which is negligible compared to the 1s (time x retries) DAD time out that plagues IPv6 over Wi-Fi in IEEE 802.11ai (Fast Link Setup, aka FILS) scenarios.
I see a DoS attack against the 6LBR, but that's common to any server like DNS or LISP MSMR, and the traditional methods apply.

> It might be worth a brief preface that since we're modifying the ND and DAD
> processes, the attacks in scope are basically limited to blocking discovery of
> taking over addresses from other nodes (which, to be fair, can in some cases
> have substantial consequences in terms of reading the "stolen" traffic!).

I had trouble parsing but after a night's sleep it appears that an s/of/or/ helps a lot. Point taken, this relates to the classical ND attacks on the backbone that cannot be defeated unless the registration is the only form of ND on the backbone. It seems relevant to point out the Woodstock approach in classical ND in the intro and indicate that we're subject to it by contagion on the backbone.

"

   This specification considers a special type of MLSN with a central
   backbone that federates edge (LLN) links, each Link providing its own
   protection against rogue access and tempering or replaying packets.
   In particular, the use of classical IPv6 ND on the backbone requires
   that the all nodes are trusted and that rogue access to the backbone
   is prevented at all times (see Section 11).

"

>    This specification applies to LLNs and a backbone in which the
>    individual links are protected against rogue access, e.g., by
>    authenticating a node that attaches to the network and encrypting at
>    the MAC layer the transmissions that may be overheard.  In
>    particular, the LLN MAC is required to provide secure unicast to/from
>    the Backbone Router and secure Broadcast from the Backbone Router in
>    a way that prevents tampering with or replaying the RA messages.
> 
> It seems like it would be worth stating these requirements/applicability
> statement much earlier in the document (possibly in addition to here), e.g., in
> the Introduction.

Incorporated in the above

> 
>    provide the proof-of-ownership.  A possible attack over the backbone
>    can be done by sending an NS with an EARO and expecting the NA(EARO)
>    back to contain the TID and ROVR fields of the existing state.  With
>    that information, the attacker can easily increase the TID and take
>    over the Binding.
> 
> The 6BBR can also perform such an attack, right?  It might be worth explicitly
> stating that we trust it to behave honestly in order for this stuff to work
> properly.

We trust any node on the backbone to behave honestly, that's the Woodstock.  In the 'what changes' text I need to mention the 6BBR and the 6LBR, as points of concentration which would naturally attract an attacker, because they are bottlenecks that see all of a particular type of traffic. But as look as classical ND is operated in the network, compromising any node is probably enough to perform any ND attack.

> 
> We could also discuss how things break if the "distributed database" of
> registrations gets out of sync across 6BBRs/etc..

Yes, I'll have a paragraph on that, bottom line is that a stale state will lose in a fight and disappear ultimately when there is none.
Still, a legacy node that does not understand EARO in NA may pick the old 6BBR even if the new one also responds.

> 
> How do things degrade if a secondary 6BBR "stands back" to let a primary
> handle a given message but the primary 6BBR has gone offline unbeknownst
> to the secondary?

Yes, text needed too. Not just in the security section. If the registering node loses a 6BBR,  it should reregister to another (that's an obvious), and if it is registered to multiple 6BBRs, it should refresh the other registrations with a new TID (text needed). We have no design for a registered node using multiple registering node, and that's worth mentioning too.

Proposed changes in 3.5.  Primary and Secondary 6BBRs

"
   A Registering Node MAY register the same address to more than one
   6BBR, in which case the Registering Node uses the same EARO in all
   the parallel registrations.  On the other hand, there is no provision
   in 6LoWPAN ND for a 6LN (acting as Registered Node) to select its
   6LBR (acting as Registering Node), so it cannot select more than one
   either.  To allow for this, ND(DAD) and NA messages with an EARO that
   indicate an identical Binding in another 6BBR (same Registered
   address, same TID, same ROVR) are silently ignored but for the
   purpose of selecting the primary 6BBR for that registration.

<...>

   If a Registering Node loses connectivity to its or one of the 6BBRs
   to which it registered an address, it retries the registration to the
   (one or more) available 6BBR(s).  When doing that, the Registering
   Node MUST increment the TID in order to force the migration of the
   state to the new 6BBR, and the reselection of the primary 6BBR if it
   is the node that was lost.
"

> 
> Are there any noteworthy scaling requirements to the bridging and routing
> proxy modes?  (I don't think so, and we just allude to "dimensioned for the
> number of registrations that each needs to support"
> in Appendix B, but it doesn't hurt to ask.)

Not really that I can figure, beyond the obvious that you mention.

Putting it all together there we go for the proposed section 11 update:

"
11.  Security Considerations

   This specification applies to LLNs and a backbone in which the
   individual links are protected against rogue access, by
   authenticating a node that attaches to the network and encrypting at
   the MAC layer the transmissions so packets may neither be overheard
   or nor forged.  In particular, the LLN MAC is required to provide
   secure unicast to/from the Backbone Router and secure broadcast from
   the routers in a way that prevents tampering with or replaying the ND
   messages.

   For the IPv6 ND operation over the backbone, and unless the classical
   ND is disabled (e.g., by configuration), the classical ND messages
   are interpreted as emitted by the address owner and have precedence
   over the 6BBR that is only a proxy.  It results that the security
   threats that are detailed in section 11.1 of [RFC4861] fully apply to
   this specification as well.  In very short:

   *  Any node that can send a packet on the backbone can take over any
      address including addresses of LLN nodes by claiming it with an NA
      message and the Override bit set.  This means that the real owner
      will stop receiving its packets.

   *  Any node that can send a packet on the backbone can forge traffic
      and pretend it is issued from a address that it does not own, even
      if it did not claim the address using ND.

   *  Any node that can send a packet on the backbone can present itself
      as a preferred router to intercept all traffic outgoing the
      subnet.  It may even expose a prefix on the subnet as not-on-link
      and intercept all the traffic within the subnet.

   *  If the rogue can receive a packet from the backbone it can also
      snoop all the intercepted traffic, be it by stealing an address or
      the role of a router.

   This means that any rogue access to the backbone must be prevented at
   all times, and that nodes that are attached to the backbone must be
   fully trusted / never compromised.

   Using address registration as the sole ND mechanism on a link and
   coupling it with [I-D.ietf-6lo-ap-nd] guarantees the ownership of a
   registered address within that link.  The protection is based on a
   proof-of-ownership encoded in the ROVR field and protects against
   address theft and impersonation by a 6LN, because the 6LR can
   challenge the Registered Node for a proof-of-ownership.

   The protection extends to the full LLN in the case of an LLN Link,
   but does not extend over the backbone since the 6BBR cannot provide
   the proof-of-ownership when it defends the address.

   A possible attack over the backbone can be done by sending an NS with
   an EARO and expecting the NA(EARO) back to contain the TID and ROVR
   fields of the existing state.  With that information, the attacker
   can easily increase the TID and take over the Binding.

   If the classical ND is disabled on the backbone and the use of
   [I-D.ietf-6lo-ap-nd] and a 6LBR are mandated, the network will
   benefit from the following new advantages:

   Zero-trust security for ND flows within the whole subnet:  the
      increased security that [I-D.ietf-6lo-ap-nd] provides on the LLN
      will also apply to the backbone; it becomes impossible for an
      attached node to claim an address that belongs to another node
      using ND, and the network can filter packets that are not
      originated by the owner of the source address (SAVI), as long as
      that the routers are known and trusted.

   Remote ND DoS attack avoidance:  the complete list of addresses in
      the network will be known to the 6LBR and available to the default
      router; with that information the router does not need to send a
      multicast NA(Lookup) in case of a Neighbor Cache miss for an
      incoming packet, which is a source of remote DoS attack against
      the network

   Less IPv6 ND-related multicast on the backbone:  DAD and NS(Lookup)
      become unicast queries to the 6LBR

   Better DAD operation on wireless:  DAD has been found to fail to
      detect duplications on large Wi-Fi infrastructures due to the
      unreliable broadcast operation on wireless; using a 6LBR enables a
      unicast lookup

   Less Layer-2 churn on the backbone:  Using the Routing Proxy
      approach, the Link-Layer address of the LLN devices and their
      mobility are not visible in the backbone; only the Link-Layer
      addresses of the 6BBR and backbone nodes are visible at Layer 2 on
      the backbone.  This is mandatory for LLNs that cannot be bridged
      on the backbone, and useful in any case to scale down, stabilize
      the forwarding tables at Layer 2 and avoid the gratuitous frames
      that are typically broadcasted to fix the transparent bridging
      tables when a wireless node roams from an AP to the next.

   This specification introduce a 6BBR that is a router on the path of
   the LLN traffic and a 6LBR that is used for the lookup.  They could
   be interesting targets for an attacker, but not more than a default
   router and a DHCP server, respectively, which already exist in
   classical networks, and can be defended using the same methods.

   A possible attack over the LLN can still be done by compromising a
   6LR.  A compromised 6LR may modify the ROVR of EDAR messages in
   flight and transfer the ownership of the Registered Address to itself
   or a tier.  It may also claim that a ROVR was validated when it
   really wasn't, and reattribute an address to self or to an attached
   6LN.  This means that 6LRs, as well as 6LBRs and 6BBRS must still be
   fully trusted / never compromised.

   This specification mandates to check on the 6LBR on the backbone
   before doing the classical DAD, in case the address already exists.
   This may delay the DAD operation and should be protected by a short
   timer, in the order of 100ms or less, which will only represent a
   small extra delay versus the 1s wait of the DAD operation.

"

---

From: Roman Danyliw <[email-masked]>
Date: Sun, 22 Mar 2020 01:00:06 +0000

Hi Pascal!

The new language in -19 looks good to me and addresses my feedback.  Thanks for making these updates.

Roman

-----Original Message-----
From: Pascal Thubert (pthubert) <[email-masked]> 
Sent: Tuesday, March 3, 2020 11:03 AM
To: Roman Danyliw <[email-masked]>; The IESG <[email-masked]>; Benjamin Kaduk <[email-masked]>
Cc: [email-masked]; Carles Gomez <[email-masked]>; Samita Chakrabarti <[email-masked]>; Shwetha Bhandari (shwethab) <[email-masked]>; [email-masked]; [email-masked]
Subject: RE: Roman Danyliw's Discuss on draft-ietf-6lo-backbone-router-16: (with DISCUSS)

Dear Roman and Benjamin

Please see below:

> Section 11.  Can assumptions of the about the security properties of 
> the links be clarified.
> 
> -- what are the specific assumptions about the protections that will 
> be on the link.  Is the list of properties in the “e.g.” the full list?

What changes:

"

"

"

<...>

"

"

---

From: "Pascal Thubert (pthubert)" <[email-masked]>
Date: Sun, 22 Mar 2020 09:14:33 +0000

Many thanks Roman!

> From: Roman Danyliw <[email-masked]>
> Sent: dimanche 22 mars 2020 02:00
> To: Pascal Thubert (pthubert) <[email-masked]>; The IESG
> <[email-masked]>; Benjamin Kaduk <[email-masked]>
> Cc: [email-masked]; Carles Gomez
> <[email-masked]>; Samita Chakrabarti <[email-masked]>;
> Shwetha Bhandari (shwethab) <[email-masked]>; [email-masked];
> [email-masked]
> Cc: [email-masked]; Carles Gomez
> <[email-masked]>; Samita Chakrabarti <[email-masked]>;
> Shwetha Bhandari (shwethab) <[email-masked]>; [email-masked];
> [email-masked]
> Also, I'll try to answer the questions with my own words as they come, and
> then propose a global change to section 11 at the end of the email.
> The overall changes are posted as -1ç but you may use the copied text below to
> propose amendments / additions, I hope that all works for you.
> 
> Compiling this question with Benjamin's below I'd say that this work inherits
> from ND, which allows any node that can access the link to do anything,
> appear as a router,  source traffic and attract traffic. ND can also be used to
> DoS a network from a remote node by sending high volumes of packets, each
> to a different forged address, and each causing a temp state in the router and a
> broadcast on the fabric.
> 
> We interwork with that on the backbone, and the draft gives precedence to the
> legacy operation, meaning that a node that can attack ND can attack us in the
> exact same way.
> 
> I can add words to say that. RFC 4861 section 11.1 tells us to "keep the bad
> guys out or all bets are off", IOW, Woodstock. Section 11.2 has the hopeful
> thinking that SeND will be deployed, and we know it will not happen. For info,
> this only implementation that shipped that I'm aware of is the router side by
> our co-author Eric in Cisco's IOS. We are well placed to know it's doomed and
> very motivated to give another chance to securing ND. Which lead us to AP-
> ND.
> And since ND does nothing for that, it means "do not let the bad guys access
> the network at L2" and "do not let the bad guys compromise any system on the
> network". I will not even try the Woodstock analogy there.
> 
> What changes:
> - we have nodes that are more sensitive than others (the 6BBR and 6LBR are
> new targets that can impact many nodes, note that the default router already
> was one, and anybody could impersonate it).
>     * the increased security that we have on the LLN will also apply to the
> backbone (no impersonation or stealing address)
>     * the complete list of addresses n the network will be known to the default
> router which will block the remote DoS attacks
>     * DAD and Lookups will be fast and without multicast, which again will be a
> protection against some ND-based DoS attacks.
> > -- As the second sentence references the only the LLN MAC, using
> > Figure 1 and 2 as a reference (realizing they are non-normative),
> > what’s expected properties of the links between the router-and-6BBR or
> > IPv6 node-and-6BBR (i.e., the links connecting to the “backbone side”)?
> 
> This is typically (IOW always) a legacy ethernet link and the expectation has to
> be compatible with existing deployments and capabilities (Woodstock).
> I do not see a large opening since the unicast query is rapid. The node could
> have a short time out in the order of a few ms before it starts DADing. Which is
> negligible compared to the 1s (time x retries) DAD time out that plagues IPv6
> over Wi-Fi in IEEE 802.11ai (Fast Link Setup, aka FILS) scenarios.
> I see a DoS attack against the 6LBR, but that's common to any server like DNS
> or LISP MSMR, and the traditional methods apply.
> 
> 
> > It might be worth a brief preface that since we're modifying the ND
> > and DAD processes, the attacks in scope are basically limited to
> > blocking discovery of taking over addresses from other nodes (which,
> > to be fair, can in some cases have substantial consequences in terms of
> reading the "stolen" traffic!).
> 
> I had trouble parsing but after a night's sleep it appears that an s/of/or/ helps a
> lot. Point taken, this relates to the classical ND attacks on the backbone that
> cannot be defeated unless the registration is the only form of ND on the
> backbone. It seems relevant to point out the Woodstock approach in classical
> ND in the intro and indicate that we're subject to it by contagion on the
> backbone.
> 
> "
> 
> > It seems like it would be worth stating these
> > requirements/applicability statement much earlier in the document
> > (possibly in addition to here), e.g., in the Introduction.
> 
> > The 6BBR can also perform such an attack, right?  It might be worth
> > explicitly stating that we trust it to behave honestly in order for
> > this stuff to work properly.
> 
> We trust any node on the backbone to behave honestly, that's the Woodstock.
> In the 'what changes' text I need to mention the 6BBR and the 6LBR, as points
> of concentration which would naturally attract an attacker, because they are
> bottlenecks that see all of a particular type of traffic. But as look as classical
> ND is operated in the network, compromising any node is probably enough to
> perform any ND attack.
> 
> >
> > We could also discuss how things break if the "distributed database"
> > of registrations gets out of sync across 6BBRs/etc..
> 
> Yes, I'll have a paragraph on that, bottom line is that a stale state will lose in a
> fight and disappear ultimately when there is none.
> > How do things degrade if a secondary 6BBR "stands back" to let a
> > primary handle a given message but the primary 6BBR has gone offline
> > unbeknownst to the secondary?
> 
> Yes, text needed too. Not just in the security section. If the registering node
> loses a 6BBR,  it should reregister to another (that's an obvious), and if it is
> registered to multiple 6BBRs, it should refresh the other registrations with a
> new TID (text needed). We have no design for a registered node using multiple
> registering node, and that's worth mentioning too.
> 
> > Are there any noteworthy scaling requirements to the bridging and
> > routing proxy modes?  (I don't think so, and we just allude to
> > "dimensioned for the number of registrations that each needs to support"

---

From: Benjamin Kaduk <[email-masked]>
Date: Sun, 22 Mar 2020 11:57:07 -0700

Hi Pascal,

This also looks good to me; I'll just leave a few minor comments here
before returning to the other thread.

> Subject: RE: Roman Danyliw's Discuss on draft-ietf-6lo-backbone-router-16: (with DISCUSS)
[...]
>    in 6LoWPAN ND for a 6LN (acting as Registered Node) to select its

I'm assuming that "6LoWPAN ND" here means "stuff currently published as
RFCs, excluding this document, AP-ND, etc."

>    either.  To allow for this, ND(DAD) and NA messages with an EARO that

(in particular with respect to "cannot select more than one".)

>    or nor forged.  In particular, the LLN MAC is required to provide

I think that the "authenticating a node that attaches [...]" is meant to
apply to the LLN links, and perhaps the backbone provides the protection
against rogue access by physical access protection?  Maybe we need two
clauses after the comma, e.g., "on the LLN by [...], and on the backbone by
[...]".

>    Zero-trust security for ND flows within the whole subnet:  the

(I'm tempted to try to work "non-router" in here somehow, but not sure it's
worth the effort.)

-Ben

---

From: "Pascal Thubert (pthubert)" <[email-masked]>
Date: Mon, 23 Mar 2020 10:17:43 +0000

Hello again Benjamin:

Just to make sure you're kept busy ; )

> RFCs, excluding this document, AP-ND, etc."

That is correct in -20 but AP-ND does not either. 

In the terminology section (2.4) we say

   6LoWPAN ND:  Neighbor Discovery Optimization for Low-Power and Lossy
      Networks [RFC6775] and "Registration Extensions for 6LoWPAN
      Neighbor Discovery" [RFC8505].

But then, I believe that it should include AP-ND.
Note that both this are in C310, held by the same docs

"
   6LoWPAN ND:  Neighbor Discovery Optimization for Low-Power and Lossy
      Networks [RFC6775], "Registration Extensions for 6LoWPAN Neighbor
      Discovery" [RFC8505], and " Address Protected Neighbor Discovery
      for Low-power and Lossy Networks" [I-D.ietf-6lo-ap-nd].
"
Note that AP-ND is mentioned several times later;  Is that OK? (more below)

> (in particular with respect to "cannot select more than one".)

I guess you're confused between 6LR and 6LBR. The 6LN can attached to multiple 6LRs but it is the 6LRs that select the 6LBR, not the 6LN.

Are we in sync?

> I think that the "authenticating a node that attaches [...]" is meant to apply to
> the LLN links, and perhaps the backbone provides the protection against rogue
> access by physical access protection?  Maybe we need two clauses after the
> comma, e.g., "on the LLN by [...], and on the backbone by [...]".

Yes, as discussed in the next block, the attacks on the backbone are a lot easier if backwards compatibility has to be maintained. There's the discussion on who should win when a legacy fights with an LLN node, the current text has the legacy win to enable a smooth incremental deployment.

Proposed change:
"
  This specification applies to LLNs and a backbone in which the
   individual links are protected against rogue access, on the LLN by
   authenticating a node that attaches to the network and encrypting at
   the MAC layer the transmissions, and on the backbone side using the
   physical security and access control measures that are typically
   applied there, so packets may neither be overheard or nor forged.

"

> (I'm tempted to try to work "non-router" in here somehow, but not sure it's

Sorry I'm not sure I see the point. The duplication may be with a router.

More answering your own review 😊

Pascal

---

From: Benjamin Kaduk <[email-masked]>
Date: Mon, 23 Mar 2020 20:27:00 -0700

> Note that AP-ND is mentioned several times later;  Is that OK? (more below)

I don't mind.  (But I'm not sure that I'm the best placed to comment...)

> I guess you're confused between 6LR and 6LBR. The 6LN can attached to multiple 6LRs but it is the 6LRs that select the 6LBR, not the 6LN.

Ah, I think you are right about my confusion.

> Are we in sync?

It looks like it.

>    applied there, so packets may neither be overheard or nor forged.

+1

> Sorry I'm not sure I see the point. The duplication may be with a router.

I can see why you were confused at this remark; it's ... pretty opaque!

I was reacting to "zero-trust security" -- we still have to trust the
routers to do the right thing, so my knee-jerk reaction is to not apply
"zero-trust" to them.

-Ben