CVE-2026-81039 in Zephyrinformation

Résumé

par VulDB • 26/10/2026

L'hôte Bluetooth alloue de manière prédictive un objet `bt_conn` (une « réservation ») à partir du pool fixe `acl_conns[]` pour chaque ensemble publicitaire connectable qu'il démarre, dans la fonction `le_adv_start_add_conn()` située dans le fichier `subsys/bluetooth/host/adv.c`. Lorsqu'une connexion périphérique entrante est établie avec succès, la fonction `find_pending_connect()`, présente dans `subsys/bluetooth/host/hci_core.c`, recherche cette réservation en utilisant uniquement l'identité et l'adresse du pair, avec une stratégie de repli dirigé puis non dirigé. Cette logique ne tient pas compte de l'ensemble publicitaire qui a effectivement pris fin. Avec la configuration `CONFIG_BT_EXT_ADV_MAX_ADV_SET > 1`, où l'événement « LE Enhanced Connection Complete » est mis en cache jusqu'à ce que l'événement « LE Advertising Set Terminated » identifie le set concerné, cette recherche peut renvoyer la réservation appartenant à un autre ensemble publicitaire encore actif.

La vulnérabilité est exploitable sans fil par n'importe quel dispositif adjacent. Si une application exécute deux ensembles de publicité étendus connectables sur la même identité — l'un non dirigé et l'autre dirigé vers un pair P (le schéma courant « reconnexion dirigée vers un central appairé tout en acceptant de nouveaux centrals ») —, un initiateur distant dont l'adresse correspond à celle de P se connectant via le set non dirigé provoque la consommation de la réservation du set dirigé au lieu de celle du set cible. L'adresse de l'initiateur est choisie librement par l'appareil distant et n'est pas authentifiée lors de l'établissement du lien ; aucune appariement, association ou relation préalable n'est donc nécessaire pour déclencher cette mauvaise attribution.

La réservation propre au set non dirigé se retrouve alors orpheline : son drapeau `BT_ADV_ENABLED` a déjà été effacé, et la fonction `le_adv_stop_free_conn()` — qui est le seul chemin permettant de retourner une réservation au pool — n'est atteinte que pour les ensembles encore activés. Par conséquent, `bt_le_ext_adv_stop()` retourne prématurément et l'objet n'est jamais libéré. Chaque occurrence consomme définitivement un slot `CONFIG_BT_MAX_CONN` jusqu'à ce qu'un appel à `bt_disable()` ou un redémarrage intervienne. Dans les schémas d'application qui redémarrent le set de publicité dirigée après chaque déconnexion, un attaquant peut répéter cette séquence jusqu'à épuisement du pool, auquel point la publicité connectable échoue avec une erreur `-ENOMEM` et l'appareil ne peut plus accepter de connexions. En tant qu'effet secondaire, le set dirigé continue de diffuser sans réservation ; toute connexion légitime sur ce dernier est donc interrompue par `bt_hci_disconnect()`. L'impact concerne uniquement la disponibilité (DoS) : aucune corruption de mémoire ni divulgation d'informations n'en résulte, et les configurations avec un seul ensemble publicitaire ne sont pas affectées.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsable

Zephyr

Réserver

26/08/2026

Divulgation

26/10/2026

Modérer

accepté

Entrée

VDB-426526

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Do you need the next level of professionalism?

Upgrade your account now!