All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] nfc: af_nfc: Fix Spectre v1 vulnerability
@ 2018-12-21 21:47 Gustavo A. R. Silva
  2018-12-22 23:09 ` David Miller
  0 siblings, 1 reply; 6+ messages in thread
From: Gustavo A. R. Silva @ 2018-12-21 21:47 UTC (permalink / raw)
  To: Samuel Ortiz, David S. Miller
  Cc: linux-wireless, netdev, linux-kernel, Gustavo A. R. Silva

proto is indirectly controlled by user-space, hence leading to
a potential exploitation of the Spectre variant 1 vulnerability.

This issue was detected with the help of Smatch:

net/nfc/af_nfc.c:42 nfc_sock_create() warn: potential spectre issue 'proto_tab' [w] (local cap)

Fix this by sanitizing proto before using it to index proto_tab.

Notice that given that speculation windows are large, the policy is
to kill the speculation on the first load and not worry if it can be
completed with a dependent load/store [1].

[1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
 net/nfc/af_nfc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/net/nfc/af_nfc.c b/net/nfc/af_nfc.c
index d3e594eb36d0..256f3c57059e 100644
--- a/net/nfc/af_nfc.c
+++ b/net/nfc/af_nfc.c
@@ -21,6 +21,7 @@
 
 #include <linux/nfc.h>
 #include <linux/module.h>
+#include <linux/nospec.h>
 
 #include "nfc.h"
 
@@ -37,6 +38,7 @@ static int nfc_sock_create(struct net *net, struct socket *sock, int proto,
 
 	if (proto < 0 || proto >= NFC_SOCKPROTO_MAX)
 		return -EINVAL;
+	proto = array_index_nospec(proto, NFC_SOCKPROTO_MAX);
 
 	read_lock(&proto_tab_lock);
 	if (proto_tab[proto] &&	try_module_get(proto_tab[proto]->owner)) {
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] nfc: af_nfc: Fix Spectre v1 vulnerability
  2018-12-21 21:47 [PATCH] nfc: af_nfc: Fix Spectre v1 vulnerability Gustavo A. R. Silva
@ 2018-12-22 23:09 ` David Miller
  2018-12-22 23:37   ` Gustavo A. R. Silva
  0 siblings, 1 reply; 6+ messages in thread
From: David Miller @ 2018-12-22 23:09 UTC (permalink / raw)
  To: gustavo; +Cc: sameo, linux-wireless, netdev, linux-kernel

From: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
Date: Fri, 21 Dec 2018 15:47:53 -0600

> proto is indirectly controlled by user-space, hence leading to
> a potential exploitation of the Spectre variant 1 vulnerability.
> 
> This issue was detected with the help of Smatch:
> 
> net/nfc/af_nfc.c:42 nfc_sock_create() warn: potential spectre issue 'proto_tab' [w] (local cap)
> 
> Fix this by sanitizing proto before using it to index proto_tab.
> 
> Notice that given that speculation windows are large, the policy is
> to kill the speculation on the first load and not worry if it can be
> completed with a dependent load/store [1].
> 
> [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
> 
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>

I'll take this directly, and queued up for -stable.

Thanks.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] nfc: af_nfc: Fix Spectre v1 vulnerability
  2018-12-22 23:09 ` David Miller
@ 2018-12-22 23:37   ` Gustavo A. R. Silva
  2018-12-23  2:42     ` David Miller
  0 siblings, 1 reply; 6+ messages in thread
From: Gustavo A. R. Silva @ 2018-12-22 23:37 UTC (permalink / raw)
  To: David Miller; +Cc: sameo, linux-wireless, netdev, linux-kernel



On 12/22/18 5:09 PM, David Miller wrote:
> From: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
> Date: Fri, 21 Dec 2018 15:47:53 -0600
> 
>> proto is indirectly controlled by user-space, hence leading to
>> a potential exploitation of the Spectre variant 1 vulnerability.
>>
>> This issue was detected with the help of Smatch:
>>
>> net/nfc/af_nfc.c:42 nfc_sock_create() warn: potential spectre issue 'proto_tab' [w] (local cap)
>>
>> Fix this by sanitizing proto before using it to index proto_tab.
>>
>> Notice that given that speculation windows are large, the policy is
>> to kill the speculation on the first load and not worry if it can be
>> completed with a dependent load/store [1].
>>
>> [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
>>
>> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> 
> I'll take this directly, and queued up for -stable.
> 

Dave,

I wonder if you can take this one too:

https://lore.kernel.org/lkml/20181221212229.GA32635@embeddedor/

It's pretty similar to the af_nfc one.

Thanks
--
Gustavo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] nfc: af_nfc: Fix Spectre v1 vulnerability
  2018-12-22 23:37   ` Gustavo A. R. Silva
@ 2018-12-23  2:42     ` David Miller
  2018-12-23  3:03         ` Gustavo A. R. Silva
  0 siblings, 1 reply; 6+ messages in thread
From: David Miller @ 2018-12-23  2:42 UTC (permalink / raw)
  To: gustavo; +Cc: sameo, linux-wireless, netdev, linux-kernel

From: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
Date: Sat, 22 Dec 2018 17:37:35 -0600

> I wonder if you can take this one too:
> 
> https://lore.kernel.org/lkml/20181221212229.GA32635@embeddedor/
> 
> It's pretty similar to the af_nfc one.

Sure, done.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] nfc: af_nfc: Fix Spectre v1 vulnerability
@ 2018-12-23  3:03         ` Gustavo A. R. Silva
  0 siblings, 0 replies; 6+ messages in thread
From: Gustavo A. R. Silva @ 2018-12-23  3:03 UTC (permalink / raw)
  To: David Miller; +Cc: sameo, linux-wireless, netdev, linux-kernel



On 12/22/18 8:42 PM, David Miller wrote:
> From: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
> Date: Sat, 22 Dec 2018 17:37:35 -0600
> 
>> I wonder if you can take this one too:
>>
>> https://lore.kernel.org/lkml/20181221212229.GA32635@embeddedor/
>>
>> It's pretty similar to the af_nfc one.
> 
> Sure, done.
> 

Great. Thanks.
--
Gustavo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] nfc: af_nfc: Fix Spectre v1 vulnerability
@ 2018-12-23  3:03         ` Gustavo A. R. Silva
  0 siblings, 0 replies; 6+ messages in thread
From: Gustavo A. R. Silva @ 2018-12-23  3:03 UTC (permalink / raw)
  To: David Miller
  Cc: sameo-VuQAYsv1563Yd54FQh9/CA,
	linux-wireless-u79uwXL29TY76Z2rM5mHXA,
	netdev-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA



On 12/22/18 8:42 PM, David Miller wrote:
> From: "Gustavo A. R. Silva" <gustavo-L1vi/lXTdts+Va1GwOuvDg@public.gmane.org>
> Date: Sat, 22 Dec 2018 17:37:35 -0600
> 
>> I wonder if you can take this one too:
>>
>> https://lore.kernel.org/lkml/20181221212229.GA32635@embeddedor/
>>
>> It's pretty similar to the af_nfc one.
> 
> Sure, done.
> 

Great. Thanks.
--
Gustavo

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-12-23  3:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-21 21:47 [PATCH] nfc: af_nfc: Fix Spectre v1 vulnerability Gustavo A. R. Silva
2018-12-22 23:09 ` David Miller
2018-12-22 23:37   ` Gustavo A. R. Silva
2018-12-23  2:42     ` David Miller
2018-12-23  3:03       ` Gustavo A. R. Silva
2018-12-23  3:03         ` Gustavo A. R. Silva

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.