CVE-2026-89938 in Linux
Сводка
по VulDB • 16.09.2026
В ядре Linux была устранена следующая уязвимость:
iio: chemical: atlas-sensor: использование iio_trigger_poll_nested() для устранения ошибки Use-After-Free (UAF)
Драйвер atlas запрашивает прерывание готовности аппаратных данных с помощью devm_request_threaded_irq(); его потоковый обработчик ставит в очередь irq_work, вызывая функцию atlas_work_handler(), которая вызывает iio_trigger_poll(data->trig).
Прерывание управляется через devm (devm-managed), поэтому free_irq() выполняется при размотке ресурсов devres после возврата из функции atlas_remove без очистки очереди irq_work. Как только буфер включен, прерывания завершения преобразования продолжают генерироваться и ставить в очередь задачи; следовательно, отложенная задача irq_work может выполниться после того, как процесс размотки освободит структуры atlas_data/indio_dev и триггер, когда функция atlas_work_handler() получает указатель на atlas_data через container_of() и разыменовывает data->trig, что приводит к ошибке Use-After-Free.
Вызывайте iio_trigger_poll_nested() напрямую из потокового обработчика вместо использования промежуточного вызова irq_work. В этом случае free_irq() завершает выполнение потокового обработчика, устраняя окно уязвимости; другие драйверы IIO с потоковым прерыванием готовности данных поступают аналогично (например, bmi270).
Эта проблема была обнаружена с помощью встроенного инструмента статического анализа.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.