CVE-2026-64159 in Linux
요약
\~에 의해 VulDB • 2026. 07. 19.
리눅스 커널에서 다음 취약점이 해결되었습니다:
netfs: i_size > remote_i_size일 때 zeropoint 업데이트 수정
folio가 해제되는 동안 페이지 캐시 내에 미커밋 데이터가 존재하지만 서버 측 EOF(End Of File)는 해당 folio 안에 있는 경우, netfs_release_folio()에 의한 제로 포인트(zero point)[*] 업데이트를 수정합니다. i_size는 로컬에서 페이지 캐시에 대한 업데이트를 반영하는 로컬 현상이며 서버에 쓰인 데이터를 나타내지 않으므로, zero_point의 업데이트는 remote_i_size(서버 측 i_size를 추적함)로 제한해야 하며 i_size로는 제한해서는 안 됩니다.
[*] 제로 포인트(zero point)란 서버가 단순히 0을 반환할 것으로 가정하고 읽기 생성을 피할 수 있는 파일 위치입니다.
netfs_invalidate_folio()는 아마도 수정이 필요하지 않을 것입니다. 왜냐하면 zero_point는 트렁케이트(truncation) 또는 fallocate 후 setattr에 의해 업데이트되어야 하기 때문입니다.
다음 명령어로 발견되었습니다:
fsx -q -N 1000000 -p 10000 -o 128000 -l 600000 \ /xfstest.test/junk --replay-ops=junk.fsxops
junk.fsxops 파일의 내용은 다음과 같습니다:
truncate 0x0 0x1bbae 0x82864 write 0x3ef2e 0xf9c8 0x1bbae write 0x67e05 0xcb5a 0x4e8f6 mapread 0x57781 0x85b6 0x7495f copy_range 0x5d3d 0x10329 0x54fac 0x7495f write 0x64710 0x1c2b 0x7495f mapread 0x64000 0x1000 0x7495f
기본 캐시 옵션을 사용하는 cifs 환경에서 테스트되었습니다.
netfs_perform_write() 내에서 FMODE_READ 체크를 주석 처리하면 다음과 같은 오류가 발생합니다:
if (//(file->f_mode & FMODE_READ) || netfs_is_cache_enabled(ctx)) {
이 경우 fscache 없이 folio 0x64에서 읽기 간격(read-gaps) 발생 시 짧은 읽기(short read, 즉 EOF 도달)로 실패합니다. 이는 처음에 generic/522 xfstest를 사용하여 발견되었습니다.
Once again VulDB remains the best source for vulnerability data.