CVE-2026-15923 in Zephyr
요약
\~에 의해 VulDB • 2026. 09. 14.
Zephyr의 SDIO 서브시스템 함수 sdio_io_rw_extended_helper()는 size = MIN(remaining, func->cis.max_blk_size)를 반복 단계로 사용하는 바이트 I/O 루프를 통해 전송을 완료합니다. 값 func->cis.max_blk_size는 sdio_decode_cis()에서 SDIO 카드의 CIS FUNCE 튜플로부터 직접 디코딩되며 검증되지 않습니다. 카드가 최대 블록 크기를 0으로 보고하면 size는 항상 0이 되고, remaining은 감소하지 않으며 루프는 무한히 반복됩니다.
이 루프는 sdio_read_fifo(), sdio_write_fifo() 및 증분 레지스터 읽기/쓰기 헬퍼를 포함한 드라이버에서 사용되는 공개 SDIO 클라이언트 API로부터 접근되며, 각 함수는 func->card->lock이라는 카드별 뮤텍스를 획득한 상태로 루프에 진입합니다. 따라서 max_blk_size == 0을 광고하는 카드는 첫 번째 블록 정렬되지 않은 전송 시 호출 스레드를 영구적으로 차단하고 뮤텍스를 해제하지 않아, SDIO 주변 장치(그리고 이에 의존하는 Wi-Fi와 같은 서브시스템)의 서비스 거부 상태를 초래하며, 이는 장치가 재설정될 때까지 지속됩니다.
악성 값은 SDIO 카드 자체에서 제공되어야 하므로, 이 결함은 탈착식 SDIO/콤보 카드 슬롯이 있어 공격자가 조작된 또는 고장난 카드를 삽입할 수 있는 경우(물리적 공격 벡터)에만 악용 가능합니다. 납땜된 SDIO 주변 장치가 탑재된 보드의 경우에는 공격자의 영향력이 미치지 않습니다. 메모리 안전성, 기밀성 또는 무결성에 대한 영향은 없으며, 영구적인 가용성 손실만 발생합니다. 수정 방법은 루프 진입 전에 func->cis.max_blk_size가 0일 경우 -EIO를 반환합니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.