On Fri, 7 Jan 2011 14:53:02 -0800 Owen DeLong <o...@delong.com> wrote:
> > On Jan 7, 2011, at 1:28 PM, Mark Smith wrote: > > > On Fri, 7 Jan 2011 09:38:32 +0000 > > "Dobbins, Roland" <rdobb...@arbor.net> wrote: > > > >> > >> On Jan 7, 2011, at 4:14 PM, Mark Smith wrote: > >> > >>> Doesn't this risk already exist in IPv4? > >> > >> > >> There are various vendor knobs/features to ameliorate ARP-level issues in > >> switching gear. Those same knobs aren't viable in IPv6 due to the way > >> ND/NS work, > > > > I was commenting on the mentality the OP seemed to be > > expressing, about *both* onlink and off link sources triggering address > > resolution for lots of non-existent destinations, and that this was a > > new and unacceptable threat. I think the offlink risk is a > > far more significant one. I think the onlink risk pretty much no worse > > than any of the other things that LAN attached devices can do if they > > choose to. > > > >> and as you mention, the ND stuff is layer-3-routable. > >> > > > > The issue isn't that ND is layer 3 routable - it isn't unless a router > > implementation is broken. The problem is that somebody on the Internet > > could send 1000s of UDP packets (i.e. an offlink traffic source) > > towards destinations that don't exist on the target subnet. The > > upstream router will then perform address resolution, sending ND NSes > > for those unknown destinations, and while waiting to see if ND NAs are > > returned, will maintain state for each outstanding ND NS. This state is > > what is exploitable remotely, unless the state table size is large > > enough to hold all possible outstanding ND NA entries for all possible > > addresses on the target subnet. > > > > I think this problem can be avoided by getting rid of this offlink > > traffic triggered address resolution state. The purpose of the state > > (from the Neighbor Discovery RFC) is two fold - > > > > - to allow the ND NS to be resent up to two times if no ND NA response > > is received to ND NSes. A number of triggering packets (e.g. UDP > > ones or TCP SYNs) are queued as well so that they can be resent if and > > when ND NS/NA completes. > > > > - to allow ICMP destination unreachables to be generated if the ND > > NS/NA transaction fails, even after resending. > > > > I think it is acceptable to compromise on these requirements. > > I'm inclined to agree with you, but... > > I think it might also make sense to eliminate the ND NS/NA transaction > altogether for addresses that do not begin with xxxx:xxxx:xxxx:xxxx:000x. > In other words, for non SLAAC addresses, we need the ND NS/NA > process (even if we do it stateless which isn't an entirely bad idea), > but, for SLAAC addresses, the MAC is embedded in the IP address, > so, why not just use that? > I think then you'd only be able to avoid the issue by maintaining "MAC/SLAAC" only segments, with no stateful DHCPv6, privacy address or static addressed nodes, so that (stateful or stateless) ND NS/NA could be disabled. While it would work for those types of nodes, it wouldn't restore the properties we'd have to give up for the stateless ND NS/NA idea, as they need state to be performed, regardless of the destination address type. I think there are a variety of valid and legitimate reasons to preserve the ability to have different layer 3 and layer 2 node addresses, rather than 1-to-1 mapping them. Therefore I think an ideal solution to this problem solves it for all cases, rather than having different solutions or mitigations for different situations. With your suggestion, in theory a solution would now exist for point-to-point links via /127 configured prefix lengths and for "MAC/SLAAC" only LAN segments. Neither of those solutions can be used for stateful DHCPv6 segments, or segments where privacy addresses are useful and could be used - so we'd only be at 2 out of (at least) 4 situations to mitigate it. I think when you start going down the path of creating a number of different special cases with fairly different methods of addressing them, it is worth sitting back and saying is there a single general solution that will cover all cases. That is what has been done in IPv6 with ND address resolution, rather than having link specific methods of configuring and/or discovering IPv6 addresses (e.g. in IPv4 IPCP, ARP etc.), so if there is a solution that can be applied within ND address resolution, it automatically applies to all existing and future link types that IPv6 operates over. Regards, Mark.