linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] USB: input: powermate: fix oops with malicious USB descriptors
@ 2016-03-14 14:12 Josh Boyer
  2016-03-14 16:15 ` Greg Kroah-Hartman
  0 siblings, 1 reply; 6+ messages in thread
From: Josh Boyer @ 2016-03-14 14:12 UTC (permalink / raw)
  To: Dmitry Torokhov, Greg Kroah-Hartman
  Cc: linux-input, linux-usb, linux-kernel, stable

The powermate driver expects at least one valid USB endpoint in its
probe function.  If given malicious descriptors that specify 0 for
the number of endpoints, it will crash.  Validate the number of
endpoints on the interface before using them.

The full report for this issue can be found here:
http://seclists.org/bugtraq/2016/Mar/85

Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
---
 drivers/input/misc/powermate.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/input/misc/powermate.c b/drivers/input/misc/powermate.c
index 63b539d3daba..84909a12ff36 100644
--- a/drivers/input/misc/powermate.c
+++ b/drivers/input/misc/powermate.c
@@ -307,6 +307,9 @@ static int powermate_probe(struct usb_interface *intf, const struct usb_device_i
 	int error = -ENOMEM;
 
 	interface = intf->cur_altsetting;
+	if (interface->desc.bNumEndpoints < 1)
+		return -EINVAL;
+
 	endpoint = &interface->endpoint[0].desc;
 	if (!usb_endpoint_is_int_in(endpoint))
 		return -EIO;
-- 
2.5.0

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

* Re: [PATCH] USB: input: powermate: fix oops with malicious USB descriptors
  2016-03-14 14:12 [PATCH] USB: input: powermate: fix oops with malicious USB descriptors Josh Boyer
@ 2016-03-14 16:15 ` Greg Kroah-Hartman
  2016-03-14 16:33   ` Dmitry Torokhov
  2016-03-14 16:46   ` Josh Boyer
  0 siblings, 2 replies; 6+ messages in thread
From: Greg Kroah-Hartman @ 2016-03-14 16:15 UTC (permalink / raw)
  To: Josh Boyer; +Cc: Dmitry Torokhov, linux-input, linux-usb, linux-kernel, stable

On Mon, Mar 14, 2016 at 10:12:53AM -0400, Josh Boyer wrote:
> The powermate driver expects at least one valid USB endpoint in its
> probe function.  If given malicious descriptors that specify 0 for
> the number of endpoints, it will crash.  Validate the number of
> endpoints on the interface before using them.
> 
> The full report for this issue can be found here:
> http://seclists.org/bugtraq/2016/Mar/85
> 
> Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
> Cc: stable <stable@vger.kernel.org>
> Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
> ---
>  drivers/input/misc/powermate.c | 3 +++
>  1 file changed, 3 insertions(+)

I'll queue these up after 4.6-rc1 is out as the merge window is closed
right now, but we might want to think about a better way to handle this
type of thing in the USB core.  A way to keep from having to add checks
like this for every single driver, when the driver shouldn't even really
have their probe function called unless their expected endpoints are
going to be there.

I'll think about that over the next few weeks...

thanks,

greg k-h

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

