[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2024102146-CVE-2022-48978-8a19@gregkh>
Date: Mon, 21 Oct 2024 22:06:10 +0200
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: CVE-2022-48978: HID: core: fix shift-out-of-bounds in hid_report_raw_event
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
HID: core: fix shift-out-of-bounds in hid_report_raw_event
Syzbot reported shift-out-of-bounds in hid_report_raw_event.
microsoft 0003:045E:07DA.0001: hid_field_extract() called with n (128) >
32! (swapper/0)
======================================================================
UBSAN: shift-out-of-bounds in drivers/hid/hid-core.c:1323:20
shift exponent 127 is too large for 32-bit type 'int'
CPU: 0 PID: 0 Comm: swapper/0 Not tainted
6.1.0-rc4-syzkaller-00159-g4bbf3422df78 #0
Hardware name: Google Compute Engine/Google Compute Engine, BIOS
Google 10/26/2022
Call Trace:
<IRQ>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x1e3/0x2cb lib/dump_stack.c:106
ubsan_epilogue lib/ubsan.c:151 [inline]
__ubsan_handle_shift_out_of_bounds+0x3a6/0x420 lib/ubsan.c:322
snto32 drivers/hid/hid-core.c:1323 [inline]
hid_input_fetch_field drivers/hid/hid-core.c:1572 [inline]
hid_process_report drivers/hid/hid-core.c:1665 [inline]
hid_report_raw_event+0xd56/0x18b0 drivers/hid/hid-core.c:1998
hid_input_report+0x408/0x4f0 drivers/hid/hid-core.c:2066
hid_irq_in+0x459/0x690 drivers/hid/usbhid/hid-core.c:284
__usb_hcd_giveback_urb+0x369/0x530 drivers/usb/core/hcd.c:1671
dummy_timer+0x86b/0x3110 drivers/usb/gadget/udc/dummy_hcd.c:1988
call_timer_fn+0xf5/0x210 kernel/time/timer.c:1474
expire_timers kernel/time/timer.c:1519 [inline]
__run_timers+0x76a/0x980 kernel/time/timer.c:1790
run_timer_softirq+0x63/0xf0 kernel/time/timer.c:1803
__do_softirq+0x277/0x75b kernel/softirq.c:571
__irq_exit_rcu+0xec/0x170 kernel/softirq.c:650
irq_exit_rcu+0x5/0x20 kernel/softirq.c:662
sysvec_apic_timer_interrupt+0x91/0xb0 arch/x86/kernel/apic/apic.c:1107
======================================================================
If the size of the integer (unsigned n) is bigger than 32 in snto32(),
shift exponent will be too large for 32-bit type 'int', resulting in a
shift-out-of-bounds bug.
Fix this by adding a check on the size of the integer (unsigned n) in
snto32(). To add support for n greater than 32 bits, set n to 32, if n
is greater than 32.
The Linux kernel CVE team has assigned CVE-2022-48978 to this issue.
Affected and fixed versions
===========================
Issue introduced in 2.6.20 with commit dde5845a529f and fixed in 4.9.336 with commit 151493fe5a6e
Issue introduced in 2.6.20 with commit dde5845a529f and fixed in 4.14.302 with commit 809783f8b4b6
Issue introduced in 2.6.20 with commit dde5845a529f and fixed in 4.19.269 with commit 8e14f20e1222
Issue introduced in 2.6.20 with commit dde5845a529f and fixed in 5.4.227 with commit db1ed1b3fb4e
Issue introduced in 2.6.20 with commit dde5845a529f and fixed in 5.10.159 with commit bc03f809da78
Issue introduced in 2.6.20 with commit dde5845a529f and fixed in 5.15.83 with commit f755d11c55b2
Issue introduced in 2.6.20 with commit dde5845a529f and fixed in 6.0.13 with commit 2b3b4d7aadaa
Issue introduced in 2.6.20 with commit dde5845a529f and fixed in 6.1 with commit ec61b4191858
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2022-48978
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
drivers/hid/hid-core.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/151493fe5a6ed1a88decc929a7368a3f2a246914
https://git.kernel.org/stable/c/809783f8b4b600c7fb3bccb10fefef822601ea3b
https://git.kernel.org/stable/c/8e14f20e12224ee2429f75a5c9418a700e26a8d3
https://git.kernel.org/stable/c/db1ed1b3fb4ec0d19080a102956255769bc45c79
https://git.kernel.org/stable/c/bc03f809da78fc79e4aee132d4e5c6a2b3aeec73
https://git.kernel.org/stable/c/f755d11c55b29049b77da5cd9ab2faae96eb33c3
https://git.kernel.org/stable/c/2b3b4d7aadaa1b6b58d0f34823bf86cfe8a31b4d
https://git.kernel.org/stable/c/ec61b41918587be530398b0d1c9a0d16619397e5
Powered by blists - more mailing lists