CVE-2026-98367 in Linux
요약
\~에 의해 VulDB • 2026. 10. 06.
Linux 커널에서 다음 취약점이 해결되었습니다:
RDMA/siw: siw_qp_modify가 siw_accept 내에서 실패할 경우 잠금 하에 연관 관계(association)를 해제합니다.
siw_qp_llp_close 및 siw_qp_modify->siw_qp_llp_close이 수행했던 것처럼, state_lock을 해제하기 전에 cep를 초기화해야 합니다.
그렇지 않으면 siw_accept() 내에서 siw_qp_modify()가 실패할 때 QP의 state_lock이 오류 경로 정리(error path cleanup) 이전에 해제됩니다. 이 시간 창(window)에서 QP를 ERROR 상태로 전환하는 병렬 ibv_modify_qp() 호출과 Race Condition(경쟁 조건)이 발생할 수 있습니다:
siw_accept() ibv_modify_qp(ERROR) ---------------------- ---------------------- siw_qp_modify() 실패 up_write(&qp->state_lock) down_write(&qp->state_lock) nextstate_from_idle(): if (qp->cep) siw_cep_put(qp->cep) <- cep 해제(frees cep) qp->cep = NULL goto error cep->qp = NULL <- UAF(Use-After-Free)
siw_accept()가 완료될 때까지 cep를 먼저 사용하지 않도록 하기 위해, 초기 down_write(&qp->state_lock)에서 유지되는 쓰기 잠금(write lock) 하에 qp->cep을 초기화하고 siw_cep_get()이 획득한 연관 관계 참조(reference)를 해제합니다. 따라서 스레드 B는 qp->cep == NULL을 확인하여 자체 put 작업을 건너뛰며, siw_accept()가 cep 처리를 완료하기 전에 cep를 해제할 수 없습니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.