FICHE CVE

CVE-2026-99230

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

🇫🇷 EN BREF

Le noyau Linux contient une faille dans le sous-système `io_uring`, utilisé pour les opérations d'E/S asynchrones à haute performance. Lorsque certaines commandes sont annulées, le système ne parvient pas à effacer correctement un marqueur de « poison » d'un nœud de mémoire interne avant de recycler cette mémoire pour une nouvelle requête. Si un processus ultérieur, tel qu'une attente de futex vectorisé, tente d'utiliser cette mémoire recyclée sans la réinitialiser, le système tente d'écrire à une adresse mémoire invalide.

Un attaquant capable d'exécuter du code localement sur le système peut déclencher cette faille pour provoquer un « kernel panic », entraînant un plantage complet du système et une perte de disponibilité. Il s'agit d'un problème de privilèges locaux ou de stabilité plutôt que d'une attaque à distance, car cela nécessite la possibilité d'effectuer des appels système spécifiques vers le noyau. Comme cela conduit à une erreur de protection générale (un plantage), cela impacte principalement la disponibilité du système plutôt que la confidentialité des données.

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: io_uring/cmd: don't leave list poison in ->hash_node io_uring_cmd_del_cancelable() uses hlist_del() to take a command off ->cancelable_uring_cmd, which leaves LIST_POISON1/2 behind in ->hash_node. Requests are recycled through the request cache without being reinitialised, and not every user of ->hash_node sets it up before it is used: If a vectored futex wait is woken while futex_wait_multiple_setup() is still queueing the futexes, io_futexv_wait() doesn't add the request to ->futex_list, and leaves the completion to the task_work queued by the wake up. io_futexv_complete() ends in __io_futex_complete(), whose hlist_del_init() is fine for a request that is unhashed, which is how all other users of the node leave it. If the request was a cancelable uring_cmd in its previous life, e.g. a ublk FETCH_REQ, it writes through LIST_POISON2: Oops: general protection fault, probably for non-canonical address KASAN: maybe wild-memory-access in range [0xdead000000000120-...] RIP: 0010:io_futexv_complete+0x219/0x420 Call Trace: tctx_task_work_run+0x804/0x950 tctx_task_work+0x71/0xa0 task_work_run+0x118/0x200 Leave the node unhashed.