android_kernel_oneplus_msm8998/net
Eric Dumazet 491cd03f3b net/flow_dissector: switch to siphash
commit 55667441c84fa5e0911a0aac44fb059c15ba6da2 upstream.

UDP IPv6 packets auto flowlabels are using a 32bit secret
(static u32 hashrnd in net/core/flow_dissector.c) and
apply jhash() over fields known by the receivers.

Attackers can easily infer the 32bit secret and use this information
to identify a device and/or user, since this 32bit secret is only
set at boot time.

Really, using jhash() to generate cookies sent on the wire
is a serious security concern.

Trying to change the rol32(hash, 16) in ip6_make_flowlabel() would be
a dead end. Trying to periodically change the secret (like in sch_sfq.c)
could change paths taken in the network for long lived flows.

Let's switch to siphash, as we did in commit df453700e8d8
("inet: switch IP ID generator to siphash")

Using a cryptographically strong pseudo random function will solve this
privacy issue and more generally remove other weak points in the stack.

Packet schedulers using skb_get_hash_perturb() benefit from this change.

Fixes: b56774163f ("ipv6: Enable auto flow labels by default")
Fixes: 42240901f7 ("ipv6: Implement different admin modes for automatic flow labels")
Fixes: 67800f9b1f ("ipv6: Call skb_get_hash_flowi6 to get skb->hash in ip6_make_flowlabel")
Fixes: cb1ce2ef38 ("ipv6: Implement automatic flow label generation on transmit")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Jonathan Berger <jonathann1@walla.com>
Reported-by: Amit Klein <aksecurity@gmail.com>
Reported-by: Benny Pinkas <benny@pinkas.net>
Cc: Tom Herbert <tom@herbertland.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-11-10 11:21:14 +01:00
..
6lowpan
9p 9p/virtio: Add cleanup path in p9_virtio_init 2019-08-04 09:34:51 +02:00
802
8021q vlan: disable SIOCSHWTSTAMP in container 2019-05-16 19:45:17 +02:00
appletalk appletalk: enforce CAP_NET_RAW for raw sockets 2019-10-05 12:27:43 +02:00
atm net: atm: Fix potential Spectre v1 vulnerabilities 2019-04-27 09:33:59 +02:00
ax25 ax25: enforce CAP_NET_RAW for raw sockets 2019-10-05 12:27:43 +02:00
batman-adv batman-adv: fix for leaked TVLV handler. 2019-08-04 09:34:39 +02:00
bluetooth Revert "Bluetooth: validate BLE connection interval updates" 2019-10-05 12:27:36 +02:00
bridge bridge/mdb: remove wrong use of NLM_F_MULTI 2019-09-21 07:12:37 +02:00
caif
can can: purge socket error queue on sock destruct 2019-07-10 09:56:33 +02:00
ceph libceph: handle an empty authorize reply 2019-03-23 08:44:18 +01:00
core net/flow_dissector: switch to siphash 2019-11-10 11:21:14 +01:00
dcb
dccp inet: stop leaking jiffies on the wire 2019-11-10 11:21:13 +01:00
decnet
dns_resolver
dsa net: dsa: slave: Don't propagate flag changes on down slave interfaces 2019-02-20 10:13:15 +01:00
ethernet
hsr net/hsr: fix possible crash in add_timer() 2019-03-23 08:44:31 +01:00
ieee802154 ieee802154: enforce CAP_NET_RAW for raw sockets 2019-10-05 12:27:43 +02:00
ipv4 inet: stop leaking jiffies on the wire 2019-11-10 11:21:13 +01:00
ipv6 ipv6: drop incoming packets having a v4mapped source address 2019-10-07 21:01:04 +02:00
ipx
irda
iucv
key xfrm: clean up xfrm protocol checks 2019-09-16 08:13:35 +02:00
l2tp compat_ioctl: pppoe: fix PPPOEIOCSFWD handling 2019-08-11 12:20:46 +02:00
l3mdev
lapb lapb: fixed leak of control-blocks. 2019-06-22 08:18:25 +02:00
llc llc: fix sk_buff leak in llc_conn_service() 2019-11-06 12:09:22 +01:00
mac80211 mac80211: Reject malformed SSID elements 2019-10-29 09:13:27 +01:00
mac802154
mpls
netfilter netfilter: nf_conntrack_ftp: Fix debug output 2019-09-21 07:12:51 +02:00
netlabel
netlink
netrom netrom: hold sock when setting skb->destructor 2019-08-04 09:34:54 +02:00
nfc NFC: fix attrs checks in netlink interface 2019-10-07 21:01:07 +02:00
openvswitch openvswitch: change type of UPCALL_PID attribute to NLA_UNSPEC 2019-10-05 12:27:41 +02:00
packet af_packet: tone down the Tx-ring unsupported spew. 2019-09-16 08:13:36 +02:00
phonet phonet: fix building with clang 2019-03-23 08:44:34 +01:00
rds net/rds: Fix error handling in rds_ib_add_one() 2019-10-07 21:01:06 +02:00
rfkill
rose net: rose: fix a possible stack overflow 2019-04-03 06:23:25 +02:00
rxrpc
sched net/flow_dissector: switch to siphash 2019-11-10 11:21:14 +01:00
sctp inet: stop leaking jiffies on the wire 2019-11-10 11:21:13 +01:00
sunrpc sunrpc: don't mark uninitialised items as VALID. 2019-05-16 19:44:44 +02:00
switchdev
tipc tipc: add NULL pointer check before calling kfree_rcu 2019-09-21 07:12:41 +02:00
unix missing barriers in some of unix_sock ->addr and ->path accesses 2019-03-23 08:44:31 +01:00
vmw_vsock vsock: cope with memory allocation failure at socket creation time 2019-02-23 09:05:13 +01:00
wimax
wireless nl80211: fix validation of mesh path nexthop 2019-11-06 12:09:21 +01:00
x25 net/x25: fix a race in x25_bind() 2019-03-23 08:44:30 +01:00
xfrm xfrm: clean up xfrm protocol checks 2019-09-16 08:13:35 +02:00
compat.c
Kconfig
Makefile
socket.c sockfs: getxattr: Fail with -EOPNOTSUPP for invalid attribute names 2019-03-23 08:44:21 +01:00
sysctl_net.c