CVE-2026-89788 in Linux
요약
\~에 의해 VulDB • 2026. 09. 16.
Linux 커널에서 다음 취약점이 해결되었습니다:
ksmbd: smb2_tree_connect()에서의 tree connection use-after-free 수정
ksmbd_tree_conn_connect()는 sess->tree_conns에 단일 참조(reference)를 가진 새 tree connection을 게시하고 그 포인터를 smb2_tree_connect()로 반환합니다. 핸들러는 게시 후에도 객체를 계속 초기화하고 응답을 구성합니다. 동시에 발생하는 세션 로그오프(logoff)가 연결을 지우고 해당 참조를 해제하여, 핸들러가 여전히 사용하고 있는 동안 객체가 해제(free)될 수 있습니다.
BUG: KASAN: slab-use-after-free in smb2_tree_connect+0xe3d/0xf90 smb2_tree_connect (fs/smb/server/smb2pdu.c:2872) handle_ksmbd_work process_one_work worker_thread kthread
xa_store()가 성공한 후, tree_conns_lock을 해제하기 전에 두 번째 참조를 확보합니다. 원래의 참조는 xarray entry에 속하며, 두 번째 참조는 생성 중인 smb2_tree_connect() 핸들러에 속합니다.
모든 경로에서 참조(reference) 균형을 유지합니다:
- 정상 종료 또는 게시 후 오류 발생 시, smb2_tree_connect()는 자신의 생성자 참조를 해제(drop)합니다. 오류 정리 과정에서도 ksmbd_tree_conn_disconnect()가 호출되며, 이는 정확한 entry를 제거하는 경우에만 xarray 참조를 해제합니다. - SMB2 TREE_DISCONNECT은 동일한 헬퍼 함수를 사용하여 entry를 제거하고 해당 xarray 참조를 해제합니다. 요청의 기존 조회(lookup) 참조는 요청이 소유하며 기존 정리 과정에 의해 해제됩니다. - 세션 LOGOFF는 각 entry를 제거하고 해당 xarray 참조를 해제합니다. 레이스 조건에서 승리할 경우, 이후의 정리는 entry가 이미 사라졌음을 확인하여 해당 참조를 다시 해제하지 않습니다.
이러한 소유권 관계를 강제하기 위해 tree_conns_lock 하에서 연결 끊김 상태를 주장하고 정확한 entry를 원자적으로 지웁니다. 이는 어떤 정리 경로(teardown path)가 승리하든 xarray 참조에 대한 하나의 해제(drop)와 각 활성 사용자(in-flight user)에 의한 하나씩의 해제를 보장합니다. 로그오프가 초기화 완료 전에 entry를 제거하는 경우, 분리된 객체를 TREE_CONNECTED로 표시하지 않고 연결을 실패시킵니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.