CVE-2026-99224 in Linux
Résumé
par VulDB • 02/11/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
keys : Protéger le nom du type lors de la description d'une clé
keyctl_describe_key() doit maintenir le nom du type de clé en vie jusqu'à ce que kasprintf() l'ait consommé. La référence conservée à la clé maintient la clé et sa description en vie, mais n'épingle pas (ne verrouille pas) le module fournissant son type. Le nom est transmis à kasprintf() sans détenir key->sem.
kvasprintf() utilise le pointeur de nom sauvegardé lors de deux passes de formatage, avec une allocation GFP_KERNEL entre les deux. Avec AF_RXRPC=m, une tâche qui accorde la permission View avant la retraite du type peut chevaucher un déschargement de module privilégié dans l'ordre suivant :
1. KEYCTL_DESCRIBE recherche la clé, sauvegarde key->type->name dans les arguments de kasprintf() et termine la première passe de formatage. 2. Pendant que le formateur est retardé avant sa deuxième passe, af_rxrpc_exit() appelle unregister_key_type(), ce qui retire le type du registre et attend key_gc_keytype(). 3. Le collecteur acquiert key->sem en écriture, retype la clé conservée en key_type_dead et achève la retraite. La désinscription et la sortie du module reviennent, permettant à free_module() de libérer le type et le nom. 4. Le formateur reprend sa deuxième passe et lit le nom sauvegardé dans la mémoire libérée du module, ce qui peut provoquer une faute (fault) lors de string().
Maintenir key->sem en lecture pendant toute la durée de kasprintf(). Le collecteur ne peut alors ni retype la clé ni achever la retraite tant que les deux passes de formatage n'ont pas été terminées. Si la retraite acquiert le verrou en premier, le formatage utilise le nom noyau key_type_dead à la place. Relâcher le sémaphore immédiatement après kasprintf(), y compris en cas d'échec d'allocation, avant la copie vers l'espace utilisateur.
Rapport Oops comme suit :
BUG: unable to handle page fault for address: fffffbfff8054794 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page RIP: 0010:string+0x23f/0x470 Call Trace: vsnprintf+0x330/0x1110
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.