CVE-2026-16147
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
Sterownik kontrolera urządzeń USB ITE IT82xx2 (drivers/usb/udc/udc_it82xx2.c) źle obsługuje wielopakietowe transfery OUT na niekontrolowanych punktach końcowych. W work_handler_out() aktywny bufor transferu jest uzyskiwany za pomocą udc_buf_peek() (która nie usuwa go z kolejki); kiedy nadejdzie pełny pakiet o maksymalnym rozmiarze pakietu, ale w buforze nadal jest wolne miejsce (transfer nie jest jeszcze zakończony), kod prefiksowy zarówno ponownie uzbraja punkt końcowy, aby nadal wypełniał ten sam bufor za pomocą work_handler_xfer_continue(), jak i jednocześnie przekazuje ten sam, wciąż zapełniany bufor do górnego stosu za pomocą udc_submit_ep_event().
Ponieważ udc_submit_ep_event() przenosi własność bufora na stos urządzeń USB (usbd_event_carrier() dołącza &buf->node do uds_ctx->ep_events, po czym procedura obsługi klasy przetwarza, a net_buf_unref() je przesyła), sterownik kontynuuje DMA kolejnych pakietów OUT kontrolowanych przez hosta do bufora, który górny stos mógł już zwolnić i poddać recyklingowi — a użyj po darmowym zapisie. Ponadto, ponieważ bufor nigdy nie był usuwany z kolejki, pakiet kończący uruchamia udc_buf_get() na tym samym obiekcie i wysyła go po raz drugi, dwukrotnie dołączając &buf->node do listy zdarzeń (uszkodzenie listy z pojedynczym łączem) i powodując podwójne wywołanie net_buf_unref().
IT82xx2 jest kontrolerem peryferyjnym USB, więc niezaufany host USB kontroluje pakietowanie transferu OUT i może wymusić tę ścieżkę w stosunku do dowolnego niekontrolującego punktu końcowego OUT, którego bufor w kolejce przekracza jeden pakiet — jest to zwykły wzorzec masowy/przerwania. Sterownik i stos urządzeń USB działają w kontekście jądra nad hostem zewnętrznym, zapewniając hostowi prymitywne uszkodzenie sterty jądra po stronie urządzenia: niezawodna odmowa usługi i, ponieważ zapisane bajty są kontrolowane przez atakującego, prawdopodobne uszkodzenie sąsiedniej puli pamięci net_buf. Wektor jest fizyczny (podłączenie USB). Poprawka opóźnia przesyłanie do czasu całkowitego zapełnienia bufora i umożliwia kontynuację działania funkcji xfer_work_handler(), dzięki czemu każdy bufor OUT jest przesyłany na górny stos dokładnie raz.
>_ Słabości (CWE)
>_ 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