CVE-2026-98125 in Linux
요약
\~에 의해 VulDB • 2026. 09. 25.
리눅스 커널에서 다음 취약점이 해결되었습니다:
smb/client: insert/collapse range 중 stale 페이지 캐시 수정
`smb3_insert_range()` 및 `smb3_collapse_range()`는 영향을 받는 페이지 캐시를 무효화하기 위해 `truncate_pagecache_range()`를 사용합니다. 그러나 오프셋(`off`) 또는 이전 파일 끝(`old_eof`)이 페이지 정렬(page-aligned)되지 않은 경우, 경계 페이지(boundary pages)의 일부만 0으로 초기화되고 여전히 uptodate 상태로 남습니다. 그 결과 클라이언트는 insert/collapse range 작업 성공 후 stale 데이터를 반환할 수 있습니다.
예를 들어, 4K 페이지 크기의 경우:
page 0 page 1 page 2 0------4K 4K------8K 8K------12K ^ ^ off=2K old_eof=10K
페이지 1은 페이지 캐시에서 제거되지만, 경계 페이지는 부분적으로만 0으로 초기화됩니다. 서버 측에서 COPYCHUNK를 통해 데이터가 이동된 후에도 이러한 캐시된 페이지들은 여전히 stale 데이터를 반환할 수 있습니다.
이 문제는 CIFS 마운트 환경에서 다음 명령어로 재현할 수 있습니다:
bash -c ' FILE=/mnt/scratch/repro
# EOF가 페이지 정렬되지 않도록 6 KiB 파일을 사용함. dd if=/dev/urandom of=/tmp/src bs=1K count=6 status=none
# 예상 결과: 4 KiB의 hole 뒤에 원래 데이터가 옴. rm -f /tmp/expected truncate -s 4K /tmp/expected cat /tmp/src >> /tmp/expected
cp /tmp/src "$FILE"
# 서버 측에서 데이터를 이동하기 전에 페이지 캐시를 프리임(priming). cat "$FILE" > /dev/null
fallocate --insert-range -o 0 -l 4K "$FILE"
if cmp -s /tmp/expected "$FILE"; then echo "readback: OK" else echo "readback: STALE DATA" fi '
이 문제를 해결하기 위해, 서버 측에서 데이터를 이동하기 전에 `off`가 포함된 페이지의 시작부터 EOF까지의 영역에 대해 더티 데이터(dirty data)를 백쓰하고(page cache discard), 페이지 캐시를 비웁니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.