CVE-2026-89938 in Linux
要約
〜によって VulDB • 2026年09月16日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
iio: chemical: atlas-sensor: iio_trigger_poll_nested()の使用によりremove時のUAFを修正
atlasドライバは、devm_request_threaded_irq()を使用してハードウェアのデータ準備完了IRQを要求します。そのスレッド化されたハンドラはirq_work(atlas_work_handler())をキューに追加し、この関数はiio_trigger_poll(data->trig)を呼び出します。
IRQはdevm管理されているため、free_irq()はatlas_remove()が返した後のdevresのアンワインド処理から実行されますが、その際irq_workはフラッシュされません。バッファが有効化されると、変換完了IRQが継続して発生しirq_workをキューに追加します。そのため、pending状態のirq_workは、unwind処理によってatlas_data/indio_devおよびトリガーが解放された後に実行される可能性があります。この際、atlas_work_handler()はcontainer_of()を通じてatlas_dataポインタを取得しdata->trigへの参照を行いますが、これはuse-after-free(解放後使用)となります。
irq_workを介して間接的に呼び出すのではなく、スレッド化されたハンドラからiio_trigger_poll_nested()を直接呼び出します。これによりfree_irq()はスレッド化されたハンドラのキューを空にし、脆弱性の窓を閉じます。他のiioドライバでも同様の手法が採用されています(例:bmi270)。
本問題は社内製の静的解析ツールによって発見されました。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.