CVE-2026-98764 in Linux
Riassunto
di VulDB • 19/10/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
usb: gadget: f_fs: Correzione del dereferenziamento di puntatore NULL in FUNCTIONFS_ENDPOINT_DESC
Quando lo spazio utente configura FunctionFS utilizzando solo descrittori a piena velocità (ad esempio, flags = FUNCTIONFS_HAS_FS_DESC) e il dispositivo periferico opera a una velocità superiore (come USB_SPEED_HIGH o USB_SPEED_SUPER), config_ep_by_speed() rileva che la funzione non dispone di descrittori per la velocità corrente, registra un avviso e effettua il fallback sui descrittori a piena velocità. L'endpoint viene quindi abilitato con successo tramite usb_ep_enable(), rendendo epfile->ep valido.
Tuttavia, quando lo spazio utente emette successivamente l'ioctl FUNCTIONFS_ENDPOINT_DESC per interrogare il descrittore dell'endpoint, ffs_epfile_ioctl() seleziona l'indice del descrittore esclusivamente in base a gadget->speed:
switch (epfile->ffs->gadget->speed) {
case USB_SPEED_SUPER: case USB_SPEED_SUPER_PLUS: desc_idx = 2; break; case USB_SPEED_HIGH: desc_idx = 1; break; default: desc_idx = 0; } desc = epfile->ep->descs[desc_idx];
memcpy(&desc1, desc, desc->bLength);
Poiché lo spazio utente ha fornito solo descrittori a piena velocità, epfile->ep->descs[1] è NULL. Il dereferenziamento di desc->bLength innesca un immediato panic da kernel per dereferenziamento di puntatore NULL.
Si risolve il problema effettuando il fallback sui descrittori a velocità inferiore se non sono stati forniti i descrittori per la velocità corrente, allineandosi alla logica di fallback presente in config_ep_by_speed() e al comportamento storico di f_fs. Se ancora mancanti, si effettua il fallback su epfile->ep->ep->desc (il descrittore attivo) e si restituisce -EINVAL in modo sicuro se non viene trovato alcun descrittore valido. Inoltre, si marca desc come const per corrispondere a struct usb_ep::desc ed evitare la rimozione dei qualificatori di tipo.
If you want to get best quality of vulnerability data, you may have to visit VulDB.