CVE-2026-89971 in Linuxinformation

Résumé

par VulDB • 16/09/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

nvme : ignorer la mise à jour des limites zônées si l'interrogation des informations de zone échoue

nvme_query_zone_info() renvoie soit un errno négatif, soit un code d'état NVMe positif, mais nvme_update_ns_info_block() ne teste que le cas négatif :

ret = nvme_query_zone_info(ns, lbaf, &zi); if (ret < 0) goto out;

Si l'appareil échoue à la commande Identify Namespace (spécifique au jeu de commandes E/S), ou à la commande Identify Controller émise par nvme_set_max_append(), le statut positif est ignoré et la configuration continue avec des informations de zone initialisées à zéro. nvme_update_zone_info() marque alors la file d'attente comme zônée, en définissant chunk_sectors et ns->head->zsze à zéro.

blk_validate_zoned_limits() ne vérifie pas chunk_sectors, donc l'application des limites réussit. blk_revalidate_disk_zones() rejette bien la taille de zone nulle, mais à ce stade, les limites sont déjà actives et aucune action ne permet de les annuler ; ainsi, les E/S continuent d'être soumises à une file zônée avec une taille de zone nulle, et disk_zone_no() effectue un décalage sur ilog2(0) :

nvme0n1: Invalid non power of two zone size (0) UBSAN: shift-out-of-bounds in include/linux/blkdev.h:747:16 shift exponent -1 is negative disk_zone_no include/linux/blkdev.h:747 [inline]
bio_straddles_zones include/linux/blkdev.h:1058 [inline]
blk_zone_wplug_handle_write block/blk-zoned.c:1423 [inline]
blk_zone_plug_bio.cold+0x25/0x1c8 block/blk-zoned.c:1605 blk_mq_submit_bio+0x18fb/0x2870 block/blk-mq.c:3196 submit_bh_wbc+0x575/0x740 fs/buffer.c:2824 __block_write_full_folio+0x728/0xdd0 fs/buffer.c:1933

Tout appareil, micrologiciel ou cible NVMe-oF qui échoue à cette commande atteint ce scénario.

Dans ce cas, il faut ignorer la mise à jour des limites zônées et consigner laquelle des deux situations s'est produite : lors d'une révalidation, la file conserve la géométrie de zone avec laquelle elle a été validée pour la dernière fois ; lors d'un premier balayage, le namespace est enregistré sans les limites zônées, afin qu'il reste disponible comme point d'entrée pour les commandes administratives. Aucun des chemins dans nvme_query_zone_info() qui renvoie un statut positif ne génère de journalisation, donc l'échec serait autrement silencieux.

zi.zone_size est un indicateur précis : chaque chemin qui renvoie un statut positif retourne avant que cette variable ne soit assignée ; après cela, la seule erreur restante est -ENODEV, que l'appelant gère déjà.

Découvert par FuzzNvme.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsable

Linux

Réserver

11/09/2026

Divulgation

17/09/2026

Modérer

accepté

Entrée

VDB-405792

CPE

prêt

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Want to know what is going to be exploited?

We predict KEV entries!