🇰🇷 한글 설명
Linux 커널의 netfs 구성 요소에서 netfs_alloc_subrequest() 함수가 실패할 경우, NULL 포인터를 참조하여 발생하는 취약점입니다. netfs_prepare_write() 함수가 할당되지 않은 subreq 객체의 멤버를 초기화하려고 시도할 때 Null Pointer Dereference가 발생합니다.
💡 쉬운 설명
시스템이 데이터를 저장하려고 할 때 메모리 할당에 실패하면, 컴퓨터가 존재하지 않는 주소를 참조하여 오류가 발생하거나 시스템이 멈출 수 있습니다. 이는 특정 상황에서 커널이 비정상적으로 종료될 수 있음을 의미합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
netfs: break unbuffered write when netfs_alloc_subrequest() fails
syzbot reported a null-ptr-deref below [1] following a fault injection in
netfs_alloc_subrequest(). [0]
When netfs_alloc_subrequest() fails, subreq is NULL.
Later, netfs_prepare_write() tries to initialize members of
subreq(e.g., source), the issue in [1] is triggered.
Let's handle the error of netfs_prepare_write() properly.
[0]
FAULT_INJECTION: forcing a failure.
name failslab, interval 1, probability 0, space 0, times 0
Call Trace:
netfs_alloc_subrequest+0x116/0x3f0
netfs_prepare_write+0x76/0x7b0
netfs_unbuffered_write+0x75c/0x2020
netfs_unbuffered_write_iter_locked+0x7d6/0xa80
netfs_unbuffered_write_iter+0x442/0x720
v9fs_file_write_iter+0xbf/0x100
vfs_write+0x6ac/0x1050
[1]
KASAN: null-ptr-deref in range [0x00000000000000a8-0x00000000000000af]
RIP: 0010:netfs_prepare_write+0xbc/0x7b0 fs/netfs/write_issue.c:173
Call Trace:
netfs_unbuffered_write+0x75c/0x2020 fs/netfs/direct_write.c:111
netfs_unbuffered_write_iter_locked+0x7d6/0xa80 fs/netfs/direct_write.c:290
netfs_unbuffered_write_iter+0x442/0x720 fs/netfs/direct_write.c:382
v9fs_file_write_iter+0xbf/0x100 fs/9p/vfs_file.c:409
new_sync_write fs/read_write.c:595 [inline]
📍 영향받는 시스템
Linux kernel (netfs subsystem 사용 버전)
⚔️ 공격 벡터
결함 주입(Fault Injection)을 통한 메모리 할당 실패 유도 또는 특정 파일 시스템 쓰기 작업 수행
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 netfs_prepare_write()의 에러 핸들링 로직을 적용해야 합니다.
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.