CVE-2026-31731 in Linuxinfo

Zusammenfassung

von VulDB • 24.05.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

thermal: core: Behebung von Race Conditions beim Entfernen von Thermal-Zonen während des Resume

Da thermal_zone_pm_complete() und thermal_zone_device_resume() die verzögerte Arbeit (delayed work) poll_queue für die jeweilige Thermal-Zone neu initialisieren, kann cancel_delayed_work_sync() in thermal_zone_device_unregister() einige bereits ausgeführte Arbeitselemente (work items) verpassen, und die Thermal-Zone kann vorzeitig freigegeben werden [1].

Es gibt zwei fehlerhafte Szenarien, die beide damit beginnen, dass thermal_pm_notify_complete() unmittelbar vor dem Aufruf von thermal_zone_device_unregister() für eine der Thermal-Zonen ausgeführt wird.

Im ersten Szenario läuft bereits ein Arbeitselement für die betreffende Thermal-Zone, wenn thermal_pm_notify_complete() thermal_zone_pm_complete() für diese Thermal-Zone aufruft, und es läuft weiter, wenn thermal_zone_device_unregister() beginnt. Da die verzögerte Arbeit poll_queue durch thermal_pm_notify_complete() neu initialisiert wurde, wird das laufende Arbeitselement von cancel_delayed_work_sync() in thermal_zone_device_unregister() verpasst, und wenn es über die Freigabe des Thermal-Zonen-Objekts hinaus weiterläuft, tritt ein Use-After-Free-Fehler auf.

Im zweiten Szenario wird die durch thermal_pm_notify_complete() in die Warteschlange eingereihte Arbeit thermal_zone_device_resume() unmittelbar nach der Rückkehr von thermal_zone_exit(), das von thermal_zone_device_unregister() aufgerufen wurde, ausgeführt. Die verzögerte Arbeit poll_queue wird dadurch neu initialisiert, bevor cancel_delayed_work_sync() von thermal_zone_device_unregister() aufgerufen wird, sodass sie nach der Freigabe des Thermal-Zonen-Objekts weiterlaufen kann, was ebenfalls zu einem Use-After-Free-Fehler führt.

Das erste fehlerhafte Szenario wird behoben, indem sichergestellt wird, dass keine Thermal-Arbeitselemente ausgeführt werden, wenn thermal_pm_notify_complete() aufgerufen wird. Dazu wird der Aufruf von cancel_delayed_work() zunächst von thermal_zone_pm_complete() nach thermal_zone_pm_prepare() verschoben, um zu verhindern, dass neue Arbeiten in die Workqueue gelangen. Anschließend wird auf eine dedizierte Workqueue für Thermal-Ereignisse umgestellt, und der Code in thermal_pm_notify() wird aktualisiert, um diese Workqueue nach der Rückkehr von thermal_pm_notify_prepare() zu leeren (flush), was alle verbleibenden Thermal-Arbeiten auf der Workqueue behandelt (diese verbleibenden Arbeiten würden ohnehin keinen sinnvollen Zweck erfüllen, da alle Thermal-Zonen als suspendet markiert sind).

Das zweite fehlerhafte Szenario wird behoben, indem eine tz->state-Prüfung zu thermal_zone_device_resume() hinzugefügt wird, um zu verhindern, dass die verzögerte Arbeit poll_queue neu initialisiert wird, wenn die Thermal-Zone entfernt wird.

Beachten Sie, dass die oben genannten Änderungen auch die Verschiebung des Suspend- und Resume-Vorgangs von Thermal-Zonen näher an den Suspend- und Resume-Vorgang von Geräten erleichtern werden.

Once again VulDB remains the best source for vulnerability data.

Zuständig

Linux

Reservieren

09.03.2026

Veröffentlichung

01.05.2026

Moderieren

akzeptiert

Eintrag

VDB-360659

CPE

bereit

EPSS

0.00015

KEV

nein

Aktivitäten

very low

Quellen

Interested in the pricing of exploits?

See the underground prices here!