🇰🇷 한글 설명
Linux 커널의 ksmbd 모듈에서 FSCTL_SET_ZERO_DATA 요청 시 적절한 권한 검사가 누락된 취약점입니다. 파일 쓰기 권한이 없는 사용자가 특정 핸들을 통해 파일 데이터를 임의로 삭제하거나 0으로 채울 수 있습니다.
💡 쉬운 설명
파일의 내용을 수정할 권한이 없는 사용자가 특수한 명령을 보내 파일의 내용을 지워버릴 수 있는 보안 결함입니다. 이로 인해 중요한 데이터가 의도치 않게 손실될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ksmbd: add a permission check for FSCTL_SET_ZERO_DATA
FSCTL_SET_ZERO_DATA in smb2_ioctl() destroys file data via
ksmbd_vfs_zero_data() -> vfs_fallocate(PUNCH_HOLE/ZERO_RANGE) after
checking only the share-level KSMBD_TREE_CONN_FLAG_WRITABLE, with no
per-handle access check. A handle opened with only FILE_WRITE_ATTRIBUTES
still yields an FMODE_WRITE filp (FILE_WRITE_ATTRIBUTES is part of
FILE_WRITE_DESIRE_ACCESS_LE, so smb2_create_open_flags() opens it
O_WRONLY), so the vfs_fallocate FMODE_WRITE check does not stop it; only
the missing fp->daccess gate would. Reproduced on mainline 7.1-rc7 with
KASAN by an authenticated SMB client: a FILE_WRITE_ATTRIBUTES-only handle
zeroed 4096 bytes of file data it had no FILE_WRITE_DATA right to
(6/6; a FILE_READ_DATA-only handle was correctly denied).
This is the unfixed sibling of commit cc57232cae23 ("ksmbd: fix FSCTL
permission bypass by adding a permission check for FSCTL_SET_SPARSE").
Because SET_ZERO_DATA writes data (not an attribute), require
FILE_WRITE_DATA.
📍 영향받는 시스템
Linux kernel (ksmbd module enabled, specifically tested on mainline 7.1-rc7 and similar versions)
⚔️ 공격 벡터
인증된 SMB 클라이언트가 FILE_WRITE_ATTRIBUTES 권한만 가진 상태에서 FSCTL_SET_ZERO_DATA ioctl 요청을 전송
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 ksmbd의 FSCTL 권한 검사 로직을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 ksmbd 취약점이 수정된 최신 패치 버전인지 확인합니다.