* Re: [PATCH] USB: input: powermate: fix oops with malicious USB descriptors
  2016-03-14 16:15 ` Greg Kroah-Hartman
@ 2016-03-14 16:33   ` Dmitry Torokhov
  2016-03-14 16:46   ` Josh Boyer
  1 sibling, 0 replies; 6+ messages in thread
From: Dmitry Torokhov @ 2016-03-14 16:33 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Josh Boyer, linux-input, linux-usb, linux-kernel, stable

On Mon, Mar 14, 2016 at 09:15:48AM -0700, Greg Kroah-Hartman wrote:
> On Mon, Mar 14, 2016 at 10:12:53AM -0400, Josh Boyer wrote:
> > The powermate driver expects at least one valid USB endpoint in its
> > probe function.  If given malicious descriptors that specify 0 for
> > the number of endpoints, it will crash.  Validate the number of
> > endpoints on the interface before using them.
> > 
> > The full report for this issue can be found here:
> > http://seclists.org/bugtraq/2016/Mar/85
> > 
> > Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
> > Cc: stable <stable@vger.kernel.org>
> > Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
> > ---
> >  drivers/input/misc/powermate.c | 3 +++
> >  1 file changed, 3 insertions(+)
> 
> I'll queue these up after 4.6-rc1 is out as the merge window is closed
> right now, but we might want to think about a better way to handle this
> type of thing in the USB core.  A way to keep from having to add checks

I do not see any reason in holding it until after rc1, applied.

> like this for every single driver, when the driver shouldn't even really
> have their probe function called unless their expected endpoints are
> going to be there.

I had a patch where driver could declare minimal amount of endpoints it
expects to find, but you mentioned we need something more flexible...

Thanks.

-- 
Dmitry

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

* Re: [PATCH] USB: input: powermate: fix oops with malicious USB descriptors
  2016-03-14 16:15 ` Greg Kroah-Hartman
  2016-03-14 16:33   ` Dmitry Torokhov
@ 2016-03-14 16:46   ` Josh Boyer
  2016-03-14 16:48     ` Dmitry Torokhov
  2016-03-14 17:07     ` Greg Kroah-Hartman
  1 sibling, 2 replies; 6+ messages in thread
From: Josh Boyer @ 2016-03-14 16:46 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Josh Boyer, Dmitry Torokhov, linux-input, Linux USB Mailing List,
	Linux-Kernel@Vger. Kernel. Org, stable, Oliver Neukum

On Mon, Mar 14, 2016 at 12:15 PM, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
> On Mon, Mar 14, 2016 at 10:12:53AM -0400, Josh Boyer wrote:
>> The powermate driver expects at least one valid USB endpoint in its
>> probe function.  If given malicious descriptors that specify 0 for
>> the number of endpoints, it will crash.  Validate the number of
>> endpoints on the interface before using them.
>>
>> The full report for this issue can be found here:
>> http://seclists.org/bugtraq/2016/Mar/85
>>
>> Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
>> Cc: stable <stable@vger.kernel.org>
>> Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
>> ---
>>  drivers/input/misc/powermate.c | 3 +++
>>  1 file changed, 3 insertions(+)
>
> I'll queue these up after 4.6-rc1 is out as the merge window is closed
> right now, but we might want to think about a better way to handle this
> type of thing in the USB core.  A way to keep from having to add checks
> like this for every single driver, when the driver shouldn't even really
> have their probe function called unless their expected endpoints are
> going to be there.

I thought this discussion came up a while ago, when something very
similar was fixed in the whiteheat driver (commit cbb4be652d374).  I
can't find the thread at the moment, but I thought someone said this
had to be per-driver for some reason.  I'm more than happy to have a
core subsystem fix if it's possible.

> I'll think about that over the next few weeks...

