CVE-2026-90184 in Linuxinfo

Zusammenfassung

von VulDB • 17.09.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

null_blk: Serialisierung von configfs-Attributaktualisierungen mit der Geräteeinrichtung

Die durch NULLB_DEVICE_ATTR() generierten Attribut-Speicherfunktionen (store methods) verweigern die Änderung der Konfiguration eines aktiven Geräts, indem sie auf NULLB_DEV_FL_CONFIGURED testen. Dieses Flag wird jedoch erst von nullb_device_power_store() festgelegt, nachdem null_add_dev() zurückgegeben hat, und die Speichermethoden verwenden überhaupt keine Sperren (Locks). configfs serialisiert nur Schreibzugriffe auf dieselbe geöffnete Datei (buffer->mutex), sodass ein Schreiben zu einem beliebigen Attribut parallel zu null_add_dev() ausgeführt werden kann und die Gerätekonfiguration während der Nutzung ändert.

null_add_dev() liest die Konfiguration mehrmals, z. B. wird dev->zoned einmal gelesen, um die Warteschlangengrenzwerte (queue limits) festzulegen, und ein weiteres Mal, um die Zonenressourcen zu initialisieren:

CPU0: echo 1 > nullb0/power CPU1: echo 1 > nullb0/zoned nullb_device_power_store() mutex_lock(&lock) null_add_dev() if (dev->zoned) -> false /* kein BLK_FEAT_ZONED */ nullb_device_zoned_store() test_bit(FL_CONFIGURED) -> 0 dev->zoned = true blk_mq_alloc_disk() /* Warteschlange ist nicht zonalisiert (nicht zoned) */ if (nullb->dev->zoned) -> true null_register_zoned_dev() blk_revalidate_disk_zones()

blk_revalidate_disk_zones() wird anschließend für eine Warteschlange aufgerufen, die BLK_FEAT_ZONED nicht gesetzt hat, was deren WARN_ON_ONCE()-Aufruf auslöst und die Geräteeinrichtung mit -EIO fehlschlagen lässt:

WARNING: CPU: 2 PID: 322 at block/blk-zoned.c:2357 blk_revalidate_disk_zones+0x4c/0x560

Das Zurücksetzen von dev->zoned im selben Zeitfenster ist noch schlimmer: Die Warteschlange wird mit BLK_FEAT_ZONED erstellt, aber die Zonenressourcen werden niemals initialisiert, sodass add_disk() für eine zonalisierte Festplatte ohne Zonen erfolgreich ist. Und ein Speicherzugriff (store), der nach dem letzten Test von dev->zoned erfolgt, lässt dev->zoned gesetzt, während dev->zones noch NULL ist, was null_process_zoned_cmd() beim ersten Schreibvorgang dereferenziert.

Beheben Sie dies durch die Verwendung des globalen Locks, den nullb_device_power_store() bereits über null_add_dev() und null_del_dev() hinweg hält, sowohl für den Test von NULLB_DEV_FL_CONFIGURED als auch für die Aktualisierung der Gerätekonfiguration. Die Callback-Funktionen submit_queues und poll_queues werden nun mit diesem Lock ausgeführt, sodass die von ihnen selbst durchgeführten Sperrungen entfernt wurden.

Da die Speicherfunktionen (store methods) so bald wie möglich nach Rückgabe von configfs_register_subsystem() ausgeführt werden können, d. h., bevor null_init() mutex_init(&lock) erreicht, wird der Lock statisch mit DEFINE_MUTEX() initialisiert.

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

Zuständig

Linux

Reservieren

11.09.2026

Veröffentlichung

17.09.2026

Moderieren

akzeptiert

Eintrag

VDB-406700

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Want to know what is going to be exploited?

We predict KEV entries!