🇰🇷 한글 설명
Linux 커널의 ksmbd 모듈에서 특정 오류 경로 발생 시 ksmbd_vfs_kern_path_end_removing() 함수가 호출되지 않는 취약점이 발견되었습니다. 이로 인해 inode 잠금(lock)이 해제되지 않거나 참조 횟수가 제대로 관리되지 않아 데드락(Deadlock)이 발생할 수 있습니다.
💡 쉬운 설명
파일을 다루는 과정에서 오류가 났을 때 잠갔던 문을 제대로 열지 않아 시스템이 멈춰버리는 문제입니다. 이로 인해 컴퓨터가 응답하지 않는 상태가 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ksmbd: call ksmbd_vfs_kern_path_end_removing() on some error paths
There are two places where ksmbd_vfs_kern_path_end_removing() needs to be
called in order to balance what the corresponding successful call to
ksmbd_vfs_kern_path_start_removing() has done, i.e. drop inode locks and
put the taken references. Otherwise there might be potential deadlocks
and unbalanced locks which are caught like:
BUG: workqueue leaked lock or atomic: kworker/5:21/0x00000000/7596
last function: handle_ksmbd_work
2 locks held by kworker/5:21/7596:
#0: ffff8881051ae448 (sb_writers#3){.+.+}-{0:0}, at: ksmbd_vfs_kern_path_locked+0x142/0x660
#1: ffff888130e966c0 (&type->i_mutex_dir_key#3/1){+.+.}-{4:4}, at: ksmbd_vfs_kern_path_locked+0x17d/0x660
CPU: 5 PID: 7596 Comm: kworker/5:21 Not tainted 6.1.162-00456-gc29b353f383b #138
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-debian-1.17.0-1 04/01/2014
Workqueue: ksmbd-io handle_ksmbd_work
Call Trace:
<TASK>
dump_stack_lvl+0x44/0x5b
process_one_work.cold+0x57/0x5c
worker_thread+0x82/0x600
kthread+0x153/0x190
ret_from_fork+0x22/0x30
</TASK>
Found by Linux Verification Center (linuxtesting.org).
📍 영향받는 시스템
ksmbd 모듈을 사용하는 Linux 커널 버전 (예: 6.1.162 미만 버전)
⚔️ 공격 벡터
ksmbd를 통해 특정 오류를 유발하는 네트워크 요청을 전송하여 시스템 데드락 유도
🛡️ 대응 방법
ksmbd 관련 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전 이후인지 확인