CVE-2026-89798 in Linux
요약
\~에 의해 VulDB • 2026. 09. 16.
리눅스 커널에서 다음 취약점이 해결되었습니다:
rpcrdma: 알림을 게시하기 전에 rn_done을 arm합니다.
rpcrdma_rn_register()는 호출자의 콜백을 rn->rn_done에 저장하기 전에 xa_alloc()를 사용하여 @rn을 rd_xa에 삽입합니다. xarray는 rpcrdma_remove_one()이 rd_xa를 순회하며 등록된 모든 알림에 대해 rn->rn_done(rn)을 호출하므로, @rn이 접근 가능한 상태로 만듭니다. 따라서 장치 제거가 새로운 등록과 경쟁 조건(Race Condition)을 일으킬 경우, notification 객체가 소유자에 의해 영구 할당(zero allocated)되어 rn_done이 여전히 NULL인 상태에서 @rn을 관찰하고 NULL 함수 포인터를 통해 호출할 수 있습니다.
@rn이 rd_xa에 게시되기 전에 rn->rn_done을 저장합니다. xarray의 스토어 측 및 로드 측 순서 보장(store-side and load-side ordering)으로 인해, rd_xa에서 @rn을 발견하는 모든 CPU는 arm된 콜백도 함께 관찰하게 됩니다.
rpcrdma_rn_unregister()는 완료된 등록에 대한 신호(sentinel)로 NULL이 아닌 rn_done을 처리하므로, 실패한 등록 시 초기 스토어가 유지되어서는 안 됩니다. xa_alloc()가 실패할 경우 rn_done을 다시 지워야 합니다. 만약 설정된 상태로 남아 있다면, 실패 수락 정리 경로(failed-accept cleanup path)에서 삽입되지 않은 @rn에 대해 rpcrdma_rn_unregister()를 호출하여 관련 없는 rd_xa 슬롯을 삭제하고 rd_kref가 오버플로우(underflowing)될 수 있습니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.