🇰🇷 한글 설명
Linux 커널의 CIFS 구현에서 O_TRUNC 플래그를 사용할 때 cifs_do_truncate() 함수가 적절한 캐시 무효화를 수행하지 않는 취약점입니다. 이로 인해 파일 크기를 줄일 때 fscache의 쿠키 크기 조정이 제대로 이루어지지 않아 오래된 캐시 데이터가 제공될 수 있습니다. 이를 해결하기 위해 cifs_setsize() 이후에 cifs_invalidate_cache()를 호출하도록 수정되었습니다.
💡 쉬운 설명
파일의 내용을 지우고 크기를 줄일 때, 컴퓨터가 예전에 저장해둔 잘못된 데이터를 계속 보여줄 수 있는 문제입니다. 이 취약점이 해결되면 파일 크기가 변했을 때 예전 데이터를 사용하지 않도록 강제로 초기화합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
cifs: use cifs_invalidate_cache() in cifs_do_truncate() for O_TRUNC
cifs_do_truncate() is invoked from cifs_open() without i_rwsem, so it
cannot use cifs_resize_file_locked() to perform a proper fscache cookie
resize. Instead, add cifs_invalidate_cache() after cifs_setsize().
cifs_invalidate_cache() calls fscache_invalidate(), which works without
holding i_rwsem: it unconditionally increments inval_counter and sets
FSCACHE_COOKIE_NO_DATA_TO_READ, ensuring that stale cached data is not
served once the cookie is later activated by fscache_use_cookie().
Truncation to zero leaves no valid cached data, making invalidation the
correct semantic here.
📍 영향받는 시스템
Linux Kernel (CIFS module 사용 시스템)
⚔️ 공격 벡터
로컬 또는 네트워크를 통해 CIFS 파일 시스템의 파일 크기를 0으로 만드는(Truncation) 동작을 수행하여 캐시 불일치 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.