🇰🇷 한글 설명
Linux 커널의 ksmbd 모듈에서 파일 잠금(file_lock) 객체를 해제하기 전에 차단된 요청 그래프에서 분리하지 않아 발생하는 취약점입니다. 이로 인해 잘못된 메모리 참조가 발생하거나 커널 패닉(BUG_ON)이 유발될 수 있습니다.
💡 쉬운 설명
파일을 잠그고 기다리는 과정에서 시스템이 관리해야 할 목록에서 해당 정보를 제대로 지우지 않아 발생하는 오류입니다. 이 오류로 인해 컴퓨터 시스템이 갑자기 멈추거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ksmbd: detach blocked lock requests before freeing
A file_lock retained by ksmbd for byte-range lock bookkeeping can still
be part of the VFS blocked-request graph. In particular, the VFS can
chain a new waiter below an already blocked request through
flc_blocked_requests. The ksmbd_file reference count does not cover that
graph.
Both __ksmbd_close_fd() and the cross-request unlock path free these
retained file_lock objects directly. If a dependent waiter is still
attached, locks_release_private() hits
BUG_ON(!list_empty(&flc->flc_blocked_requests)). The same lifetime
mismatch can leave a freed ksmbd_lock reachable through its request-local
llist.
Detach the file_lock from the blocked-request graph before freeing it in
the close, cross-request unlock, and rollback paths. locks_delete_block()
also wakes requests chained below the object. Remove llist when a
completed lock is published so a globally visible ksmbd_lock no longer
points into the submitting worker's stack.
📍 영향받는 시스템
ksmbd 모듈을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
특수하게 조작된 파일 잠금 요청을 ksmbd를 통해 전송하여 커널 메모리 오류 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 ksmbd 취약점이 해결된 최신 패치 버전인지 확인