🔍 CVE-2026-98968

0.0
CVSS Score
UNKNOWN
2026-10-23
2026-10-23 13:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 AMT(Automatic Multicast Tunneling) 드라이버에서 릴레이의 General Query를 큐를 거쳐 전송하는 과정에서, 큐에 남아 있던 skb가 이미 해제된 터널을 참조하여 use-after-free가 발생하는 문제가 수정되었습니다. 수정 후 쿼리는 수신 경로에서 직접 전송되며, 큐 경로 및 관련 코드가 제거되었습니다.

💡 쉬운 설명

네트워크 패킷이 대기열에 오래 머무는 동안 그 패킷이 가리키던 연결 정보가 이미 삭제되어, 잘못된 메모리를 읽어 시스템이 불안정해질 수 있는 문제입니다. 이번 수정은 패킷을 대기열에 넣지 않고 바로 보내도록 바꿔 이 문제를 없앱니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: amt: send the relay's General Query directly from the receive path An skb queued in a qdisc can outlive the tunnel it references through a raw pointer in skb->cb. For example, with igmp_qrv set to 1 on the relay a tunnel lives for 135s, so a netem delay of 180s on the amt device outlives it; when the tunnel expires and is freed, the subsequent dequeue triggers a use-after-free in amt_dev_xmit(). BUG: KASAN: slab-use-after-free in amt_dev_xmit+0x2763/0x2e20 Call Trace: amt_dev_xmit+0x2763/0x2e20 [drivers/net/amt.c:1262] dev_hard_start_xmit+0x22f/0x620 sch_direct_xmit+0x12e/0xac0 netem_dequeue+0x333/0xc50 net_tx_action+0x35c/0xa60 amt_send_igmp_gq() and amt_send_mld_gq() are only called from amt_request_handler(), inside the rcu_read_lock_bh() section of amt_rcv(). amt_request_handler() already has the tunnel the query is for: it found or created it inside that section. Queuing the query with dev_queue_xmit() only leads back into amt_dev_xmit(), which strips the Ethernet header and calls amt_send_membership_query() for that tunnel. Make that call directly from the two senders instead, the same way amt_send_advertisement() transmits from the receive path. The query never waits in a qdisc, the tunnel is only dereferenced inside the RCU section that found or created it, and nothing is stored in skb->cb, so no lookup or refcount is needed. Remove the query branch of amt_dev_xmit(), amt_skb_cb() and struct amt_skb_cb, which have no users left. Behaviour changes: - The relay's own General Queries no longer pass through the amt device's egress path: its qdisc, tc egress (clsact/tcx), the netfilter egress hook and packet taps. They are still visible as UDP on the underlay. - A query that is sent successfully is no longer counted as tx_dropped. The old query branch left through the unlock label, which counted every sent query as dropped. - A query that reaches amt_dev_xmit() on a relay from elsewhere, such as a userspace querier, is now dropped at the IGMP/MLD type switch. Before, it trusted whatever skb->cb held, and a NULL tunnel hit the WARN_ON(1).

📍 영향받는 시스템

AMT 드라이버(drivers/net/amt.c)를 포함하는 Linux 커널 버전 (수정 커밋 이전 버전)

⚔️ 공격 벡터

AMT 릴레이 환경에서 지연된 패킷이 큐에 머무는 동안 터널이 만료되어 해제되면, 이후 디큐 과정에서 메모리 손상 또는 커널 크래시가 발생할 수 있음

🛡️ 대응 방법

해당 수정이 포함된 최신 Linux 커널 버전으로 업데이트하고 재부팅

🔧 검증 코드

출력된 커널 버전을 배포판의 보안 권고나 커널 changelog와 비교해 CVE-2026-98968 수정이 포함되었는지 확인하며, 배포판 패키지 관리자의 변경 로그를 함께 확인합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel