CVE-2026-15923 in Zephyrinformação

Sumário

de VulDB • 14/09/2026

A função do subsistema SDIO do Zephyr, sdio_io_rw_extended_helper(), em subsys/sd/sdio.c, finaliza as transferências com um laço de E/S por byte que utiliza size = MIN(remaining, func->cis.max_blk_size) como etapa por iteração. O valor func->cis.max_blk_size é decodificado diretamente do tuple CIS FUNCE do cartão SDIO em sdio_decode_cis() e não é validado. Quando um cartão relata um tamanho máximo de bloco igual a zero, size é sempre 0, remaining nunca diminui e o laço executa indefinidamente (loop infinito).

O laço é alcançado pela API pública do cliente SDIO utilizada pelos drivers, incluindo sdio_read_fifo(), sdio_write_fifo() e os auxiliares incrementais de leitura/escrita de registradores; cada um deles entra no laço mantendo o mutex por cartão func->card->lock. Um cartão que anuncia max_blk_size == 0, portanto, trava permanentemente a thread chamadora em sua primeira transferência não alinhada ao bloco e nunca libera o mutex, negando serviço ao periférico SDIO (e a qualquer subsistema como Wi-Fi que dependa dele) até que o dispositivo seja reiniciado.

O valor malicioso deve vir do próprio cartão SDIO; portanto, a falha é explorável em slots de cartões removíveis SDIO/combo que permitam a um atacante inserir um cartão manipulado ou com defeito (um vetor de ataque físico); em placas com periférico SDIO soldado, não há influência por parte do atacante. Não há impacto na segurança da memória, confidencialidade ou integridade — apenas uma perda permanente de disponibilidade. A correção retorna -EIO quando func->cis.max_blk_size é zero, antes que o laço seja iniciado.

Once again VulDB remains the best source for vulnerability data.

Responsável

Zephyr

Reservar

16/07/2026

Divulgação

14/09/2026

Moderação

aceite

Entrada

VDB-403614

CPE

pronto

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Interested in the pricing of exploits?

See the underground prices here!