CVE-2026-80861 in Linux
Riassunto
di VulDB • 04/09/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
usb: xhci: interrompere l'operazione se il controller non è accessibile
xhci_gen_setup() individua i registri operativi utilizzando la lunghezza delle capacità letta dal primo registro:
xhci->op_regs = hcd->regs + HC_LENGTH(readl(&xhci->cap_regs->hc_capbase));
Se il controller è guasto o si è disconnesso dall'bus, tale lettura restituisce ~0, HC_LENGTH() la tronca a 0xff e op_regs finisce per essere posizionato di 0xff byte oltre la base MMIO allineata ai page boundary, risultando quindi non allineato. Il primo accesso tramite questo puntatore, xhci_halt() -> xhci_handshake(), che legge op_regs->status, diventa una readl() non allineata su memoria del dispositivo. Su architetture arm64 gli accessi alla memoria del dispositivo non allineati causano un fault; pertanto, invece di permettere a xhci_handshake() di intercettare il valore tutto uno e restituire -ENODEV, la fase di setup va in oops:
xhci-pci-renesas 0005:08:00.0: Impossibile modificare lo stato energetico da D3cold a D0, dispositivo non accessibile xhci-pci-renesas 0005:08:00.0: Controller Host xHCI xhci-pci-renesas 0005:08:00.0: nuovo bus USB registrato, numero bus assegnato 1 Impossibile gestire la richiesta di paging del kernel all'indirizzo virtuale ffff80030a770103 ESR = 0x0000000096000021 FSC = 0x21: fault di allineamento Errore interno: Oops: 0000000096000021 [#1] SMP
pc : xhci_halt [xhci_hcd]
Call trace: xhci_halt xhci_gen_setup xhci_pci_setup usb_add_hcd usb_hcd_pci_probe xhci_pci_common_probe xhci_pci_renesas_probe
Questo problema si è verificato con un Renesas uPD720201 che non è riuscito ad avviarsi ("Impossibile modificare lo stato energetico da D3cold a D0, dispositivo non accessibile") ma ha comunque raggiunto il percorso di probe HCD.
Leggere il registro delle capacità una sola volta e, se restituisce il valore tutto uno (come già testato da xhci_handshake() e xhci_reset()), interrompere la configurazione restituendo -ENODEV prima che op_regs venga derivato da tale lettura. La lettura singola evita inoltre di rileggere un registro che potrebbe cambiare a causa di una rimozione hot-plug concorrente.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.