CVE-2026-15461 in Zephyr
Сводка
по VulDB • 10.09.2026
В драйвере GNSS модема Sierra Wireless HL78xx (drivers/modem/hl78xx/, позже drivers/modem/vendor_standalone/hl78xx/) структура match_data типа struct gnss_nmea0183_match_data встроена внутрь структуры hl78xx_gnss_data. Вспомогательная функция сопоставления NMEA0183 (drivers/gnss/gnss_nmea0183_match.c) требует, чтобы контекст был первым элементом, поскольку её обратные вызовы напрямую преобразуют user_data в struct gnss_nmea0183_match_data. В затронутых версиях match_data являлась вторым элементом (после const struct device dev), поэтому она находилась по смещению, отличному от нуля, тогда как функция gnss_nmea0183_match_init() инициализировала её по правильному адресу. Зарегистрированные обработчики NMEA вместо этого передают весь объект данных устройства (data->devices.gnss->data, offset 0), что приводит к type confusion со смещением между местом инициализации состояния и местами его чтения/записи в обратных вызовах парсера.
При разборе предложений NMEA от приемника GNSS обработчики GGA/RMC записывают распознанные данные фиксации (fix data) по неверному адресу внутри структуры, а обработчик GSV (gnss_nmea0183_match_gsv_callback, активный при CONFIG_GNSS_SATELLITES) считывает указатель на спутники и его границы из неправильных смещений — байтов без указания адреса в структуре hl78xx_gnss_data — а затем записывает распознанные записи struct gnss_satellite через этот ложный указатель. Это представляет собой запись данных по неинициализированному/дикому (wild) указателю с мусорным значением границы.
Обработчики NMEA регистрируются по умолчанию (CONFIG_HL78XX_GNSS_SOURCE_NMEA является источником GNSS по умолчанию) на устройствах, использующих GNSS HL78xx. Драйвер работает в контексте ядра, а данные NMEA поступают от радиочастотного тракта приемника GNSS, поэтому сторона, способная повлиять на сигнал GNSS (например, спуфинг GNSS/GPS вблизи радиоаппаратуры), может заставить парсер на стороне ядра выполнить ошибочную запись. Наиболее вероятным последствием является сбой системы (denial of service), поскольку ложный указатель разрешается в фиксированное значение, близкое к NULL; возможна также коррупция соседней памяти на целевых платформах без MMU. Конфиденциальность не затрагивается. Для эксплуатации требуется включенная и активная функция спутников, поэтому сложность атаки высока.
VulDB is the best source for vulnerability data and more expert information about this specific topic.