Message ID | 20180731220225.159741-1-salyzyn@android.com |
---|---|
State | Awaiting Upstream, archived |
Delegated to: | David Miller |
Headers | show |
Series | HID: Bluetooth: hidp: buffer overflow in hidp_process_report | expand |
On Tue, Jul 31, 2018 at 3:02 PM, Mark Salyzyn <salyzyn@android.com> wrote: > CVE-2018-9363 > > The buffer length is unsigned at all layers, but gets cast to int and > checked in hidp_process_report and can lead to a buffer overflow. > Switch len parameter to unsigned int to resolve issue. > > This affects 3.18 and newer kernels. > > Signed-off-by: Mark Salyzyn <salyzyn@android.com> > Fixes: a4b1b5877b514b276f0f31efe02388a9c2836728 ("HID: Bluetooth: hidp: make sure input buffers are big enough") nit: normally just first 12 of the sha is used. > Cc: Marcel Holtmann <marcel@holtmann.org> > Cc: Johan Hedberg <johan.hedberg@gmail.com> > Cc: "David S. Miller" <davem@davemloft.net> > Cc: Kees Cook <keescook@chromium.org> > Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com> > Cc: linux-bluetooth@vger.kernel.org > Cc: netdev@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Cc: security@kernel.org > Cc: kernel-team@android.com > --- > net/bluetooth/hidp/core.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c > index 1036e4fa1ea2..3bba8f4b08a9 100644 > --- a/net/bluetooth/hidp/core.c > +++ b/net/bluetooth/hidp/core.c > @@ -431,8 +431,8 @@ static void hidp_del_timer(struct hidp_session *session) > del_timer(&session->timer); > } > > -static void hidp_process_report(struct hidp_session *session, > - int type, const u8 *data, int len, int intr) > +static void hidp_process_report(struct hidp_session *session, int type, > + const u8 *data, unsigned int len, int intr) > { > if (len > HID_MAX_BUFFER_SIZE) > len = HID_MAX_BUFFER_SIZE; Acked-by: Kees Cook <keescook@chromium.org> Thanks! -Kees
Hi Mark, > CVE-2018-9363 > > The buffer length is unsigned at all layers, but gets cast to int and > checked in hidp_process_report and can lead to a buffer overflow. > Switch len parameter to unsigned int to resolve issue. > > This affects 3.18 and newer kernels. > > Signed-off-by: Mark Salyzyn <salyzyn@android.com> > Fixes: a4b1b5877b514b276f0f31efe02388a9c2836728 ("HID: Bluetooth: hidp: make sure input buffers are big enough") > Cc: Marcel Holtmann <marcel@holtmann.org> > Cc: Johan Hedberg <johan.hedberg@gmail.com> > Cc: "David S. Miller" <davem@davemloft.net> > Cc: Kees Cook <keescook@chromium.org> > Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com> > Cc: linux-bluetooth@vger.kernel.org > Cc: netdev@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Cc: security@kernel.org > Cc: kernel-team@android.com > --- > net/bluetooth/hidp/core.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) patch has been applied to bluetooth-next tree. Regards Marcel
On Tue, Jul 31, 2018 at 03:02:13PM -0700, Mark Salyzyn wrote: > CVE-2018-9363 > > The buffer length is unsigned at all layers, but gets cast to int and > checked in hidp_process_report and can lead to a buffer overflow. > Switch len parameter to unsigned int to resolve issue. > > This affects 3.18 and newer kernels. > > Signed-off-by: Mark Salyzyn <salyzyn@android.com> > Fixes: a4b1b5877b514b276f0f31efe02388a9c2836728 ("HID: Bluetooth: hidp: make sure input buffers are big enough") > Cc: Marcel Holtmann <marcel@holtmann.org> > Cc: Johan Hedberg <johan.hedberg@gmail.com> > Cc: "David S. Miller" <davem@davemloft.net> > Cc: Kees Cook <keescook@chromium.org> > Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com> > Cc: linux-bluetooth@vger.kernel.org > Cc: netdev@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Cc: security@kernel.org > Cc: kernel-team@android.com Nit, you only need to bother security@ if you do not have a fix and need to figure out one. Also, you forgot to cc: stable@vger.kernel.org to be included in older kernel releases :( thanks, greg k-h
On 08/01/2018 09:37 AM, Greg KH wrote: > On Tue, Jul 31, 2018 at 03:02:13PM -0700, Mark Salyzyn wrote: >> CVE-2018-9363 >> >> The buffer length is unsigned at all layers, but gets cast to int and >> checked in hidp_process_report and can lead to a buffer overflow. >> Switch len parameter to unsigned int to resolve issue. >> >> This affects 3.18 and newer kernels. >> >> Signed-off-by: Mark Salyzyn <salyzyn@android.com> >> Fixes: a4b1b5877b514b276f0f31efe02388a9c2836728 ("HID: Bluetooth: hidp: make sure input buffers are big enough") >> Cc: Marcel Holtmann <marcel@holtmann.org> >> Cc: Johan Hedberg <johan.hedberg@gmail.com> >> Cc: "David S. Miller" <davem@davemloft.net> >> Cc: Kees Cook <keescook@chromium.org> >> Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com> >> Cc: linux-bluetooth@vger.kernel.org >> Cc: netdev@vger.kernel.org >> Cc: linux-kernel@vger.kernel.org >> Cc: security@kernel.org >> Cc: kernel-team@android.com > Nit, you only need to bother security@ if you do not have a fix and need > to figure out one. Thanks, I thought anything with a CVE was to go there according to netdev FAQ (dropped security from response list). > Also, you forgot to cc: stable@vger.kernel.org to be included in older > kernel releases :( netdev FAQ said to _not_ copy stable, I am so confused ;-{ (added stable to response list b/c patch is now taken into bluetooth-next) > thanks, > > greg k-h
On Wed, Aug 01, 2018 at 09:41:04AM -0700, Mark Salyzyn wrote: > On 08/01/2018 09:37 AM, Greg KH wrote: > > On Tue, Jul 31, 2018 at 03:02:13PM -0700, Mark Salyzyn wrote: > > > CVE-2018-9363 > > > > > > The buffer length is unsigned at all layers, but gets cast to int and > > > checked in hidp_process_report and can lead to a buffer overflow. > > > Switch len parameter to unsigned int to resolve issue. > > > > > > This affects 3.18 and newer kernels. > > > > > > Signed-off-by: Mark Salyzyn <salyzyn@android.com> > > > Fixes: a4b1b5877b514b276f0f31efe02388a9c2836728 ("HID: Bluetooth: hidp: make sure input buffers are big enough") > > > Cc: Marcel Holtmann <marcel@holtmann.org> > > > Cc: Johan Hedberg <johan.hedberg@gmail.com> > > > Cc: "David S. Miller" <davem@davemloft.net> > > > Cc: Kees Cook <keescook@chromium.org> > > > Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com> > > > Cc: linux-bluetooth@vger.kernel.org > > > Cc: netdev@vger.kernel.org > > > Cc: linux-kernel@vger.kernel.org > > > Cc: security@kernel.org > > > Cc: kernel-team@android.com > > Nit, you only need to bother security@ if you do not have a fix and need > > to figure out one. > > Thanks, I thought anything with a CVE was to go there according to netdev > FAQ (dropped security from response list). > > Also, you forgot to cc: stable@vger.kernel.org to be included in older > > kernel releases :( > netdev FAQ said to _not_ copy stable, I am so confused ;-{ (added stable to > response list b/c patch is now taken into bluetooth-next) Ah, well, bluetooth is a bit not normal here, usually stuff that ends up in a subsystem tree before netdev needs to have a cc: stable on it for me to catch it. Hopefully the bluetooth maintainers are on it :) thanks, greg k-h
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c index 1036e4fa1ea2..3bba8f4b08a9 100644 --- a/net/bluetooth/hidp/core.c +++ b/net/bluetooth/hidp/core.c @@ -431,8 +431,8 @@ static void hidp_del_timer(struct hidp_session *session) del_timer(&session->timer); } -static void hidp_process_report(struct hidp_session *session, - int type, const u8 *data, int len, int intr) +static void hidp_process_report(struct hidp_session *session, int type, + const u8 *data, unsigned int len, int intr) { if (len > HID_MAX_BUFFER_SIZE) len = HID_MAX_BUFFER_SIZE;
CVE-2018-9363 The buffer length is unsigned at all layers, but gets cast to int and checked in hidp_process_report and can lead to a buffer overflow. Switch len parameter to unsigned int to resolve issue. This affects 3.18 and newer kernels. Signed-off-by: Mark Salyzyn <salyzyn@android.com> Fixes: a4b1b5877b514b276f0f31efe02388a9c2836728 ("HID: Bluetooth: hidp: make sure input buffers are big enough") Cc: Marcel Holtmann <marcel@holtmann.org> Cc: Johan Hedberg <johan.hedberg@gmail.com> Cc: "David S. Miller" <davem@davemloft.net> Cc: Kees Cook <keescook@chromium.org> Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com> Cc: linux-bluetooth@vger.kernel.org Cc: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: security@kernel.org Cc: kernel-team@android.com --- net/bluetooth/hidp/core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)