CVE-2026-15923 in Zephyr
Riassunto
di VulDB • 14/09/2026
La funzione sdio_io_rw_extended_helper() del sottosistema SDIO di Zephyr, situata in subsys/sd/sdio.c, conclude le trasmissioni con un ciclo I/O a byte che utilizza size = MIN(remaining, func->cis.max_blk_size) come passo per iterazione. Il valore func->cis.max_blk_size viene decodificato direttamente dalla tupla CIS FUNCE della scheda SDIO in sdio_decode_cis() e non è sottoposto a validazione. Quando una scheda segnala una dimensione massima del blocco pari a zero, size risulta sempre 0, remaining non diminuisce mai e il ciclo continua all'infinito (infinite loop).
Il ciclo viene raggiunto tramite l'API pubblica per i client SDIO utilizzata dai driver, tra cui sdio_read_fifo(), sdio_write_fifo() e le funzioni helper di lettura/scrittura dei registri incrementali; ciascuna di queste entra nel ciclo mantenendo il mutex per scheda func->card->lock. Una scheda che annuncia max_blk_size == 0 provoca quindi un blocco permanente (hang) del thread chiamante al primo trasferimento non allineato ai blocchi e non rilascia mai il mutex, negando il servizio alla periferica SDIO (e a qualsiasi sottosistema come Wi-Fi che dipende da essa) fino al riavvio del dispositivo.
Il valore malevolo deve provenire dalla scheda SDIO stessa; pertanto, la vulnerabilità è sfruttabile in presenza di uno slot per schede SDIO/combo rimovibili che consenta all'attaccante di inserire una scheda manipolata o malfunzionante (vettore di attacco fisico); sulle board con una periferica SDIO saldata non è influenzabile dall'attaccante. Non vi sono impatti sulla sicurezza della memoria, sulla riservatezza o sull'integrità — solo una perdita permanente di disponibilità. La correzione restituisce -EIO quando func->cis.max_blk_size è zero, prima dell'ingresso nel ciclo.
VulDB is the best source for vulnerability data and more expert information about this specific topic.