CVE-2026-64437 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 29.

리눅스 커널에서 다음 취약점이 해결되었습니다:

ksmbd: SMB2_CLOSE 이후 SMB2_CANCEL 시 지연된 file_lock의 use-after-free 수정

커밋 f580d27e8928("ksmbd: 이중 SMB2_CANCEL 발생 시 지연된 file_lock에 대한 use-after-free 수정")은 smb2_cancel()이 상태가 KSMBD_WORK_CANCELLED인 작업을 건너뛰도록 하여, cancel_fn이 두 번째로 발화되지 않도록 했습니다. 그러나 KSMBD_WORK에는 세 가지 상태(ACTIVE, CANCELLED, CLOSED)가 있으며, 동일한 해제(producer) 경로가 CLOSED 경우에도 도달합니다:

잠금 핸들에 대한 SMB2_CLOSE -> set_close_state_blocked_works()는 지연된 작업의 상태를 KSMBD_WORK_CLOSED로 설정하고 smb2_lock() 워커를 깨웁니다. 워커는 비-ACTIVE 조퇴 경로를 따라가고, locks_free_lock()을 통해 file_lock을 해제하며, 상태가 KSMBD_WORK_CANCELLED이 아니므로 "goto out2"와 함께 STATUS_RANGE_NOT_LOCKED 분기를 따릅니다 -- 이는 취소된 경우의 분기처럼 release_async_work()를 건너뜁니다. 작업은 conn->async_requests에 남아 있으며, live cancel_fn = smb2_remove_blocked_lock는 해제된 file_lock을 가리킵니다.

이후 동일한 AsyncId에 대한 SMB2_CANCEL은 KSMBD_WORK_CANCELLED 전용 보호구(그 상태가 KSMBD_WORK_CLOSED임)를 통과하므로, smb2_cancel()은 이미 해제된 file_lock에서 cancel_fn을 다시 발화합니다 -- 이는 첫 번째 SMB2CANCEL 대신 SMB2_CLOSE를 통해 수정된 동일한 use-after-free입니다:

BUG: KASAN: slab-use-after-free in __locks_delete_block __locks_delete_block locks_delete_block ksmbd_vfs_posix_lock_unblock smb2_remove_blocked_lock smb2_cancel <- 두 번째 SMB2_CANCEL이 cancel_fn 발화 handle_ksmbd_work 할당 위치: ...: locks_alloc_lock <- smb2_lock 해제 위치: locks_free_lock <- smb2_lock (비-ACTIVE 조퇴) ... 크기 192의 file_lock_cache

주요(mainline) 7.1-rc7(f580d27e8928을 이미 포함함)에서 KASAN과 함께 인증된 SMB 클라이언트로 재현되었습니다; 해당 커널에서는 이중-SMB2_CANCEL 제어가 조용히 처리되므로, 스플래트(splat)는 CLOSE 트리거에 기인합니다.

ACTIVE 지연 작업만 cancel_fn이 발화될 수 있습니다: 두 가지 종단 상태(CANCELLED 및 CLOSED) 모두 file_lock을 해제하고 release_async_work()를 건너뛰는 smb2_lock() 조퇴 경로로 이어집니다. KSMBD_WORK_ACTIVE에서 보호하여 비활성 작업을 모두 건너뛸 수 있도록 합니다.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-383190

EPSS

0.00435

활동

낮음

출처

Do you know our Splunk app?

Download it now for free!