Odebrany

CVE-2026-98764

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

usb: gadżet: f_fs: Napraw wyłuskiwanie wskaźnika NULL w FUNCTIONFS_ENDPOINT_DESC

Gdy przestrzeń użytkownika konfiguruje FunctionFS tylko z deskryptorami o pełnej prędkości
(np. flagi = FUNCTIONFS_HAS_FS_DESC), a gadżet działa z częstotliwością
większa prędkość (np. USB_SPEED_HIGH lub USB_SPEED_SUPER),
config_ep_by_speed() wykrywa, że funkcji brakuje deskryptorów
aktualną prędkość, rejestruje ostrzeżenie i powraca do pełnej prędkości
deskryptory. Punkt końcowy zostanie następnie pomyślnie włączony przez
usb_ep_enable(), a epfile->ep staje się ważny.

Jednakże, gdy przestrzeń użytkownika później wystawi FUNCTIONFS_ENDPOINT_DESC
ioctl, aby wysłać zapytanie do deskryptora punktu końcowego, ffs_epfile_ioctl() wybiera
indeks deskryptorów oparty wyłącznie na gadżecie->prędkości:

switch (epfile->ffs->gadget->speed) {
obudowa USB_SPEED_SUPER:
obudowa USB_SPEED_SUPER_PLUS:
desc_idx = 2;
przerwa;
obudowa USB_SPEED_HIGH:
desc_idx = 1;
przerwa;
domyślnie:
desc_idx = 0;
}
desc = epfile->ep->descs[desc_idx];
memcpy(&desc1, desc, desc->bLength);

Ponieważ przestrzeń użytkownika dostarczała tylko deskryptory o pełnej szybkości,
epfile->ep->descs[1] ma wartość NULL. Dereferencja desc->bLength wyzwala an
natychmiastowa panika dotycząca wyłuskiwania wskaźnika NULL jądra.

Napraw ten problem, przechodząc do niższych deskryptorów prędkości, jeśli bieżący
nie podano deskryptora prędkości, zgodnego z logiką rezerwową
config_ep_by_speed() i historyczne zachowanie f_fs. Jeśli nadal brakuje,
wróć do epfile->ep->ep->desc (aktywny deskryptor) i powróć
-EINVAL bezpiecznie, jeśli nie znaleziono prawidłowego deskryptora. Dodatkowo zaznacz desc
as const, aby dopasować struct usb_ep::desc i unikać odrzucania kwalifikatorów.

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org