CVE-2026-64063 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 20.

리눅스 커널에서 다음 취약점이 해결되었습니다:

netfs: 스트리밍 쓰기 중 데이터가 덮어씌워지는 문제 수정

쓰기 도중 읽기가 발생하는 것을 방지하기 위해, netfslib은 더티 데이터를 먼저 읽어들이지 않고 직접 folio에 저장하는 "스트리밍 쓰기(streaming writes)"를 허용합니다. 이러한 folio는 더티(dirty)로 표시되지만 uptodate 상태로 표시되지 않을 수 있습니다. 스트리밍 쓰기에 의해 folio 전체가 작성된 경우 uptodate 플래그가 설정되며, 그렇지 않은 경우에는 ->private 필드에 netfs_folio 구조체가 연결되어 더티 영역을 기록합니다.

부분적으로만 작성된 스트리밍 쓰기 페이지를 단일 write() 호출로 완전히 덮어씌워야 하는 상황에서는 netfs_perform_write()가 이를 복사하려고 시도하지만, 성공하더라도 netfs_folio를 해제하지 않습니다. 또한 일부 복사가 더티 데이터의 일부를 덮어쓸 경우 올바르게 처리되지 않는 문제가 있었습니다.

이를 다음 방법으로 수정합니다:

(1) folio에 대한 쓰기가 성공적으로 완료되면, 페이지를 uptodate로 표시하기 전에 netfs_folio 구조체를 해제(free)합니다.

(2) folio로의 복사가 더티 데이터 영역 직전까지 부분적으로 실패하는 경우, 복사 작업을 무시합니다.

(3) 복사가 부분적으로 실패하여 더티 데이터의 일부를 덮어쓰는 경우, 복사된 데이터를 수용하고 netfs_folio 구조체를 업데이트하여 새 데이터를 기록합니다. 이제 folio가 완전히 채워진 경우 netfs_folio를 해제하고 uptodate 플래그를 설정하며, 그렇지 않은 경우 부분 쓰기(partial write)로 반환합니다.

다음 명령어로 발견되었습니다:

fsx -q -N 1000000 -p 10000 -o 128000 -l 600000 \ /xfstest.test/junk --replay-ops=junk.fsxops

junk.fsxops 파일의 내용은 다음과 같습니다:

truncate 0x0 0 0x927c0 write 0x63fb8 0x53c8 0 copy_range 0xb704 0x19b9 0x24429 0x79380 write 0x2402b 0x144a2 0x90660 * write 0x204d5 0x140a0 0x927c0 * copy_range 0x1f72c 0x137d0 0x7a906 0x927c0 * read 0x00000 0x20000 0x9157c read 0x20000 0x20000 0x9157c read 0x40000 0x20000 0x9157c read 0x60000 0x20000 0x9157c read 0x7e1a0 0xcfb9 0x9157c

기본 캐시 옵션이 설정된 cifs 환경에서 테스트되었습니다.

netfs_perform_write() 함수 내에서 FMODE_READ 체크를 주석 처리하면 folio 0x24가 비정상적으로 동작하는 것이 확인됩니다:

if (//(file->f_mode & FMODE_READ) || netfs_is_cache_enabled(ctx)) {

그리고 fscache가 사용되지 않는 경우입니다. 이 문제는 처음에 generic/522 xfstest를 사용하여 발견되었습니다.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-380205

EPSS

0.00000

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!