🇰🇷 한글 설명
Linux 커널의 ksmbd 구성 요소에서 인증되지 않은 클라이언트가 SESSION_SETUP 이전에 반복적인 SMB2 NEGOTIATE 요청을 보낼 수 있는 취약점입니다. 이 과정에서 기존 할당된 메모리가 덮어씌워지면서 이전 객체가 해제되지 않아 메모리 누수가 발생합니다.
💡 쉬운 설명
해커가 특수한 요청을 반복해서 보내 컴퓨터의 메모리를 조금씩 계속 낭비하게 만드는 취약점입니다. 이 현상이 지속되면 시스템의 메모리가 부족해져 컴퓨터가 느려지거나 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ksmbd: reject repeated SMB2 NEGOTIATE requests
Unauthenticated client can send multiple successful SMB2 NEGOTIATE
requests on one connection before SESSION_SETUP. While the connection is
in KSMBD_SESS_NEED_SETUP, smb2_handle_negotiate() accepts another
SMB3.1.1 NEGOTIATE and overwrites conn->preauth_info with a new allocation.
Only the final allocation is freed when the connection is released, leaking
one object for every additional successful request.
A repeated SMB2 NEGOTIATE after a dialect has been selected is a protocol
violation. MS-SMB2 section 3.3.5.4 requires the server to disconnect
without replying in this case. Set the connection exiting when rejecting
the request, in addition to suppressing the response.
Reject SMB2 NEGOTIATE unless the connection is new or is waiting for the
SMB2 NEGOTIATE that follows an SMB1 multi-protocol negotiate. Serialize
both SMB1 and SMB2 negotiation paths under conn->srv_mutex, since they
update connection-wide dialect and negotiation state.
Move the locking contract to ksmbd_smb_negotiate_common(), where the state
and dialect are selected, and add ksmbd_conn_new() for consistent state
access.
📍 영향받는 시스템
Linux kernel (ksmbd module 포함 버전)
⚔️ 공격 벡터
인증되지 않은 클라이언트가 SMB2 NEGOTIATE 요청을 반복적으로 전송
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 ksmbd 메모리 누수 패치가 적용된 최신 버전인지 확인
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux