CVE-2026-89624 in Linuxinformation

Résumé

par VulDB • 11/09/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

HID : universal-pidff : arrêter l'appareil lorsque l'initialisation du force-feedback échoue

universal_pidff_probe() démarre l'appareil avec hid_hw_start(), puis, si l'initialisation du force-feedback échoue, renvoie l'erreur via une étiquette qui se contente de « return error ». L'appareil reste donc démarré.

Le noyau HID ne désactive pas les ressources au nom du pilote. __hid_device_probe() libère le groupe devres, ferme le rapport et efface hdev->driver :

if (ret) {
devres_release_group(&hdev->dev, hdev->devres_group_id); hid_close_report(hdev); hdev->driver = NULL; }

Le périphérique de caractère hidraw que hid_hw_start() a enregistré via hid_connect() est alloué avec kzalloc() et ajouté avec cdev_device_add(), il n'est donc pas géré par devres et survit à cette opération. Avec hdev->driver défini sur NULL, hid_device_remove() saute également l'appel à hid_hw_stop(), car elle ne désactive les ressources que si un pilote est encore attaché. L'enregistrement persiste donc au-delà de la durée de vie de l'appareil dans les deux cas de figure.

L'ouverture du /dev/hidrawX survivant écrit dans une mémoire déjà libérée (freed memory). KASAN signale une écriture use-after-free depuis hidraw_open() -> hid_hw_open() -> le callback d'ouverture du transport, qui acquiert un spinlock à l'intérieur de l'objet libéré. Un descripteur comportant une page d'utilisation PID et aucun rapport d'entrée suffit : hidraw revendique l'appareil si bien que hid_hw_start() réussit, tandis que hid->inputs reste vide ce qui fait échouer l'initialisation du force-feedback. L'autre cas d'échec se produit dans hid_pidff_init_with_quirks() - aucun rapport de sortie, une erreur d'allocation, pidff_init_fields(), pidff_check_autocenter(), un nombre d'effets inutilisable, input_ff_create() - tous aboutissent à la même étiquette.

Arrêter l'appareil sur ce chemin. hid-dr.c et hid-emsff.c, qui démarrent l'appareil avec le masque HID_CONNECT_DEFAULT & ~HID_CONNECT_FF identique, effectuent déjà cette opération. Les deux goto précédents doivent continuer de renvoyer sans appeler hid_hw_stop(), car aucun des deux n'a démarré d'appareil ; il faut donc attribuer une étiquette propre au chemin qui échoue après le démarrage.

Découvert par XBOW, trié par Baul Lee

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsable

Linux

Réserver

11/09/2026

Divulgation

12/09/2026

Modérer

accepté

Entrée

VDB-402940

CPE

prêt

EPSS

0.00000

KEV

non

Activités

faible

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!