FICHE CVE

CVE-2026-99222

Publiée le 2026-11-02 · Dernière modification le 2026-11-02

🇫🇷 EN BREF

Le système de gestion des clés du noyau Linux assure le stockage sécurisé de divers jetons et clés d'authentification. Une condition de concurrence existe lorsque le noyau vérifie si une clé peut être lue sans l'avoir préalablement verrouillée correctement, ce qui affecte spécifiquement les clés utilisées par le protocole RxRPC. Si un utilisateur tente de lire une clé au moment précis où le module RxRPC est déchargé de la mémoire, le noyau peut tenter d'accéder à une zone mémoire qui a déjà été libérée.

Un attaquant ayant un accès local au système pourrait potentiellement provoquer ce plantage pour causer un déni de service (gel du système ou redémarrage) ou tenter de divulguer des données sensibles de la mémoire du noyau. Comme cela nécessite un timing précis et la présence de modules réseau spécifiques, l'exécution fiable de cette action est difficile. Cela ne requiert pas de privilèges particuliers au-delà de la capacité d'interagir avec l'interface keyctl, mais cela ne peut pas être déclenché à distance via un réseau.

CVSS—
Publiée2026-11-02
Dernière modification2026-11-02

RÉFÉRENCES

Description officielle du NVD (en anglais)

In the Linux kernel, the following vulnerability has been resolved: keys: Protect the read method check against type removal keyctl_read_key() checks key->type->read without holding key->sem. A reference keeps the key alive, but does not pin the module containing its type. A surviving RxRPC key can therefore be read while AF_RXRPC is being unloaded: KEYCTL_READ task Module unload and key GC ---------------- ------------------------ lookup_user_key() permission / possession checks load key->type af_rxrpc_exit() unregister_key_type() GC: down_write(key->sem) GC: retype to key_type_dead GC: up_write(key->sem) unregister_key_type() returns free_module() read saved type's read member The final access can read freed module storage. The read invocation in __keyctl_read_key() is already protected by key->sem, but the earlier method check is outside that critical section. Move the method check into __keyctl_read_key(), after key_validate() and under its existing read hold on key->sem. The check and invocation then use the same protected type for length queries and every read retry. The GC cannot retype the key until the semaphore is released, and type unregistration waits for that GC pass before the module can be freed. Return -EOPNOTSUPP when validation succeeds and the type has no read method. A temporary buffer may now be allocated before this result; allocation and copying to userspace remain outside the semaphore.