CVE-2026-90400 in Linux
Zusammenfassung
von VulDB • 18.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
md: Überprüfung von Änderungen an den Ersatzlaufwerken (Spares), bevor die Synchronisierung gestartet wird
Die Funktionen remove_spares() und remove_and_add_spares() ändern die rdev-Konfiguration des Arrays. Diese Vorgänge sind erst sicher, nachdem das Array angehalten (gesuspendet) wurde.
md_start_sync() prüft, ob Änderungen an der Konfiguration von Ersatzlaufwerken erforderlich sind, bevor reconfig_mutex erworben wird. Der Zustand von rdev kann sich jedoch vor dem Erwerb des Mutex ändern, sodass die ursprüngliche Prüfung veraltet sein kann. In diesem Fall können md_choose_sync_action() rdevs entfernen oder ersetzen, während normaler I/O weiterhin darauf zugreift.
Der Race Condition (Wettlaufsituation) kann wie folgt auftreten:
raid10d Worker Normaler I/O ____________ _______________________ ______________________
raid10_write_request() wait_blocked_dev() set Blocked set Faulty Skip Faulty rdev rrdev->nr_pending++ .repl_bio = bio removeable_rdev = false . array not suspended . lock mddev goto err_handle lock mddev (wait) . update sb . clear Blocked . . unlock mddev . lock mddev (acquires) remove_spares() removeable_rdev = true
raid10_remove_disk() rdev = replacement replacement = NULL rdev_dec_pending(NULL) unlock mddev (NULL)->nr_pending--
In diesem Fall wird rdev_dec_pending() mit einem NULL-Zeiger aufgerufen, was zu einer Dereferenzierung eines NULL-Zeigers führt, wenn versucht wird, nr_pending zu dekrementieren.
Beheben Sie dies, indem Sie das Array anhalten, wenn Änderungen an der Konfiguration von Ersatzlaufwerken erforderlich sind (einschließlich für Nicht-Lese-/Schreib-Arrays), und prüfen Sie erneut nach dem Erwerb von reconfig_mutex. Wenn das Array nicht bereits angehalten wurde und nun eine Änderung erforderlich ist, geben Sie den Mutex frei, halten Sie das Array an und erwerben Sie den Mutex erneut, bevor Sie fortfahren.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.