From 9678bba6586cdfe681cc809b3f4627d11473c23d Mon Sep 17 00:00:00 2001 From: Andreas Wellving Date: Fri, 26 Oct 2018 13:55:59 +0200 Subject: Bluetooth: CVE-2018-9363 Bluetooth: hidp: buffer overflow in hidp_process_report Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.9.y&id=7c7940ffbaefdbb189f78a48b4e64b6f268b1dbf Change-Id: Iae82c91e3bf742713e2feaf01abf1554b762ec72 Signed-off-by: Andreas Wellving --- patches/cve/4.9.x.scc | 3 ++ ...idp-buffer-overflow-in-hidp_process_repor.patch | 53 ++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 patches/cve/CVE-2018-9363-Bluetooth-hidp-buffer-overflow-in-hidp_process_repor.patch diff --git a/patches/cve/4.9.x.scc b/patches/cve/4.9.x.scc index 10999ce..7aec14a 100644 --- a/patches/cve/4.9.x.scc +++ b/patches/cve/4.9.x.scc @@ -27,3 +27,6 @@ SRC_URI += "file://CVE-2018-10902-ALSA-rawmidi-Change-resized-buffers-atomically #CVEs fixed in 4.9.116: SRC_URI += "file://CVE-2018-5390-tcp-free-batches-of-packets-in-tcp_prune_ofo_queue.patch" + +#CVEs fixed in 4.9.121: +SRC_URI += "file://CVE-2018-9363-Bluetooth-hidp-buffer-overflow-in-hidp_process_repor.patch" diff --git a/patches/cve/CVE-2018-9363-Bluetooth-hidp-buffer-overflow-in-hidp_process_repor.patch b/patches/cve/CVE-2018-9363-Bluetooth-hidp-buffer-overflow-in-hidp_process_repor.patch new file mode 100644 index 0000000..d0b1d92 --- /dev/null +++ b/patches/cve/CVE-2018-9363-Bluetooth-hidp-buffer-overflow-in-hidp_process_repor.patch @@ -0,0 +1,53 @@ +From 7c7940ffbaefdbb189f78a48b4e64b6f268b1dbf Mon Sep 17 00:00:00 2001 +From: Mark Salyzyn +Date: Tue, 31 Jul 2018 15:02:13 -0700 +Subject: [PATCH] Bluetooth: hidp: buffer overflow in hidp_process_report + +commit 7992c18810e568b95c869b227137a2215702a805 upstream. + +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. + +CVE: CVE-2018-9363 +Upstream-Status: Backport [https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.9.y&id=7c7940ffbaefdbb189f78a48b4e64b6f268b1dbf] + +Signed-off-by: Mark Salyzyn +Fixes: a4b1b5877b514b276f0f31efe02388a9c2836728 ("HID: Bluetooth: hidp: make sure input buffers are big enough") +Cc: Marcel Holtmann +Cc: Johan Hedberg +Cc: "David S. Miller" +Cc: Kees Cook +Cc: Benjamin Tissoires +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 +Acked-by: Kees Cook +Signed-off-by: Marcel Holtmann +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Andreas Wellving +--- + 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 1fc076420d1e..1811f8e7ddf4 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; + + -- cgit v1.2.3-54-g00ecf