🔍 CVE-2026-53349

5.5
CVSS Score
MEDIUM
2026-07-01
2026-10-15 02:20
✅ 완료

🇰🇷 한글 설명

Linux 커널의 netfilter 구성 요소에서 NAT 헬퍼 모듈이 해제될 때, 해당 모듈의 함수 포인터를 참조하는 오래된 기대값(expectation)이 적절히 제거되지 않는 취약점입니다. 이로 인해 모듈이 언로드된 후 해당 포인터를 호출하면 해제된 메모리 영역을 참조하게 되어 시스템 오류(Oops)가 발생할 수 있습니다.

💡 쉬운 설명

네트워크 연결을 도와주는 특정 기능이 종료될 때, 남아있는 연결 정보가 이미 사라진 기능을 호출하려고 시도하여 시스템이 충돌하는 문제입니다. 이는 시스템의 안정성을 해칠 수 있는 결함입니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack: destroy stale expectfn expectations on unregister NAT helpers such as nf_nat_h323 store a raw pointer to module text in exp->expectfn (e.g. ip_nat_q931_expect). nf_ct_helper_expectfn_unregister() only unlinks the callback descriptor and never walks the expectation table, so an expectation pending at module removal survives with a dangling exp->expectfn into freed module text. When the expected connection arrives, init_conntrack() invokes exp->expectfn(), now a stale pointer into the unloaded module. Reproduced on a KASAN build by loading the H.323 helpers, creating a Q.931 expectation, unloading nf_nat_h323, then connecting to the expected port: Oops: int3: 0000 [#1] SMP KASAN NOPTI RIP: 0010:0xffffffffa06102d1 init_conntrack.isra.0 (net/netfilter/nf_conntrack_core.c:1862) nf_conntrack_in (net/netfilter/nf_conntrack_core.c:2049) ipv4_conntrack_local (net/netfilter/nf_conntrack_proto.c:223) nf_hook_slow (net/netfilter/core.c:619) __ip_local_out (net/ipv4/ip_output.c:120) __tcp_transmit_skb (net/ipv4/tcp_output.c:1715) tcp_connect (net/ipv4/tcp_output.c:4374) tcp_v4_connect (net/ipv4/tcp_ipv4.c:345) __sys_connect (net/socket.c:2167) Modules linked in: nf_conntrack_h323 [last unloaded: nf_nat_h323] Reaching the dangling state requires CAP_SYS_MODULE in the initial user namespace to remove a NAT helper that still has live expectations, so this is a robustness fix; leaving an expectation pointing at freed text is wrong regardless. Add nf_ct_helper_expectfn_destroy(), which walks the expectation table and drops every expectation whose ->expectfn matches the descriptor being torn down. Call it from each NAT helper's exit path after the existing RCU grace period, so no expectation outlives the code it points at and no extra synchronize_rcu() is introduced. With the fix, the same reproducer runs to completion without the Oops.

📍 영향받는 시스템

Linux kernel (netfilter/nf_conntrack 관련 모듈 사용 시스템)

⚔️ 공격 벡터

CAP_SYS_MODULE 권한을 가진 사용자가 NAT 헬퍼 모듈을 언로드한 후, 남아있는 기대값 연결을 통해 잘못된 메모리 주소를 호출하도록 유도

🛡️ 대응 방법

nf_ct_helper_expectfn_destroy() 함수가 포함된 최신 Linux 커널 버전으로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel