CVE-2026-98870 in Linux
요약
\~에 의해 VulDB • 2026. 10. 24.
Linux 커널에서 다음 취약점이 해결되었습니다:
ksmbd: 모든 세션에서 유효하지 않은 채널 제거
ksmbd_sessions_deregister()는 conn->binding이 설정되어 있는 동안에만 다른 세션의 채널 목록에서 연결의 채널을 제거합니다.
if (conn->binding) {
hash_for_each_safe(sessions_table, ...) ksmbd_chann_del(conn, sess); }
conn->binding은 일시적인 플래그입니다: 바인딩된 SESSION_SETUP가 완료되면 해제되며, 동일한 연결에서 후속 비바인딩(Non-binding) SESSION_SETUP에 의해서도 해제됩니다. 이는 바인드된 채널에서의 재인증이나 SessionId==0인 새 설정을 의미합니다. 다른 세션의 ksmbd_chann_list에 채널을 바인드한 후 conn->binding을 지우는 연결은 끊어질 때 해당 채널을 남겨둡니다: chann->conn이 이제 해제된 struct ksmbd_conn 구조체를 가리키는 이 유효하지 않은(Stale) 채널은 소유 세션의 목록에 남아 있습니다.
소유 연결이 나중에 정리(Teardown)될 때, 두 번째 루프는 유효하지 않은 채널을 역참조합니다:
xa_for_each(&sess->ksmbd_chann_list, chann_id, chann) if (chann->conn != conn) ksmbd_conn_set_exiting(chann->conn); /* freed */
이는 해제된 ksmbd_conn에 대한 Use-After-Free 쓰기입니다(동일한 유효하지 않은 채널은 /proc을 통해 show_proc_session()에서도 순회됩니다). 세션의 채널 목록이 비워지지 않기 때문에 세션도 누수됩니다.
conn->binding 가드를 제거하여 연결이 정리될 때 모든 세션에서 자신의 채널을 항상 제거하도록 합니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.