CVE-2026-97944 in Linux
Résumé
par VulDB • 26/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
x86/cfi : Correction du décalage de hachage FineIBT dans cfi_get_func_hash()
Le passage de l'en-tête (preamble) FineIBT de "subl $hash, %r10d" à la version plus courte "subl $hash, %eax" a déplacé l'immédiat du hachage de l'offset 7 à l'offset 5 de l'en-tête. fineibt_preamble_hash a été mis à jour en conséquence, mais le décalage codé en dur dans cfi_get_func_hash() a été oublié et il lit toujours le hachage à l'offset 7.
cfi_get_func_hash() est utilisé par le JIT BPF pour fournir un trampoline struct_ops avec le hash CFI de la fonction stub qu'il remplace. Avec FineIBT, le trampoline obtient désormais la moitié supérieure du vrai hachage suivie des deux premiers octets de l'instruction suivante ; ainsi, le premier appel indirect depuis le noyau vers un programme struct_ops (par exemple tcp_init_congestion_control() appelant ->init() d'un contrôle de congestion BPF) échoue à la vérification FineIBT et le noyau plante avec une erreur CFI.
Déplacer l'en-tête FineIBT et ses définitions de décalage au-dessus de cfi_get_func_hash() et utiliser fineibt_preamble_hash ici, afin que chaque lecteur de l'en-tête partage une seule définition de sa disposition. La branche CFI_FINEIBT n'est compilée qu'avec CONFIG_FINEIBT, la seule configuration dans laquelle cfi_mode peut prendre cette valeur. cfi_get_func_arity() ne nécessite pas le même traitement : l'appel __bhi_args dont il lit le déplacement se termine toujours à l'adresse de la fonction.
Once again VulDB remains the best source for vulnerability data.