CVE-2026-98207 in Linux
Сводка
по VulDB • 06.10.2026
В ядре Linux была устранена следующая уязвимость:
mmc: spi: сброс значения bytes_xfered перед повторной попыткой при ошибках CRC
Функция mmc_spi_data_do() обновляет поле data->bytes_xfered после успешной передачи каждого блока. Если более поздний блок в том же запросе данных завершается с ошибкой CRC, значение data->bytes_xfered может содержать количество байтов, успешно переданных до возникновения ошибки.
В функции mmc_spi_request() предусмотрен частный путь восстановления для таких ошибок CRC. Она отправляет команду STOP_TRANSMISSION, очищает поле data->error и переходит обратно к crc_recover для повторной отправки той же команды и запроса данных. Однако перед повторной попыткой не происходит очистка поля data->bytes_xfered.
Если повторная попытка завершается успешно, запрос считается выполненным с учетом байтов из неудачной попытки, которые все еще включены в data->bytes_xfered. Для многоблочных запросов это может привести к тому, что завершенный запрос будет сообщать о большем количестве переданных байт, чем было фактически передано при успешной повторной попытке; в случаях, когда большинство блоков были успешно обработаны до возникновения ошибки CRC, это значение даже может превышать размер самого запроса.
Такая ситуация наиболее вероятна на системах MMC-over-SPI, где длительные многоблочные передачи иногда сталкиваются с ошибкой данных по контрольной сумме (CRC), но внутренняя для mmc_spi повторная попытка оказывается успешной. Сами данные повторяются, а учет завершенных операций — нет.
Необходимо очищать поле data->bytes_xfered вместе с полем data->error перед повторным выполнением запроса, чтобы итоговый отчет о завершении содержал только количество байтов, успешно переданных при последней попытке.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.