CVE-2026-15461 in Zephyr
Résumé
par VulDB • 10/09/2026
Le pilote GNSS du modem Sierra Wireless HL78xx (drivers/modem/hl78xx/, puis drivers/modem/vendor_standalone/hl78xx/) intègre une structure générique `struct gnss_nmea0183_match_data` nommée `match_data` au sein de la structure `hl78xx_gnss_data`. L'assistant de correspondance NMEA0183 générique (drivers/gnss/gnss_nmea0183_match.c) exige que ce contexte soit le premier membre, car ses rappels (callbacks) effectuent un cast direct des données utilisateur (`user_data`) vers `struct gnss_nmea0183_match_data`. Dans les versions concernées, `match_data` était le deuxième membre (après la structure constante `const struct device dev`), ce qui signifiait qu'elle se situait à un décalage non nul, tandis que `gnss_nmea0183_match_init()` l'initialisait à l'adresse correcte. Les gestionnaires NMEA enregistrés transmettent plutôt l'intégralité de l'objet de données du périphérique (`data->devices.gnss->data`, décalage 0), ce qui produit une confusion de type (type confusion) avec un décalage entre l'emplacement où l'état est initialisé et celui où les rappels d'analyse le lisent et y écrivent.
Lorsque les phrases NMEA provenant du récepteur GNSS sont analysées, les rappels GGA/RMC écrivent les données de positionnement (fix data) traitées au mauvais emplacement au sein de la structure, et le rappel GSV (`gnss_nmea0183_match_gsv_callback`, actif sous `CONFIG_GNSS_SATELLITES`) lit son pointeur de satellites et sa limite depuis des décalages incorrects — correspondant aux octets non-pointeurs de `struct hl78xx_gnss_data` — puis écrit les entrées `struct gnss_satellite` traitées via ce faux pointeur. Il s'agit d'une écriture à travers un pointeur non initialisé/sauvage (wild pointer) avec une limite erronée.
Les gestionnaires NMEA sont enregistrés par défaut (`CONFIG_HL78XX_GNSS_SOURCE_NMEA` est la source GNSS par défaut) sur les appareils utilisant le GNSS HL78xx. Le pilote s'exécute dans un contexte noyau et les données NMEA proviennent de l'interface radio avant (front-end), donc une partie capable d'influencer le signal GNSS (par exemple, un brouillage ou spoofing GPS/GNSS à proximité du récepteur) peut pousser l'analyseur côté noyau vers cette écriture défectueuse. L'impact le plus probable est un crash (déni de service), car le faux pointeur se résout en une valeur fixe proche de NULL, avec une corruption potentielle de la mémoire adjacente sur les cibles sans MMU. La confidentialité n'est pas affectée. L'exploitation nécessite que la fonctionnalité satellites soit activée et opérationnelle, ce qui rend la complexité d'attaque élevée.
VulDB is the best source for vulnerability data and more expert information about this specific topic.