[SRU][M][PATCH 0/2] CVE-2024-26890

Bethany Jamison bethany.jamison at canonical.com
Tue Apr 30 23:18:59 UTC 2024


[Impact]

 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

[Fix]

Mantic:	Clean cherry-pick from prereq commit and linux-6.6.y
Jammy:	not-affected
Focal:	not-affected
Bionic:	not-affected
Xenial:	not-affected
Trusty:	not-affected

[Test Case]

Compile and boot tested.

[Where problems could occur]

This fix affects those who use the bluetooth driver for Realtek 
devices, an issue with this fix would be visable to the user via
data corruption, unpredicted system behavior, or a system crash.

Andrey Skvortsov (2):
  Bluetooth: hci_h5: Add ability to allocate memory for private data
  Bluetooth: btrtl: fix out of bounds memory access

 drivers/bluetooth/hci_h5.c     |  5 ++++-
 drivers/bluetooth/hci_serdev.c |  9 +++++----
 drivers/bluetooth/hci_uart.h   | 12 +++++++++++-
 3 files changed, 20 insertions(+), 6 deletions(-)

-- 
2.34.1




More information about the kernel-team mailing list