🇰🇷 한글 설명
Linux 커널의 cachefiles 구성 요소에서 ondemand-mode 사용 시 NULL 포인터 역참조가 발생하는 취약점입니다. 할당된 파일 디스크립터와 object->file의 수명 주기가 일치하지 않아, umount 과정에서 파일 객체가 해제된 후에도 쓰기 작업이 시도될 때 시스템 오류가 발생합니다.
💡 쉬운 설명
컴퓨터가 데이터를 저장하는 과정에서 이미 삭제된 파일 정보를 참조하려고 시도하여 시스템이 멈추거나 오류가 발생하는 문제입니다. 파일이 사라지는 시점과 데이터를 쓰는 시점이 맞지 않아 발생하는 충돌입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
cachefiles: Fix NULL pointer dereference in object->file
At present, the object->file has the NULL pointer dereference problem in
ondemand-mode. The root cause is that the allocated fd and object->file
lifetime are inconsistent, and the user-space invocation to anon_fd uses
object->file. Following is the process that triggers the issue:
[write fd] [umount]
cachefiles_ondemand_fd_write_iter
fscache_cookie_state_machine
cachefiles_withdraw_cookie
if (!file) return -ENOBUFS
cachefiles_clean_up_object
cachefiles_unmark_inode_in_use
fput(object->file)
object->file = NULL
// file NULL pointer dereference!
__cachefiles_write(..., file, ...)
Fix this issue by add an additional reference count to the object->file
before write/llseek, and decrement after it finished.
📍 영향받는 시스템
Linux Kernel (cachefiles 구성 요소가 포함된 버전)
⚔️ 공격 벡터
특정 조건(ondemand-mode)에서 파일 시스템을 언마운트(umount)하는 동시에 파일 쓰기 작업을 유도하여 시스템 충돌 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 object->file에 대한 참조 카운트 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 수정된 패치 버전인지 제조사의 보안 공지사항과 대조하여 확인