CVE-2026-10656 in Zephyr
Zusammenfassung
von VulDB • 06.07.2026
Der Treiber für den USB-Gerätecontroller MAX32xxx (drivers/usb/udc/udc_max32.c, kompatibel mit adi_max32_usbhs) dereferenzierte einen Endpoint-Puffer in seinen Handlern zum Abschluss von OUT- und IN-Transfers, ohne ihn auf NULL zu prüfen. udc_event_xfer_out_done() rief net_buf_add(buf, ep_request->actlen) unmittelbar nach buf = udc_buf_get(ep_cfg) auf, wobei udc_buf_get() NULL zurückgibt, wenn der Endpoint-FIFO leer ist. Ein Transfer-Completion-Ereignis wird aus dem Interrupt-Kontext in die Warteschlange gestellt und asynchron vom Treiberthread verarbeitet; zwischen dem Einstellen in die Warteschlange und der Verarbeitung kann der Endpoint-FIFO durch hostgesteuerten Kontrollfluss geleert werden – insbesondere leert udc_setup_received() die EP0 OUT/IN FIFOs bei Eintreffen eines neuen SETUP-Pakets, und Pfade zum Dequeueen/Deaktivieren/Bereinigen tun dies ebenfalls. Ein USB-Host, der einen laufenden EP0-Control-Transfer mit einem neuen SETUP-Paket abbricht (gesetzliches USB-Verhalten), kann daher dazu führen, dass ein veraltetes XFER_OUT_DONE-Ereignis gegen einen leeren FIFO verarbeitet wird, was zu net_buf_add(NULL, ...) führt. Dies ist eine nahezu NULL-Zeiger-Dereferenzierung, die einen Fault und den Absturz des Geräts verursacht. Keine Authentifizierung ist erforderlich; der Angreifer ist der USB-Host, an den das Gerät angeschlossen ist (physischer Buszugriff). Die Auswirkung ist ein Denial of Service (Geräteabsturz). Der Fehler wurde eingeführt, als der MAX32 UDC-Treiber hinzugefügt und in Zephyr v4.4.0 ausgeliefert wurde. Die Korrektur fügt NULL-Pufferprüfungen hinzu, die mit UDC_EVT_ERROR/-ENOBUFS vorzeitig zurückkehren, sowohl in den OUT-done- als auch in den IN-done-Handlern.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.