🇰🇷 한글 설명
Linux 커널의 netfs 구성 요소 내 netfs_read_gaps() 함수에서 sink folio를 조기에 해제하는 취약점이 발견되었습니다. 이로 인해 KASAN이 Use-After-Free(UAF) 오류를 감지하였으며, 이는 메모리 손상 및 시스템 불안정을 초래할 수 있습니다.
💡 쉬운 설명
데이터를 읽어오는 과정에서 이미 사용이 끝난 메모리 공간을 시스템이 실수로 다시 사용하려고 시도하는 오류입니다. 이 문제가 발생하면 컴퓨터 시스템이 갑자기 멈추거나 해킹의 통로가 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
netfs: Fix early put of sink folio in netfs_read_gaps()
Fix netfs_read_gaps() to release the sink page it uses after waiting for
the request to complete. The way the sink page is used is that an
ITER_BVEC-class iterator is created that has the gaps from the target folio
at either end, but has the sink page tiled over the middle so that a single
read op can fill in both gaps.
The bug was found by KASAN detecting a UAF on the generic/075 xfstest in
the cifsd kernel thread that handles reception of data from the TCP socket:
BUG: KASAN: use-after-free in _copy_to_iter+0x48a/0xa20
Write of size 885 at addr ffff888107f92000 by task cifsd/1285
CPU: 2 UID: 0 PID: 1285 Comm: cifsd Not tainted 7.0.0 #6 PREEMPT(lazy)
Call Trace:
dump_stack_lvl+0x5d/0x80
print_report+0x17f/0x4f1
kasan_report+0x100/0x1e0
kasan_check_range+0x10f/0x1e0
__asan_memcpy+0x3c/0x60
_copy_to_iter+0x48a/0xa20
__skb_datagram_iter+0x2c9/0x430
skb_copy_datagram_iter+0x6e/0x160
tcp_recvmsg_locked+0xce0/0x1130
tcp_recvmsg+0xeb/0x300
inet_recvmsg+0xcf/0x3a0
sock_recvmsg+0xea/0x100
cifs_readv_from_socket+0x3a6/0x4d0 [cifs]
cifs_read_iter_from_socket+0xdd/0x130 [cifs]
cifs_readv_receive+0xaad/0xb10 [cifs]
cifs_demultiplex_thread+0x1148/0x1740 [cifs]
kthread+0x1cf/0x210
📍 영향받는 시스템
Linux kernel (netfs subsystem 사용 버전, 특히 7.0.0 관련 환경)
⚔️ 공격 벡터
네트워크 소켓(TCP)을 통한 데이터 수신 과정에서 특수하게 조작된 패킷을 전송하여 메모리 오류 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인하십시오.