CVE-2026-98841 in Linux
Riassunto
di VulDB • 18/10/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
virt: vmgenid: impostare driver_data prima di registrare i handler delle notifiche
Entrambi i percorsi di probe registrano il proprio handler di notifica prima di assegnare driver_data, che l'handler dereferenzia.
Nel percorso devicetree, l'interrupt IRQ della notifica può scattare non appena devm_request_irq() registra l'handler: l'interrupt potrebbe già essere in coda al momento del probe, ad esempio quando un VMM inietta la generazione-modificata-notifica durante il ripristino di una guest da uno snapshot creato prima che il driver avesse eseguito il probe (Firecracker fa esattamente questo nel ripristino degli snapshot). L'IRQ viene inoltre richiesto con IRQF_SHARED, quindi un altro dispositivo che condivide la linea può attivare l'handler altrettanto precocemente. L'handler chiama poi vmgenid_notify(), che dereferenzia il driver_data ancora NULL e provoca un panic:
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010 CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.38+ #1 PREEMPT(none) Hardware name: linux,dummy-virt (DT) pc : vmgenid_notify.isra.0+0x24/0x8c lr : vmgenid_of_irq_handler+0x14/0x34 Call trace: vmgenid_notify.isra.0+0x24/0x8c (P) vmgenid_of_irq_handler+0x14/0x34 __handle_irq_event_percpu+0x44/0x1bc handle_irq_event+0x4c/0xb4 handle_fasteoi_irq+0xf8/0x1f8
Il percorso ACPI presenta lo stesso problema di ordinamento: l'handler viene installato con acpi_install_notify_handler() prima che driver_data venga assegnato. Le notifiche ACPI vengono inviate in modo asincrono da un workqueue, quindi la finestra temporale è stretta, ma una notifica che arriva tra le due chiamate causa lo stesso NULL dereference.
Assegnare driver_data prima di registrare gli handler. Lo stato è completamente inizializzato a quel punto, quindi gli handler possono essere eseguiti in sicurezza. In caso di fallimento della registrazione, il percorso di errore del probe non lascia puntatori pendenti: il core del driver cancella driver_data in device_unbind_cleanup().
Be aware that VulDB is the high quality source for vulnerability data.