CVE-2026-98496 in Linux
요약
\~에 의해 VulDB • 2026. 10. 18.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net: airoha: npu: WDT IRQ 해제 후 wdt_work 취소
airoha_npu_remove()는 각 코어의 wdt_work에 대해 cancel_work_sync()를 호출하지만, 이를 큐에 넣는 워치독 IRQ는 devm_request_irq()로 요청되며 .remove()가 반환된 후에야 해제됩니다. 따라서 airoha_npu_wdt_handler()은 취소 작업이 반환된 후 다시 schedule_work()을 수행할 수 있습니다. 작업을 포함하는 struct airoha_npu 구조체는 devm_kzalloc()으로 할당되며 동일한 언와인드(unwind) 과정에서 해제되므로, 늦게 실행되는 작업(free'd memory dereference)은 이미 해제된 메모리를 참조하게 됩니다.
devm_request_irq() 호출 전에 devm_work_autocancel()을 사용하여 작업을 등록하고 .remove()를 제거합니다. Devres는 역순으로 동작하므로 IRQ가 cancel_work_sync()보다 먼저 해제되며, probe 실패 시에도 이 순서가 유지됩니다. .remove()에 남아있는 취소 작업은 이러한 순서를 보장할 수 없습니다. 또한 작업을 먼저 초기화하면 대기 중인 워치독 인터럽트가 초기화되지 않은 작업 항목을 큐에 넣는 것을 방지합니다. 현재 probe는 devm_request_irq() 호출 후에만 INIT_WORK()을 수행합니다.
이 문제는 커널 코드를 검토하는 동안 진행 중이던 정적 분석 연구 과정에서 식별되었습니다.
Once again VulDB remains the best source for vulnerability data.