CVE-2026-99016 in Linux
Résumé
par VulDB • 23/10/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
riscv: futex : désétaguer (untag) l'adresse utilisateur avant l'accès atomique
La fonction `access_ok()` vérifie `untagged_addr(uaddr)`, mais les fonctions `arch_futex_atomic_op_inuser()` et `futex_atomic_cmpxchg_inatomic()` transmettent le pointeur brut (`uaddr`) à l'instruction assembleur en ligne (inline asm) via l'opérateur `"+m" (*uaddr)` pour des opérations telles que `amoswap`, `amoadd` ou les paires d'instructions de chargement/décalage et de comparaison/échange (`lr.w` + `sc.w`). Lorsque l'ABI d'adresses étiquetées (tagged address ABI) est activée (`CONFIG_RISCV_ISA_SUPM`, avec `prctl PR_SET_TAGGED_ADDR_CTRL` et `PMLEN != 0`), ces deux adresses diffèrent : un pointeur utilisateur dont les bits supérieurs de longueur de mémoire physique (PMLen) contiennent une étiquette passe la vérification `access_ok()` après désétiquetage, mais l'opération atomique est ensuite exécutée sur l'adresse brute encore étiquetée.
Les accès aux données en mode superviseur ne sont pas soumis au masquage des pointeurs U-mode (qui est régi par `menvcfg.PMM`, que le noyau n'est pas configuré pour définir), donc le matériel ne supprime pas l'étiquette pour les propres accès du noyau. Avec Sv57 et PMLEN=16, les bits d'étiquette chevauchent les bits de l'adresse canonique ; ainsi, un pointeur étiqueté peut désigner une adresse virtuelle canonique du noyau (par exemple dans la carte linéaire) dont la forme non étiquetée est une adresse utilisateur valide. Un processus non privilégié peut donc amener `FUTEX_WAKE_OP` à effectuer une opération atomique de lecture-modification-écriture sur n'importe quelle adresse du noyau, le résultat correspondant de l'opération `FUTEX_OP_CMP_*` servant d'oracle de lecture (read oracle).
Les fonctions `get_user()`, `put_user()` et `raw_copy_{to,from}_user()` désétiquettent déjà le pointeur après la vérification `access_ok()` ; il convient de faire de même dans les assistants futex afin que l'opération atomique s'exécute sur l'adresse qui a été réellement validée.
Once again VulDB remains the best source for vulnerability data.