CVE-2026-98173 in Linux
요약
\~에 의해 VulDB • 2026. 10. 06.
리눅스 커널에서 다음 취약점이 해결되었습니다:
smb: client: cifs_try_adding_channels()에서의 iface에 대한 use-after-free 수정
cifs_try_adding_channels()는 list_for_each_entry_safe_from()를 사용하여 ses->iface_list를 반복하며, iface_lock 하에서 다음 항목(niface)을 캡처합니다. 그런 다음 루프 본문은 cifs_ses_add_channel() 전체 기간 동안 iface_lock을 해제(drop)합니다.
동시 인터페이스 새로 고침(SMB3_request_interfaces() -> parse_server_interfaces())은 모든 ifaces를 비활성 상태로 표시하고, list_del() + kref_put()를 통해 다시 광고되지 않는 항목들을 제거 및 해제(frees)하며, 여기서 release_iface()는 단순한 kfree()입니다. niface에는 일반적으로 참조를 유지하는 채널이 없으므로, 목록 참조가 마지막 것이 되어 잠금 해제된 창(unlocked window) 내부에서 해제될 수 있습니다. 계속 진행 시 반복자.advance 단계에서는 niface->iface_head.next에 대한 역참조를 수행하고, 루프 본문은 iface->rdma_capable/is_active를 읽으며, 이는 모두 해제된 메모리 상의 작업입니다.
이 문제를 해결하기 위해 잠금 해제된 창 동안 참조되지 않은 목록 포인터를 절대 유지하지 않습니다. 각 채널 시도는 이제 iface_lock 하에서 머리부터 목록을 다시 스캔하고, 선택된 후보에 대해 kref를 취한 후 cifs_ses_add_channel()로 해당 참조가 있는(candidate) 항목만 전달합니다. weight_fulfilled는 여전히 선택 진행 상황을 추적하므로, 스캔 재시는 원래의 가중치 분포와 실패 경로에서의 weight_fulfilled-before-kref_put 순서를 보존합니다.
플래핑하는 인터페이스 새로 고침이 단일 tries 증분 내에서 내부 루프가 계속 회전하지 않도록 하기 위해 회차별 시도 횟수 상한을 추가했습니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.