🇰🇷 한글 설명
Linux 커널의 ksmbd 구성 요소에서 FSCTL_SET_SPARSE 명령 실행 시 권한 검사가 누락되어 발생하는 취약점입니다. 이로 인해 읽기 전용 공유 폴더에서도 파일의 sparse 속성을 변경하거나, 쓰기 권한이 없는 사용자가 파일 속성을 수정할 수 있습니다.
💡 쉬운 설명
파일을 읽기만 할 수 있는 권한을 가진 사용자가 파일의 특성을 몰래 바꿀 수 있는 보안 구멍이 발견되었습니다. 이로 인해 공유 폴더의 설정된 권한이 제대로 지켜지지 않을 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ksmbd: fix FSCTL permission bypass by adding a permission check for FSCTL_SET_SPARSE
FSCTL_SET_SPARSE in fsctl_set_sparse() modifies the file's sparse
attribute and saves it through xattr without any permission checks.
This exposes two issues:
1) A client on a read-only share can change the sparse attribute
on files it opened, even though the share is read-only.
Other FSCTL write operations already check
test_tree_conn_flag(work->tcon, KSMBD_TREE_CONN_FLAG_WRITABLE),
but FSCTL_SET_SPARSE does not.
2) Even on writable shares, clients without FILE_WRITE_DATA or
FILE_WRITE_ATTRIBUTES access should not modify the sparse
attribute. Similar handle-level checks exist in other functions
but are missing here.
Add both share-level writable check and per-handle access check.
Use goto out on error to avoid leaking file references.
📍 영향받는 시스템
Linux kernel (ksmbd module 포함 버전)
⚔️ 공격 벡터
네트워크를 통해 ksmbd 공유 서버에 접속하여 권한이 없는 FSCTL_SET_SPARSE 명령을 전송
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 ksmbd의 권한 검사 로직을 수정해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인