🔍 CVE-2026-98897

0.0
CVSS Score
UNKNOWN
2026-10-23
2026-10-23 12:18
✅ 완료

🇰🇷 한글 설명

Linux 커널 ksmbd 모듈에서 SMB 리스 브레이크 대기 중 ci->m_lock 잠금을 계속 보유하여 발생하는 성능 저하 문제가 수정되었습니다. cifs.ko 클라이언트가 리스 브레이크에 응답하지 못해 최대 35초 타임아웃까지 대기하게 되는 현상을 해결하기 위해, 잠금 해제 후 참조 카운트를 유지한 채 브레이크를 수행하도록 변경되었습니다.

💡 쉬운 설명

파일 서버가 다른 컴퓨터에 파일 잠금 해제를 요청하면서 중요한 자원을 오래 붙잡고 있어, 응답이 늦어지고 작업이 느려지는 문제를 고쳤습니다. 이제 자원을 잠시 놓은 뒤 안전하게 잠금 해제를 처리합니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: ksmbd: don't hold ci->m_lock while waiting for a lease break ack When a cifs.ko client caches a read-handle (RH) lease via deferred close and a conflicting open arrives, ksmbd breaks the lease and waits for the acknowledgment in wait_for_break_ack() for up to OPLOCK_WAIT_TIME (35s). __smb_break_all_levII_oplock() runs that wait while holding ci->m_lock for read. cifs.ko reacts to a handle-lease break by closing the deferred handle rather than sending a lease break acknowledgment. That close path (close_id_del_oplock() -> opinfo_del()) takes ci->m_lock for write and is exactly what would wake the waiter, but it blocks on the read lock held by the waiting thread. The break is then resolved only by the 35s timeout, so xfstests generic/001 takes ~78s with leases enabled versus ~4s with oplocks only. Collect the target opinfos (each pinned with a reference) while holding ci->m_lock, then break them after releasing it, matching how smb_grant_oplock() already breaks a conflicting lease using only a reference. The reference keeps the opinfo (and its conn and lease) alive across the unlocked window, and a close racing the break is handled by the existing OPLOCK_CLOSING state check. Apply the same fix to the parent lease break paths.

📍 영향받는 시스템

ksmbd(커널 내장 SMB 서버)를 사용하는 Linux 커널 버전 (수정 커밋 이전 버전)

⚔️ 공격 벡터

공격 자체보다는 조건부 성능 저하(DoS 유사 지연)로, 악의적 클라이언트가 리스 충돌을 반복 유발해 서버 응답을 지연시킬 수 있음

🛡️ 대응 방법

커널을 해당 수정이 포함된 최신 안정 버전으로 업데이트하거나, 배포판 보안 업데이트를 적용하고 필요 시 ksmbd를 비활성화

🔧 검증 코드

커널 버전이 수정 패치 포함 버전 이상인지 확인하고, ksmbd 모듈이 로드되어 있지 않다면 이 취약점의 영향을 받지 않습니다.

Shell / Script
uname -r && (lsmod | grep ksmbd || echo 'ksmbd not loaded')

💻 영향받는 소프트웨어

Linux Kernel