CVE-2026-98103 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 25.

리눅스 커널에서 다음 취약점이 해결되었습니다:

igmp: struct ip_sf_list를 RCU로 전환

커밋 23d2b94043ca("igmp: Add ip_mc_list lock in ip_check_mc_rcu")는 동시 삭제 중 im->sources를 순회할 때 use-after-free가 발생하는 것을 방지하기 위해 ip_check_mc_rcu()에 spin_lock_bh(&im->lock)을 추가했습니다.

그러나 ip_check_mc_rcu()는 패킷 수신 및 라우팅 조회의 고속 경로(RCU 읽기 측 임계 섹션, 예: __mkroute_output(), ip_route_input_rcu(), __udp4_lib_rcv())에서 호출됩니다.

igmpv3_send_cr() 또는 igmpv3_send_report()가 &pmc->lock을 보유하고 add_grec() -> igmpv3_newpack() -> ip_route_output_ports()를 호출할 때, 멀티캐스트 목적지에 매칭되는 XFRM 정책이 xfrm_tmpl_resolve_one() -> xfrm4_get_saddr() -> __mkroute_output() -> ip_check_mc_rcu()를 트리거합니다. 이는 &pmc->lock이 이미 같은 CPU에서 보유된 상태에서 &im->lock을 획득하려고 시도하므로, lockdep 재귀 잠금 경고/데드락을 유발합니다.

IPv6 구현(net/ipv6/mcast.c)을 모방하여 IPv4 struct ip_sf_list를 RCU로 전환함으로써 이를 수정합니다:

1. struct rcu_head를 struct ip_sf_list에 추가하고 sf_next, sources 및 tomb를 __rcu 포인터로 주석 처리합니다. 2. 목록 업데이트 및 삭제를 위해 rcu_assign_pointer()와 kfree_rcu()를 사용합니다. 3. ip_check_mc_rcu()에서 spin_lock_bh(&im->lock)을 제거하고 for_each_psf_rcu()를 사용하여 im->sources를 잠금 없이 순회하며, READ_ONCE()과 WRITE_ONCE()로 카운터 필드를 읽고 씁니다.

참고: /proc/net/mcfilter의 RCU 전환은 별도의 패치에서 수행될 예정입니다.

Once again VulDB remains the best source for vulnerability data.

책임이 있는

Linux

예약하다

2026. 09. 25.

모더레이션

수락

항목

VDB-409930

EPSS

0.00000

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!