CVE-2026-80895 in Linuxinfo

Zusammenfassung

von VulDB • 04.09.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

mshv: Ordnung der Veröffentlichung von pt_vp_array gegenüber dem irqfd-Assertion-Pfad

mshv_partition_ioctl_create_vp() initialisiert eine VP-Struktur (Zuweisungen, mutex_init, init_waitqueue_head, Page-Mappings) und veröffentlicht anschließend den Zeiger in partition->pt_vp_array. Mehrere ISR-Pfade lesen dieses Array sperrfrei: die Intercept-ISRs, die beiden Scheduler-ISRs sowie mshv_try_assert_irq_fast() auf dem irqfd-Fast-Path.

Von diesen kann nur mhsv_try_assert_irq_fast() strukturell mit der Veröffentlichung kollidieren (Race Condition). Es wird von einem eventfd-Waker ohne Halten von pt_mutex ausgeführt, und MSHV_IRQFD erfordert nicht, dass die Ziel-lapic_apic_id (== vp_index) zum Registrierungszeitpunkt auf eine existierende VP verweist. Ein Benutzer kann daher ein irqfd registrieren, das auf eine noch zu erstellende VP zielt, und dann mshv_try_assert_irq_fast() gleichzeitig mit MSHV_CREATE_VP für denselben Index auslösen. Auf schwach geordneten Architekturen (weakly-ordered architectures) kann der Leser einen nicht-NULL-Zeiger in pt_vp_array beobachten, bevor die initialisierenden Speicheroperationen an der VP-Struktur sichtbar werden, was zur Verwendung teilweise initialisierter Felder führt (z. B. vp_register_page).

Die anderen ISR-Leser können diese Race Condition nicht erreichen: Der Hypervisor generiert keine Intercept- oder Scheduler-Nachrichten für eine VP, die noch nie angewiesen wurde, ausgeführt zu werden, und der Benutzer kann MSHV_RUN_VP nur auf dem von MSHV_CREATE_VP zurückgegebenen VP-FD aufrufen, der konstruktionsbedingt nach der Veröffentlichung zurückgegeben wird. Diese Leser bleiben als einfache Lesezugriffe (plain loads).

Verwenden Sie smp_store_release() in mshv_partition_ioctl_create_vp(), um den Zeiger zu veröffentlichen, und koppeln Sie dies mit smp_load_acquire() in mshv_try_assert_irq_fast(). Auf x86 werden diese unter TSO zu einfachen Zugriffen kompiliert; auf ARM64 emittieren sie ein-Instruktion-Barrieren für acquire/release, die auf diesem Fast-Path akzeptabel sind.

Der Destroy-Seiten-Pfad (destroy_partition(), der pt_vp_array[i] nach kfree(vp) auf NULL setzt) hat separate Ordnungs- und Lebensdaueraspekte, die hier nicht behandelt werden.

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

Zuständig

Linux

Reservieren

26.08.2026

Veröffentlichung

04.09.2026

Moderieren

akzeptiert

Eintrag

VDB-399088

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Do you want to use VulDB in your project?

Use the official API to access entries easily!