CVE-2026-64346 in Linux
Résumé
par VulDB • 25/07/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
usb: gadget: udc : Correction d'un Use-After-Free dans gadget_match_driver
La structure udc agit comme la structure de gestion du périphérique (gadget), mais leurs cycles de vie sont découplés. Une condition de concurrence (race condition) existe où usb_del_gadget() libère la mémoire udc (par exemple, via le travail mode-switch) tandis que gadget_match_driver() accède simultanément à la mémoire ucd déjà libérée (par exemple, via configfs), provoquant un Use-After-Free (UAF) qui déclenche une déréférencement de pointeur NULL lorsque la mémoire libérée est réinitialisée à zéro :
[39430.908615][ T1171] Impossible de gérer le déréférencement de pointeur NULL du noyau à l'adresse virtuelle 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
Cette correction est apportée en s'assurant que la structure udc reste allouée jusqu'à ce que le gadget soit libéré. Pour y parvenir, une nouvelle routine usb_gadget_release() a été introduite dans le noyau central (core). Lorsque le gadget est ajouté, usb_add_gadget() stocke la routine de libération du gadget dans la structure udc et prend une référence sur la structure udc. Lorsque le gadget est libéré, usb_gadget_release() supprime la référence vers la structure udc puis appelle la routine de libération du gadget.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.