I have something around 8 drivers with issues like this.  I think
Oliver (now CC'd) is working from the same set of bugs.  Should we
hold off on submitting individual fixes until later, or should we go
ahead and submit them?

josh

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

* Re: [PATCH] USB: input: powermate: fix oops with malicious USB descriptors
  2016-03-14 16:46   ` Josh Boyer
@ 2016-03-14 16:48     ` Dmitry Torokhov
  2016-03-14 17:07     ` Greg Kroah-Hartman
  1 sibling, 0 replies; 6+ messages in thread
From: Dmitry Torokhov @ 2016-03-14 16:48 UTC (permalink / raw)
  To: Josh Boyer
  Cc: Greg Kroah-Hartman, linux-input, Linux USB Mailing List,
	Linux-Kernel@Vger. Kernel. Org, stable, Oliver Neukum

On Mon, Mar 14, 2016 at 9:46 AM, Josh Boyer <jwboyer@fedoraproject.org> wrote:
> On Mon, Mar 14, 2016 at 12:15 PM, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
>> On Mon, Mar 14, 2016 at 10:12:53AM -0400, Josh Boyer wrote:
>>> The powermate driver expects at least one valid USB endpoint in its
>>> probe function.  If given malicious descriptors that specify 0 for
>>> the number of endpoints, it will crash.  Validate the number of
>>> endpoints on the interface before using them.
>>>
>>> The full report for this issue can be found here:
>>> http://seclists.org/bugtraq/2016/Mar/85
>>>
>>> Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
>>> Cc: stable <stable@vger.kernel.org>
>>> Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
>>> ---
>>>  drivers/input/misc/powermate.c | 3 +++
>>>  1 file changed, 3 insertions(+)
>>
>> I'll queue these up after 4.6-rc1 is out as the merge window is closed
>> right now, but we might want to think about a better way to handle this
>> type of thing in the USB core.  A way to keep from having to add checks
>> like this for every single driver, when the driver shouldn't even really
>> have their probe function called unless their expected endpoints are
>> going to be there.
>
> I thought this discussion came up a while ago, when something very
> similar was fixed in the whiteheat driver (commit cbb4be652d374).  I
> can't find the thread at the moment, but I thought someone said this
> had to be per-driver for some reason.  I'm more than happy to have a
> core subsystem fix if it's possible.
>
>> I'll think about that over the next few weeks...
>
> I have something around 8 drivers with issues like this.  I think
> Oliver (now CC'd) is working from the same set of bugs.  Should we
> hold off on submitting individual fixes until later, or should we go
> ahead and submit them?

I'll take input bits, there is no need to keep kernel oopsing while we
are working on a more general solution.

Thanks.

-- 
Dmitry

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

* Re: [PATCH] USB: input: powermate: fix oops with malicious USB descriptors
  2016-03-14 16:46   ` Josh Boyer
  2016-03-14 16:48     ` Dmitry Torokhov
@ 2016-03-14 17:07     ` Greg Kroah-Hartman
  1 sibling, 0 replies; 6+ messages in thread
From: Greg Kroah-Hartman @ 2016-03-14 17:07 UTC (permalink / raw)
  To: Josh Boyer
  Cc: Dmitry Torokhov, linux-input, Linux USB Mailing List,
	Linux-Kernel@Vger. Kernel. Org, stable, Oliver Neukum

On Mon, Mar 14, 2016 at 12:46:26PM -0400, Josh Boyer wrote:
> On Mon, Mar 14, 2016 at 12:15 PM, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> > On Mon, Mar 14, 2016 at 10:12:53AM -0400, Josh Boyer wrote:
> >> The powermate driver expects at least one valid USB endpoint in its
> >> probe function.  If given malicious descriptors that specify 0 for
> >> the number of endpoints, it will crash.  Validate the number of
> >> endpoints on the interface before using them.
> >>
> >> The full report for this issue can be found here:
> >> http://seclists.org/bugtraq/2016/Mar/85
> >>
> >> Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
> >> Cc: stable <stable@vger.kernel.org>
> >> Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
> >> ---
> >>  drivers/input/misc/powermate.c | 3 +++
> >>  1 file changed, 3 insertions(+)
> >
> > I'll queue these up after 4.6-rc1 is out as the merge window is closed
> > right now, but we might want to think about a better way to handle this
> > type of thing in the USB core.  A way to keep from having to add checks
> > like this for every single driver, when the driver shouldn't even really
> > have their probe function called unless their expected endpoints are
> > going to be there.
> 
> I thought this discussion came up a while ago, when something very
> similar was fixed in the whiteheat driver (commit cbb4be652d374).  I
> can't find the thread at the moment, but I thought someone said this
> had to be per-driver for some reason.  I'm more than happy to have a
> core subsystem fix if it's possible.
> 
> > I'll think about that over the next few weeks...
> 
> I have something around 8 drivers with issues like this.  I think
> Oliver (now CC'd) is working from the same set of bugs.  Should we
> hold off on submitting individual fixes until later, or should we go
> ahead and submit them?

Please submit them, that will give us a framework to be able to figure
out the specifics of what needs to be changed.

thanks,

greg k-h

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

end of thread, other threads:[~2016-03-14 17:07 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-14 14:12 [PATCH] USB: input: powermate: fix oops with malicious USB descriptors Josh Boyer
2016-03-14 16:15 ` Greg Kroah-Hartman
2016-03-14 16:33   ` Dmitry Torokhov
2016-03-14 16:46   ` Josh Boyer
2016-03-14 16:48     ` Dmitry Torokhov
2016-03-14 17:07     ` Greg Kroah-Hartman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).