Thread (5 messages) read the whole thread 5 messages, 4 authors, 2014-09-03

Re: [RFC] net: ipv4: drop unicast encapsulated in L2 multicast

From: Hannes Frederic Sowa <hidden>
Date: 2014-08-27 09:54:02
Also in: netdev

On Mi, 2014-08-27 at 11:05 +0200, Johannes Berg wrote:
On Wed, 2014-08-27 at 09:38 +0200, Hannes Frederic Sowa wrote:
quoted
quoted
And if it's *not* in the IPv6 RFCs, how should we implement this?
I haven't found anything, too. Should I bring this up with IETF?
I don't know if that's really useful? OTOH, there surely must have been
a reason for this to be in the IPv4 RFC, so maybe for that same reason
it should also be in the IPv6 RFC?
Either it is an oversight, but RFC6085 3) tries to at least clarify the
multicast destination with LL unicast address. So there must have been
people trying to enfore a relationship between LL address and IPv6 one.

I think it would be OK to drop it by default in case we don't break any
other assumptions in the stack (e.g. CLUSTERIP).
However, in our particular case, it's really meant only to close the
so-called "hole-196" vulnerability where rogue clients in your network
can abuse the GTK to do some attacks. Those attacks are also always
possible on non-managed ethernet segments, but those can be segregated
more easily by client than shared medium wireless.

This is only one building block for addressing the vulnerability. The
idea here was that in the wireless stack we already check

frame encrypted with GTK => must have multicast destination address

and in the IPv4 stack we can check

frame has multicast destination address => must have multicast/broadcast
IP addr

This would address this point.
Yes, I was in the room when we discussed this. ;) To me at that time it
seemed like an easy and good solution.
The question now is, in the absence of such a latter required check (and
indeed, in the case of CLUSTERIP), how we implement such a check.
Perhaps a sysctl is needed after all?
Yeah, unfortunate situation.

One could add those IP addresses as broadcast addresses (/32) to the
routing table, so the brd_input jump would be taken.

But this would still break users of CLUSTERIP until they install those
routes. :(

Bye,
Hannes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help