[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20140728.184700.953380868397707799.davem@davemloft.net>
Date: Mon, 28 Jul 2014 18:47:00 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: eric.dumazet@...il.com
Cc: netdev@...r.kernel.org, jeffk@...unm.edu, crandall@...unm.edu,
torvalds@...ux-foundation.org, w@....eu, security@...nel.org,
hannes@...hat.com
Subject: Re: [PATCH v3 net] ip: make IP identifiers less predictable
From: Eric Dumazet <eric.dumazet@...il.com>
Date: Sat, 26 Jul 2014 08:58:10 +0200
> From: Eric Dumazet <edumazet@...gle.com>
>
> In "Counting Packets Sent Between Arbitrary Internet Hosts", Jeffrey and
> Jedidiah describe ways exploiting linux IP identifier generation to
> infer whether two machines are exchanging packets.
>
> With commit 73f156a6e8c1 ("inetpeer: get rid of ip_id_count"), we
> changed IP id generation, but this does not really prevent this
> side-channel technique.
>
> This patch adds a random amount of perturbation so that IP identifiers
> for a given destination [1] are no longer monotonically increasing after
> an idle period.
>
> Note that prandom_u32_max(1) returns 0, so if generator is used at most
> once per jiffy, this patch inserts no hole in the ID suite and do not
> increase collision probability.
>
> This is jiffies based, so in the worst case (HZ=1000), the id can
> rollover after ~65 seconds of idle time, which should be fine.
>
> We also change the hash used in __ip_select_ident() to not only hash
> on daddr, but also saddr and protocol, so that ICMP probes can not be
> used to infer information for other protocols.
>
> For IPv6, adds saddr into the hash as well, but not nexthdr.
>
> If I ping the patched target, we can see ID are now hard to predict.
...
> [1] TCP sessions uses a per flow ID generator not changed by this patch.
>
> Signed-off-by: Eric Dumazet <edumazet@...gle.com>
> Reported-by: Jeffrey Knockel <jeffk@...unm.edu>
> Reported-by: Jedidiah R. Crandall <crandall@...unm.edu>
Applied and queued up for -stable, thanks everyone.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists