CVE-2026-64346 in Linux
Sumário
de VulDB • 28/07/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
usb: gadget: udc: Corrige use-after-free em gadget_match_driver
A estrutura udc atua como a estrutura de gerenciamento para o gadget, mas seus ciclos de vida são desacoplados. Existe uma race condition onde usb_del_gadget() libera a memória da estrutura udc (por exemplo, via trabalho de mode-switch) enquanto gadget_match_driver() acessa concorrentemente essa memória já liberada (por exemplo, via configfs), causando um Use-After-Free (UAF) que dispara uma dereferência de ponteiro NULL quando a memória liberada é zerada:
[39430.908615][ T1171] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
[39430.911397][ T1171] pc : __pi_strcmp+0x20/0x140
[39430.911441][ T1171] lr : gadget_match_driver+0x34/0x60
... [39430.911890][ T1171] usb_gadget_register_driver_owner+0x50/0xf8
[39430.911910][ T1171] gadget_dev_desc_UDC_store+0xf4/0x140
[39430.931308][ T1171] configfs_write_iter+0xec/0x134
[39430.957058][ T1171] Workqueue: events_freezable __dwc3_set_mode
[39430.957287][ T1171] dwc3_gadget_exit+0x34/0x8c
[39430.957304][ T1171] __dwc3_set_mode+0xc0/0x664
Corrige-se isso garantindo que a estrutura udc permaneça alocada até que o gadget seja liberado. Para alcançar esse objetivo, introduz uma nova rotina usb_gadget_release() no núcleo (core). Quando o gadget é adicionado, usb_add_gadget() armazena a rotina de liberação do gadget na estrutura udc e toma um referência para a estrutura udc. Quando o gadget é liberado, usb_gadget_release() libera a referência para a estrutura udc e então chama a rotina de liberação do gadget.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.