Katalog CVE

CVE-2026-64573

Niskie ryzyko· EPSS 5%
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.16%

Percentyl 5 - wyżej niż 5% wszystkich znanych CVE

Streszczenie

W sterowniku Bluetooth qca (btqca) w jądrze Linux wykryto podatność polegającą na niedopełnieniu liczby całkowitej podczas analizy danych TLV w firmware. Jeśli długość tagu NVM jest mniejsza niż 12 bajtów, obliczenie granicy pętli powoduje zawinięcie do ogromnej wartości, co prowadzi do odczytu i zapisu poza buforem (vmalloc-out-of-bounds).

Ocena ryzyka

Atakujący z dostępem do interfejsu Bluetooth (np. przez złośliwe firmware) może doprowadzić do naruszenia integralności pamięci jądra, co może skutkować awarią systemu (panic) lub eskalacją uprawnień. Podatność wymaga jednak dostarczenia specjalnie spreparowanego firmware do kontrolera Bluetooth.

Rekomendacja

Zaleca się natychmiastowe zaktualizowanie jądra Linux do wersji zawierającej poprawkę (commit zmieniający warunek pętli na 'idx + sizeof(struct tlv_type_nvm) <= length'). Jeśli aktualizacja nie jest możliwa, należy ograniczyć dostęp do interfejsów Bluetooth i nie akceptować niezaufanego firmware.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: qca: fix NVM tag length underflow in TLV parser In the TLV_TYPE_NVM branch of qca_tlv_check_data() the tag loop bound is "while (idx < length - sizeof(struct tlv_type_nvm))". "length" is a signed int from the firmware TLV header and sizeof(struct tlv_type_nvm) is a size_t (12), so "length" is converted to size_t and any firmware-supplied "length" < 12 makes the subtraction wrap to a huge value. The loop body then reads a 12-byte struct tlv_type_nvm past the end of the short vmalloc'd firmware buffer (and the EDL_TAG_ID_* handlers can write past it). Rewrite the bound as "idx + sizeof(struct tlv_type_nvm) <= length"; both operands are non-negative, so it no longer underflows and a "length" too small for one record correctly skips the loop. 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)

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS