🇰🇷 한글 설명
Linux 커널의 ksmbd 드라이버에서 oplock_info 구조체를 RCU 읽기 임계 영역에서 접근하는 동안 즉시 kfree()로 해제하여 발생하는 use-after-free 취약점입니다. RCU grace period 없이 메모리를 해제하면 opinfo_get() 등의 함수에서 이미 해제된 메모리에 접근하게 되어 시스템 충돌이나 권한 상승으로 이어질 수 있습니다. call_rcu()를 사용한 지연 해제로 수정됩니다.
💡 쉬운 설명
메모리를 사용하는 코드가 끝나기 전에 그 메모리를 삭제해서 발생하는 버그입니다. 삭제된 메모리를 여전히 사용하려 하면 시스템이 충돌하거나 공격자가 악용할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ksmbd: fix use-after-free by using call_rcu() for oplock_info
ksmbd currently frees oplock_info immediately using kfree(), even
though it is accessed under RCU read-side critical sections in places
like opinfo_get() and proc_show_files().
Since there is no RCU grace period delay between nullifying the pointer
and freeing the memory, a reader can still access oplock_info
structure after it has been freed. This can leads to a use-after-free
especially in opinfo_get() where atomic_inc_not_zero() is called on
already freed memory.
Fix this by switching to deferred freeing using call_rcu().
📍 영향받는 시스템
Linux 커널 (ksmbd SMB 서버 드라이버 포함된 모든 버전)
⚔️ 공격 벡터
ksmbd 서비스 접속 후 race condition 유발하여 use-after-free 조건 트리거 (로컬/원격 모두 가능)
🛡️ 대응 방법
Linux 커널을 CVE-2026-43376 패치가 포함된 최신 버전으로 업데이트
🔧 검증 코드
커널 버전을 확인하고 ksmbd가 활성화되어 있는지 확인합니다. ksmbd가 enabled이면 해당 커널 버전이 패치를 포함하는지 확인해야 합니다.
uname -r && grep -i ksmbd /boot/config-$(uname -r) 2>/dev/null || echo 'ksmbd not found'