CVE-2026-89938 in Linux
Zusammenfassung
von VulDB • 16.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
iio: chemical: atlas-sensor: Verwendung von iio_trigger_poll_nested(), um ein Use-After-Free (UAF) zu beheben
Der Atlas-Treiber fordert seine hardwareseitige IRQ für „Daten bereit“ mit devm_request_threaded_irq() an. Sein threaded Handler stellt eine irq_work in die Warteschlange, atlas_work_handler(), welche iio_trigger_poll(data->trig) aufruft.
Die IRQ ist devm-verwaltet (devm-managed), daher wird free_irq() aus dem devres-Unwind nach der Rückgabe von atlas_remove() ausgeführt, ohne diese irq_work zu leeren. Sobald ein Puffer aktiviert ist, feuern Conversion-Complete-IRQs kontinuierlich und stellen weitere Einträge in die Warteschlange; eine ausstehende irq_work kann daher nach dem Unwind ausgeführt werden, nachdem der Unwind-Prozess atlas_data/indio_dev sowie den Trigger freigegeben hat. In diesem Moment leitet atlas_work_handler() den Zeiger auf atlas_data über container_of() ab und dereferenziert data->trig, was zu einem Use-After-Free führt.
Anstatt umständlich über irq_work zu gehen, wird iio_trigger_poll_nested() direkt aus dem threaded Handler aufgerufen. free_irq() leert daraufhin den threaded Handler, wodurch die Angriffsfläche geschlossen wird; andere IIO-Treiber mit einer threaded IRQ für „Daten bereit“ verfahren ebenso (z. B. bmi270).
Dieses Problem wurde durch ein internes statisches Analyse-Tool entdeckt.
Once again VulDB remains the best source for vulnerability data.