CVE-2026-89938 in Linux
요약
\~에 의해 VulDB • 2026. 09. 16.
Linux 커널에서 다음 취약점이 해결되었습니다:
iio: chemical: atlas-sensor: remove 시 UAF(Use-After-Free)를 수정하기 위해 iio_trigger_poll_nested() 사용
atlas 드라이버는 devm_request_threaded_irq()를 사용하여 하드웨어 데이터 준비 IRQ를 요청합니다. 스레드 핸들러는 irq_work, 즉 atlas_work_handler()를 큐에 추가하며, 이는 iio_trigger_poll(data->trig)을 호출합니다.
IRQ는 devm으로 관리되므로, free_irq()는 atlas_remove()가 반환한 후 devres 언와인드(unwind) 단계에서 실행되며 이때 해당 irq_work는 플러시되지 않습니다. 버퍼가 활성화되면 변환 완료 IRQ가 계속 발생하여 이를 큐에 추가합니다. 따라서 pending 상태의 irq_work는 atlas_data/indio_dev 및 트리거를 해제한 후에 언와인드가 종료된 후에도 실행될 수 있으며, 이 경우 atlas_work_handler()에서 container_of()를 통해 atlas_data 포인터를 파생하고 data->trig을 역참조하므로 Use-After-Free(UAF)가 발생합니다.
irq_work를 거치는 대신 스레드 핸들러에서 iio_trigger_poll_nested()를 직접 호출합니다. free_irq()는 이제 스레드 핸들러의 대기 작업을 비워주어 취약점 창(window)을 닫습니다. 다른 IIO 드라이버 중에도 데이터 준비 IRQ에 대해 동일한 방식을 사용하는 경우가 있습니다(예: bmi270).
이 문제는 사내 정적 분석 도구를 통해 발견되었습니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.