In the Linux kernel, the following vulnerability has been resolved:
block, bfq: fix bfqq uaf in bfq_limit_depth()
Set new allocated bfqq to bic or remove freed bfqq from bic are both protected by bfqd->lock, however bfq_limit_depth() is deferencing bfqq from bic without the lock, this can lead to UAF if the io_context is shared by multiple tasks.
For example, test bfq with io_uring can trigger following UAF in v6.6:
================================================================== BUG: KASAN: slab-use-after-free in bfqq_group+0x15/0x50
Call Trace: <TASK> dump_stack_lvl+0x47/0x80 print_address_description.constprop.0+0x66/0x300 print_report+0x3e/0x70 kasan_report+0xb4/0xf0 bfqq_group+0x15/0x50 bfqq_request_over_limit+0x130/0x9a0 bfq_limit_depth+0x1b5/0x480 __blk_mq_alloc_requests+0x2b5/0xa00 blk_mq_get_new_requests+0x11d/0x1d0 blk_mq_submit_bio+0x286/0xb00 submit_bio_noacct_nocheck+0x331/0x400 __block_write_full_folio+0x3d0/0x640 writepage_cb+0x3b/0xc0 write_cache_pages+0x254/0x6c0 write_cache_pages+0x254/0x6c0 do_writepages+0x192/0x310 filemap_fdatawrite_wbc+0x95/0xc0 __filemap_fdatawrite_range+0x99/0xd0 filemap_write_and_wait_range.part.0+0x4d/0xa0 blkdev_read_iter+0xef/0x1e0 io_read+0x1b6/0x8a0 io_issue_sqe+0x87/0x300 io_wq_submit_work+0xeb/0x390 io_worker_handle_work+0x24d/0x550 io_wq_worker+0x27f/0x6c0 ret_from_fork_asm+0x1b/0x30 </TASK>
Allocated by task 808602: kasan_save_stack+0x1e/0x40 kasan_set_track+0x21/0x30 __kasan_slab_alloc+0x83/0x90 kmem_cache_alloc_node+0x1b1/0x6d0 bfq_get_queue+0x138/0xfa0 bfq_get_bfqq_handle_split+0xe3/0x2c0 bfq_init_rq+0x196/0xbb0 bfq_insert_request.isra.0+0xb5/0x480 bfq_insert_requests+0x156/0x180 blk_mq_insert_request+0x15d/0x440 blk_mq_submit_bio+0x8a4/0xb00 submit_bio_noacct_nocheck+0x331/0x400 __blkdev_direct_IO_async+0x2dd/0x330 blkdev_write_iter+0x39a/0x450 io_write+0x22a/0x840 io_issue_sqe+0x87/0x300 io_wq_submit_work+0xeb/0x390 io_worker_handle_work+0x24d/0x550 io_wq_worker+0x27f/0x6c0 ret_from_fork+0x2d/0x50 ret_from_fork_asm+0x1b/0x30
Freed by task 808589: kasan_save_stack+0x1e/0x40 kasan_set_track+0x21/0x30 kasan_save_free_info+0x27/0x40 __kasan_slab_free+0x126/0x1b0 kmem_cache_free+0x10c/0x750 bfq_put_queue+0x2dd/0x770 __bfq_insert_request.isra.0+0x155/0x7a0 bfq_insert_request.isra.0+0x122/0x480 bfq_insert_requests+0x156/0x180 blk_mq_dispatch_plug_list+0x528/0x7e0 blk_mq_flush_plug_list.part.0+0xe5/0x590 __blk_flush_plug+0x3b/0x90 blk_finish_plug+0x40/0x60 do_writepages+0x19d/0x310 filemap_fdatawrite_wbc+0x95/0xc0 __filemap_fdatawrite_range+0x99/0xd0 filemap_write_and_wait_range.part.0+0x4d/0xa0 blkdev_read_iter+0xef/0x1e0 io_read+0x1b6/0x8a0 io_issue_sqe+0x87/0x300 io_wq_submit_work+0xeb/0x390 io_worker_handle_work+0x24d/0x550 io_wq_worker+0x27f/0x6c0 ret_from_fork+0x2d/0x50 ret_from_fork_asm+0x1b/0x30
Fix the problem by protecting bic_to_bfqq() with bfqd->lock.
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade kernel-libbpf-staticUpgrade kernel-modules-extra-commonUpgrade kernel-debuginfo-common-aarch64Upgrade kernelUpgrade kernel-libbpf-develUpgrade kernel-livepatch-6.1.129-138.220Upgrade kernel-debuginfoUpgrade kernel-tools-develUpgrade perfUpgrade perf-debuginfoUpgrade python3-perfUpgrade kernel-develUpgrade kernel-headersUpgrade bpftool-debuginfoUpgrade kernel-modules-extraUpgrade kernel-tools-debuginfoUpgrade python3-perf-debuginfoUpgrade kernel-toolsUpgrade kernel-libbpfUpgrade kernel-debuginfo-common-x86_64Upgrade bpftool | Mar 10, 2025 | Dec 27, 2024 |
| Debian | — | Upgrade linuxUpgrade linux-6.1 | Apr 14, 2025 | Dec 27, 2024 |
| Redhat_linux | — | Upgrade kernelNo solution existsUpgrade kernel-rt | May 15, 2025 | Dec 27, 2024 |
| Ubuntu | — | Upgrade linux-image-lowlatencyUpgrade linux-image-genericUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-oem-22.04aUpgrade linux-image-6.8.0-1024-oracle-64kUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-6.8.0-58-generic-64kUpgrade linux-image-6.8.0-1024-oracleUpgrade linux-image-6.11.0-1008-raspiUpgrade linux-image-6.8.0-58-lowlatencyUpgrade linux-image-6.8.0-1014-azure-nvidiaUpgrade linux-image-azure-nvidiaUpgrade linux-image-6.8.0-58-genericUpgrade linux-image-6.8.0-1026-nvidia-lowlatency-64kUpgrade linux-image-nvidiaUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-6.11.0-1011-oracle-64kUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-lowlatency-64kUpgrade linux-image-gkeop-6.8Upgrade linux-image-6.11.0-1010-lowlatency-64kUpgrade linux-image-nvidia-6.8Upgrade linux-image-6.8.0-1026-nvidia-64kUpgrade linux-image-6.11.0-1005-realtimeUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-2023-raspi-realtimeUpgrade linux-image-oracleUpgrade linux-image-6.11.0-1009-gcpUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-1026-nvidiaUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-oem-22.04Upgrade linux-image-generic-lpaeUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-6.8.0-1028-gcpUpgrade linux-image-ibmUpgrade linux-image-awsUpgrade linux-image-oem-24.04bUpgrade linux-image-6.11.0-1009-awsUpgrade linux-image-6.8.0-1026-nvidia-lowlatencyUpgrade linux-image-6.8.0-1028-raspiUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-6.8.0-1024-ibmUpgrade linux-image-6.11.0-1015-oemUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-azure-lts-24.04Upgrade linux-image-azureUpgrade linux-image-6.8.0-58-lowlatency-64kUpgrade linux-image-raspi-realtimeUpgrade linux-image-6.8.0-1010-gkeopUpgrade linux-image-6.8.0-1026-oemUpgrade linux-image-oem-22.04dUpgrade linux-image-oem-24.04aUpgrade linux-image-oem-24.04Upgrade linux-image-kvmUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-gkeUpgrade linux-image-6.8.0-1023-gkeUpgrade linux-image-6.11.0-18-genericUpgrade linux-image-gcp-64kUpgrade linux-image-aws-lts-24.04Upgrade linux-image-virtualUpgrade linux-image-6.11.0-1009-azureUpgrade linux-image-raspiUpgrade linux-image-6.8.1-1020-realtimeUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-ibm-classicUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-gkeopUpgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1027-awsUpgrade linux-image-generic-64kUpgrade linux-image-oem-22.04cUpgrade linux-image-nvidia-64kUpgrade linux-image-6.11.0-18-generic-64kUpgrade linux-image-6.8.0-1027-azure-fdeUpgrade linux-image-6.8.0-1028-gcp-64kUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-6.11.0-1010-lowlatencyUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.11.0-1009-azure-fdeUpgrade linux-image-oem-22.04bUpgrade linux-image-6.11.0-1011-oracleUpgrade linux-image-realtimeUpgrade linux-image-gcpUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.8.0-1027-azure | Feb 20, 2025 | Dec 27, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jul 2, 2025 | Dec 27, 2024 |
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub