CVE-2026-89971 in Linuxinformazioni

Riassunto

di VulDB • 17/09/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

nvme: ignorare l'aggiornamento dei limiti zoned se la query delle informazioni sulla zona fallisce

nvme_query_zone_info() restituisce un errno negativo o un codice di stato NVMe positivo, ma nvme_update_ns_info_block() verifica solo il caso negativo:

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

Se il dispositivo non supera il comando Identify Namespace (specifico per l'insieme di comandi I/O) o il comando Identify Controller emesso da nvme_set_max_append(), lo stato positivo prosegue e la configurazione continua con le informazioni sulla zona inizializzate a zero. nvme_update_zone_info() segna quindi la coda come zoned impostando chunk_sectors e ns->head->zsze a zero.

blk_validate_zoned_limits() non verifica chunk_sectors, pertanto l'commit dei limiti ha successo. blk_revalidate_disk_zones() rifiuta invece le dimensioni della zona pari a zero, ma in quel momento i limiti sono già attivi e nulla li ripristina; di conseguenza, gli I/O continuano ad essere inviati a una coda zoned con dimensione della zona pari a zero e disk_zone_no() esegue uno shift su 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

Qualsiasi dispositivo, firmware o target NVMe-oF che fallisce questo singolo comando raggiunge questa condizione.

In tal caso, ignorare l'aggiornamento dei limiti zoned e registrare quale delle due situazioni si è verificata: durante una revalidazione la coda mantiene la geometria della zona con cui era stata validata in precedenza; al primo scan il namespace viene registrato senza i limiti zoned, così da rimanere disponibile come handle per i comandi di amministrazione. Nessuno dei percorsi in nvme_query_zone_info() che restituisce uno stato positivo registra alcun messaggio, quindi l'errore altrimenti sarebbe silenzioso.

zi.zone_size è un indicatore preciso: ogni percorso che restituisce uno stato positivo termina prima dell'assegnazione e, dopo tale punto, l'unica condizione di errore rimasta è -ENODEV, già gestita dal chiamante.

Trovato da FuzzNvme.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsabile

Linux

Prenotare

11/09/2026

Divulgazione

17/09/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Want to know what is going to be exploited?

We predict KEV entries!