CVE-2026-89848 in Linux
요약
\~에 의해 VulDB • 2026. 09. 16.
Linux 커널에서 다음 취약점이 해결되었습니다:
scsi: qla2xxx: 요청 큐를 해제하기 전에 응답 IRQ를 대기 상태로 전환
qla2xxx_delete_qpair() 함수는 응답 큐보다 먼저 요청 큐를 삭제합니다. qla25xx_delete_req_que()는 요청 큐 메모리(kfree(req) in qla25xx_free_req_que())를 해제하지만, 응답 큐 MSI-X는 나중에 qla25xx_free_rsp_que()에서야 비로소 해제됩니다. 이 시간 창(window) 동안 응답 인터럽트가 여전히 발생하여 qla2xxx_msix_rsp_q()가 qpair->q_work을 큐에 추가하고, qla_do_work() -> qla24xx_process_response_queue()는 이미 해제된 rsp->req(LOGINOUT/CT/ELS 엔트리와 상태 경로 등)를 역참조합니다. 이는 use-after-free 취약점입니다.
qpair 정리(teardown) 시 추가된 cancel_work_sync()는 응답 큐가 이미 해제된 후에 실행되는 응답 해제 경로에 위치하므로, rsp->req을 보호하지 못합니다.
요청 큐를 삭제하기 전에 응답 큐 인터럽트를 해제하고 qpair->q_work을 플러시하여, 늦게 도착하는 완료(completion) 요청이 해제된 요청 큐에 도달하지 않도록 합니다. have_irq 플래그를 클리어하면 후속 qla25xx_free_rsp_que()가 free_irq()를 건너뛰도록 하며, 펌웨어의 큐 삭제 순서(요청 먼저, 응답 나중)는 유지됩니다. 요청 삭제 메일박스는 기본 벡터에서 완료되며, qpair 응답 인터럽트를 조기에 해제해도 영향을 받지 않습니다.
Once again VulDB remains the best source for vulnerability data.