🇰🇷 한글 설명
Linux 커널의 netfilter nft_ct 구성 요소에서 타임아웃 객체 삭제 시 RCU grace period를 기다리지 않고 즉시 메모리를 해제하여 발생하는 Use-After-Free 취약점입니다. 이로 인해 다른 CPU에서 해당 객체를 참조하고 있을 때 메모리 오류나 시스템 불안정이 발생할 수 있습니다.
💡 쉬운 설명
데이터를 삭제할 때 다른 컴퓨터 부품이 아직 그 데이터를 사용 중인지 확인하지 않고 바로 지워버리는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 해킹 공격에 이용될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
netfilter: nft_ct: fix use-after-free in timeout object destroy
nft_ct_timeout_obj_destroy() frees the timeout object with kfree()
immediately after nf_ct_untimeout(), without waiting for an RCU grace
period. Concurrent packet processing on other CPUs may still hold
RCU-protected references to the timeout object obtained via
rcu_dereference() in nf_ct_timeout_data().
Add an rcu_head to struct nf_ct_timeout and use kfree_rcu() to defer
freeing until after an RCU grace period, matching the approach already
used in nfnetlink_cttimeout.c.
KASAN report:
BUG: KASAN: slab-use-after-free in nf_conntrack_tcp_packet+0x1381/0x29d0
Read of size 4 at addr ffff8881035fe19c by task exploit/80
Call Trace:
nf_conntrack_tcp_packet+0x1381/0x29d0
nf_conntrack_in+0x612/0x8b0
nf_hook_slow+0x70/0x100
__ip_local_out+0x1b2/0x210
tcp_sendmsg_locked+0x722/0x1580
__sys_sendto+0x2d8/0x320
Allocated by task 75:
nft_ct_timeout_obj_init+0xf6/0x290
nft_obj_init+0x107/0x1b0
nf_tables_newobj+0x680/0x9c0
nfnetlink_rcv_batch+0xc29/0xe00
Freed by task 26:
nft_obj_destroy+0x3f/0xa0
nf_tables_trans_destroy_work+0x51c/0x5c0
process_one_work+0x2c4/0x5a0
📍 영향받는 시스템
Linux Kernel (netfilter/nft_ct 모듈 사용 시스템)
⚔️ 공격 벡터
네트워크 패킷 처리를 통해 타임아웃 객체를 조작하여 메모리 해제 후 참조(Use-After-Free) 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 kfree_rcu()가 적용된 수정본을 사용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인합니다.