🇰🇷 한글 설명
Linux 커널의 ksmbd 모듈에서 SMB2 세션 만료 처리 로직 오류로 인해 유효한 세션이 조기에 삭제되는 취약점이 발견되었습니다. 이로 인해 Windows 클라이언트가 기존 연결을 통해 추가 인증 세션을 생성할 때 기존 세션이 무효화되어 네트워크 드라이브 연결이 끊어지는 문제가 발생합니다.
💡 쉬운 설명
컴퓨터가 네트워크 연결을 유지해야 하는데, 규칙을 잘못 적용하여 멀쩡한 연결을 끊어버리는 문제입니다. 이 때문에 사용 중인 네트워크 드라이브가 갑자기 연결이 끊겼다는 오류를 내며 작동하지 않을 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ksmbd: follow SMB2 session expiration semantics
ksmbd_session_register() destroys valid sessions after ten seconds of
inactivity whenever a client starts another SessionSetup exchange. This
confuses Session.IdleTime with Session.ExpirationTime. Windows can create
additional authenticated sessions on an existing connection, so deleting
the older session invalidates its tree connects and makes mapped drives
fail with STATUS_NETWORK_NAME_DELETED.
The session expiration rules require the server to change a valid session
to expired only after its credential expiration time passes. A valid or
expired session otherwise keeps its connection from being scavenged.
Connections that have not negotiated a dialect, have no sessions, or have
only InProgress sessions are disconnected after an implementation-specific
timeout. Use the Windows-compatible 45 second value and run the expiration
check periodically for both TCP and SMB Direct.
Keep zero as an infinite credential expiration time, and count each
Valid-to-Expired transition. Set expired sessions to InProgress when they
reauthenticate. If authentication fails, remove the session from the
global and per-connection tables immediately, including SMB3 multichannel
connections.
Retain protection against abandoned SessionId-zero exchanges by allowing
only one InProgress authentication per connection. Additional exchanges
fail with STATUS_INSUFFICIENT_RESOURCES, and stale InProgress sessions are
reaped after the same 45 second setup timeout. This bounds the original
unauthenticated memory-exhaustion path without evicting established
sessions.
📍 영향받는 시스템
Linux kernel ksmbd module (SMB2 session expiration logic implementation)
⚔️ 공격 벡터
직접적인 공격보다는 특정 네트워크 환경(Windows 클라이언트 사용)에서 세션 만료 로직 오류로 인한 서비스 가용성 저하 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 ksmbd의 세션 만료 로직을 수정해야 합니다.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.