| From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2024-26890: Bluetooth: btrtl: fix out of bounds memory access |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| Bluetooth: btrtl: fix out of bounds memory access |
| |
| The problem is detected by KASAN. |
| btrtl driver uses private hci data to store 'struct btrealtek_data'. |
| If btrtl driver is used with btusb, then memory for private hci data |
| is allocated in btusb. But no private data is allocated after hci_dev, |
| when btrtl is used with hci_h5. |
| |
| This commit adds memory allocation for hci_h5 case. |
| |
| ================================================================== |
| BUG: KASAN: slab-out-of-bounds in btrtl_initialize+0x6cc/0x958 [btrtl] |
| Write of size 8 at addr ffff00000f5a5748 by task kworker/u9:0/76 |
| |
| Hardware name: Pine64 PinePhone (1.2) (DT) |
| Workqueue: hci0 hci_power_on [bluetooth] |
| Call trace: |
| dump_backtrace+0x9c/0x128 |
| show_stack+0x20/0x38 |
| dump_stack_lvl+0x48/0x60 |
| print_report+0xf8/0x5d8 |
| kasan_report+0x90/0xd0 |
| __asan_store8+0x9c/0xc0 |
| [btrtl] |
| h5_btrtl_setup+0xd0/0x2f8 [hci_uart] |
| h5_setup+0x50/0x80 [hci_uart] |
| hci_uart_setup+0xd4/0x260 [hci_uart] |
| hci_dev_open_sync+0x1cc/0xf68 [bluetooth] |
| hci_dev_do_open+0x34/0x90 [bluetooth] |
| hci_power_on+0xc4/0x3c8 [bluetooth] |
| process_one_work+0x328/0x6f0 |
| worker_thread+0x410/0x778 |
| kthread+0x168/0x178 |
| ret_from_fork+0x10/0x20 |
| |
| Allocated by task 53: |
| kasan_save_stack+0x3c/0x68 |
| kasan_save_track+0x20/0x40 |
| kasan_save_alloc_info+0x68/0x78 |
| __kasan_kmalloc+0xd4/0xd8 |
| __kmalloc+0x1b4/0x3b0 |
| hci_alloc_dev_priv+0x28/0xa58 [bluetooth] |
| hci_uart_register_device+0x118/0x4f8 [hci_uart] |
| h5_serdev_probe+0xf4/0x178 [hci_uart] |
| serdev_drv_probe+0x54/0xa0 |
| really_probe+0x254/0x588 |
| __driver_probe_device+0xc4/0x210 |
| driver_probe_device+0x64/0x160 |
| __driver_attach_async_helper+0x88/0x158 |
| async_run_entry_fn+0xd0/0x388 |
| process_one_work+0x328/0x6f0 |
| worker_thread+0x410/0x778 |
| kthread+0x168/0x178 |
| ret_from_fork+0x10/0x20 |
| |
| Last potentially related work creation: |
| kasan_save_stack+0x3c/0x68 |
| __kasan_record_aux_stack+0xb0/0x150 |
| kasan_record_aux_stack_noalloc+0x14/0x20 |
| __queue_work+0x33c/0x960 |
| queue_work_on+0x98/0xc0 |
| hci_recv_frame+0xc8/0x1e8 [bluetooth] |
| h5_complete_rx_pkt+0x2c8/0x800 [hci_uart] |
| h5_rx_payload+0x98/0xb8 [hci_uart] |
| h5_recv+0x158/0x3d8 [hci_uart] |
| hci_uart_receive_buf+0xa0/0xe8 [hci_uart] |
| ttyport_receive_buf+0xac/0x178 |
| flush_to_ldisc+0x130/0x2c8 |
| process_one_work+0x328/0x6f0 |
| worker_thread+0x410/0x778 |
| kthread+0x168/0x178 |
| ret_from_fork+0x10/0x20 |
| |
| Second to last potentially related work creation: |
| kasan_save_stack+0x3c/0x68 |
| __kasan_record_aux_stack+0xb0/0x150 |
| kasan_record_aux_stack_noalloc+0x14/0x20 |
| __queue_work+0x788/0x960 |
| queue_work_on+0x98/0xc0 |
| __hci_cmd_sync_sk+0x23c/0x7a0 [bluetooth] |
| __hci_cmd_sync+0x24/0x38 [bluetooth] |
| btrtl_initialize+0x760/0x958 [btrtl] |
| h5_btrtl_setup+0xd0/0x2f8 [hci_uart] |
| h5_setup+0x50/0x80 [hci_uart] |
| hci_uart_setup+0xd4/0x260 [hci_uart] |
| hci_dev_open_sync+0x1cc/0xf68 [bluetooth] |
| hci_dev_do_open+0x34/0x90 [bluetooth] |
| hci_power_on+0xc4/0x3c8 [bluetooth] |
| process_one_work+0x328/0x6f0 |
| worker_thread+0x410/0x778 |
| kthread+0x168/0x178 |
| ret_from_fork+0x10/0x20 |
| ================================================================== |
| |
| The Linux kernel CVE team has assigned CVE-2024-26890 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 6.2 with commit 5b355944b19011011dd3fd4187444c5ff1d76ad2 and fixed in 6.6.23 with commit dd163fa34c483f1674aa2510accce11a224f649e |
| Issue introduced in 6.2 with commit 5b355944b19011011dd3fd4187444c5ff1d76ad2 and fixed in 6.7.11 with commit 2f232bc389a4f5943c40733582f9edf77b89e499 |
| Issue introduced in 6.2 with commit 5b355944b19011011dd3fd4187444c5ff1d76ad2 and fixed in 6.8.2 with commit 0c657e641df1e77d6087688190f632cad9c0439b |
| Issue introduced in 6.2 with commit 5b355944b19011011dd3fd4187444c5ff1d76ad2 and fixed in 6.9 with commit de4e88ec58c4202efd1f02eebb4939bbf6945358 |
| |
| 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-2024-26890 |
| 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/bluetooth/hci_h5.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/dd163fa34c483f1674aa2510accce11a224f649e |
| https://git.kernel.org/stable/c/2f232bc389a4f5943c40733582f9edf77b89e499 |
| https://git.kernel.org/stable/c/0c657e641df1e77d6087688190f632cad9c0439b |
| https://git.kernel.org/stable/c/de4e88ec58c4202efd1f02eebb4939bbf6945358 |