CVE-2026-89847 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 16.

Linux 커널에서 다음 취약점이 해결되었습니다:

scsi: qla2xxx: 비동기 IOCB 타임아웃 시 이중 완료(double completion) 방지

qla2x00_async_iocb_timeout()는 시간 초과된 비동기 IOCB를 중단(abort)하려고 시도합니다. qla24xx_async_abort_cmd()가 실패할 경우, SRB_LOGIN_CMD 경로와 SRB_CTRL_VP/기본(default) 경로 모두 outstanding_cmds[]에서 해당 SRB를 스캔한 후, 실제로 SRB가 발견되고 제거되었는지 확인하지 않고 sp->done(sp, QLA_FUNCTION_TIMEOUT)을 무조건 호출합니다.

응답 ISR이 동일한 핸들을 먼저 완료하면 qp_lock_ptr 하위에서 SRB를 제거하고 sp->done() -> complete(sp->comp)를 실행합니다. 제출자(submitter)인 qla24xx_control_vp()는 wait_for_completion()에서 깨어나 sp->comp을 지우고 참조 카운트를 감소시킨 후 반환하여 스택에 할당된 완료(completion) 객체를 회수(reclaiming)합니다. 타이머 참조는 타임아웃 핸들러 동안 SRB를 생존 상태로 유지하지만, 제출자의 스택은 그렇지 않습니다. 이후 타임아웃이 두 번째 sp->done() -> qla_ctrlvp_sp_done() 호출을 발생시키는데, 이는 "if (sp->comp) complete(sp->comp)"를 평가합니다. 여기서 포인터는 제출자가 NULL로 저장하기 전에 로드되었으므로, complete() 함수가 해제된 스택 프레임(freed stack frame)에 작성하게 되며, 이는 Use-After-Free 취약점입니다.

이 경로에서 SRB가 outstanding_cmds[]에서 제거되었는지 추적하고, 제거된 경우에만 sp->done()을 호출하여 명령어가 소유권을 가진 경로에 의해 정확히 한 번만 완료되도록 합니다. 이는 qla24xx_abort_iocb_timeout()에서 이미 사용되는 sp_found 가드와 동일한 방식입니다.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

책임이 있는

Linux

예약하다

2026. 09. 11.

모더레이션

수락

항목

VDB-405657

EPSS

0.00000

출처

Want to stay up to date on a daily basis?

Enable the mail alert feature now!