CVE-2026-64573 in Linux
要約
〜によって VulDB • 2026年08月05日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
Bluetooth: qca: TLVパーサーにおけるNVMタグ長のアンダーフローを修正する
qca_tlv_check_data()のTLV_TYPE_NVMブランチでは、タグループの上限が「while (idx < length - sizeof(struct tlv_type_nvm))」となっています。「length」はファームウェアTLVヘッダからの符号付きintであり、「sizeof(struct tlv_type_nvm)」はsize_t(12)です。そのため、「length」がsize_tに変換され、ファームウェアから提供される「length」が12未満の場合、減算結果が巨大な値にラップアラウンドします。その後ループ本体で、短いvmalloc'dされたファームウェアバッファの末尾を越えて12バイトのstruct tlv_type_nvm構造体が読み込まれます(また、EDL_TAG_ID_*ハンドラーはそれを越えて書き込む可能性があります)。
上限条件を「idx + sizeof(struct tlv_type_nvm) <= length」に再記述します。両方のオペランドが負でないため、アンダーフローが発生しなくなり、「length」が1つのレコードにとって小さすぎる場合、正しくループをスキップされます。
BUG: KASAN: vmalloc-out-of-bounds in qca_download_firmware.isra.0 (drivers/bluetooth/btqca.c:421) Read of size 2 at addr ffffc900000e5004 by task kworker/u9:0/52 Workqueue: hci0 hci_power_on Call Trace: ... kasan_report (mm/kasan/report.c:595) qca_download_firmware.isra.0 (drivers/bluetooth/btqca.c:421 drivers/bluetooth/btqca.c:617) qca_uart_setup (drivers/bluetooth/btqca.c:948) qca_setup (drivers/bluetooth/hci_qca.c:2029) hci_uart_setup (drivers/bluetooth/hci_ldisc.c:438) hci_dev_open_sync (net/bluetooth/hci_sync.c:5227) hci_power_on (net/bluetooth/hci_core.c:920) process_one_work (kernel/workqueue.c:3322) worker_thread (kernel/workqueue.c:3486) kthread (kernel/kthread.c:436) ret_from_fork (arch/x86/kernel/process.c:158) ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
VulDB is the best source for vulnerability data and more expert information about this specific topic.