🇰🇷 한글 설명
Linux 커널의 SMB 클라이언트에서 smb3_enum_snapshots() 함수 호출 시 경계 외 읽기(OOB Read) 취약점이 발견되었습니다. 서버의 응답 길이가 할당된 버퍼보다 작을 경우, copy_to_user() 과정에서 버퍼 범위를 벗어나 인접한 슬랩 메모리를 사용자 공간으로 유출할 수 있습니다.
💡 쉬운 설명
컴퓨터가 서버로부터 데이터를 받을 때, 실제 데이터보다 더 많은 양을 읽으려고 시도하여 메모리에 숨겨진 민감한 정보를 외부로 흘릴 수 있는 문제입니다. 이로 인해 시스템 내부의 중요한 정보가 공격자에게 노출될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
smb: client: fix potential OOB read in smb3_enum_snapshots()
If snapshot_array_size is smaller than GMT_TOKEN_SIZE,
smb3_enum_snapshots() sets ret_data_len to
sizeof(struct smb_snapshot_array) without verifying the actual length
of the server's reply.
Because SMB2_ioctl() places no lower bound on the server-supplied
OutputCount and allocates retbuf to exactly that length, a short reply
results in ret_data_len exceeding the size of retbuf. The subsequent
copy_to_user() then reads past the end of retbuf, leaking adjacent slab
memory to userspace. The subsequent clamp check is ineffective as it
only reduces ret_data_len.
Fix this by rejecting replies shorter than
sizeof(struct smb_snapshot_array) with -EIO. Note that the bound is set
to the 12-byte struct size rather than the 16-byte
MIN_SNAPSHOT_ARRAY_SIZE defined in MS-SMB2 3.3.5.15.1, because 12 bytes
is exactly what copy_to_user() attempts to read.
📍 영향받는 시스템
SMB3 기능을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
조작된 짧은 응답을 보내는 악의적인 SMB 서버를 통해 메모리 정보를 유출하는 방식
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 smb3_enum_snapshots()의 길이 검증 로직을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 보안 공지(CVE-2026-98169)와 대조합니다.