🇰🇷 한글 설명
Linux 커널의 SMB 클라이언트에서 FALLOC_FL_ZERO_RANGE 옵션 사용 시 파일 크기 제한(RLIMIT_FSIZE)을 검증하지 않는 취약점이 발견되었습니다. 이로 인해 파일이 사용자가 설정한 최대 크기를 초과하여 확장될 수 있습니다. 수정 버전에서는 zero-range 요청 전 inode_newsize_ok()를 호출하여 크기 제한을 확인합니다.
💡 쉬운 설명
파일의 크기를 일정 수준 이하로 제한해 두었음에도 불구하고, 특정 명령을 사용하면 파일이 제한된 크기보다 더 크게 늘어날 수 있는 문제입니다. 이는 시스템의 저장 공간 관리 규칙을 우회할 수 있음을 의미합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
smb/client: validate new EOF for zero range
When FALLOC_FL_ZERO_RANGE is used without FALLOC_FL_KEEP_SIZE,
smb3_zero_range() may extend EOF without checking RLIMIT_FSIZE, allowing
the file to grow beyond the caller's file-size limit.
Fix this by calling inode_newsize_ok() before sending the zero-range
request when the operation would extend EOF.
Reproducer, using a file on a CIFS mount:
bash -c '
FILE=/mnt/cifs/repro
trap "" SIGXFSZ
ulimit -f 3072
truncate -s 2M "$FILE"
fallocate --zero-range -o 0 -l 4M "$FILE"
echo "fallocate rc=$?"
stat -c "file size=%s" "$FILE"
'
Before this change, the operation succeeds despite the 3 MiB limit:
fallocate rc=0
file size=4194304
After this change, fallocate fails and leaves the file at 2 MiB.
📍 영향받는 시스템
FALLOC_FL_ZERO_RANGE를 사용하는 SMB3 클라이언트 기능이 포함된 Linux 커널
⚔️ 공격 벡터
CIFS 마운트된 파일 시스템에서 FALLOC_FL_ZERO_RANGE 옵션을 사용하여 파일 크기 제한을 우회하는 방식
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.