CVE-2026-98968 in Linux정보

요약

\~에 의해 VulDB • 2026. 10. 23.

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

amt: 수신 경로에서 직접 릴레이의 일반 쿼리를 전송합니다.

qdisc에 큐잉된 skb는 skb->cb 내의 원시 포인터를 통해 참조하는 터널보다 더 오래 생존할 수 있습니다. 예를 들어, 릴레이에서 igmp_qrv가 1로 설정되어 있으면 터널은 135초 동안 유지되므로, amt 장치에서의 netem 지연 시간(180초)이 이를 초과합니다; 터널이 만료되고 해제되면 후속 디큐잉(dequeue) 동작으로 인해 amt_dev_xmit()에서 use-after-free가 발생합니다.

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() 및 amt_send_mld_gq()는 amt_rcv()의 rcu_read_lock_bh() 섹션 내부인 amt_request_handler()에서만 호출됩니다. amt_request_handler()에는 쿼리가 대상인 터널이 이미 존재합니다: 해당 섹션 내에서 이를 찾거나 생성했기 때문입니다. dev_queue_xmit()를 통해 쿼리를 큐잉하면 다시amt_dev_xmit()로 돌아가며, 이는 이더넷 헤더를 제거하고 해당 터널에 대해 amt_send_membership_query()를 호출합니다.

대신 두 전송자에서 직접 해당 호출을 수행하십시오. 이는 amt_send_advertisement()가 수신 경로로부터 전송하는 방식과 동일합니다. 쿼리는 qdisc 내에서 대기하지 않으며, 터널은 이를 찾거나 생성한 RCU 섹션 내부에서만 역참조(dereferenced)되고 skb->cb에 아무것도 저장되지 않으므로 조회나 참조 카운트가 필요 없습니다. 더 이상 사용자가 없는 amt_dev_xmit()의 쿼리 분기, amt_skb_cb(), struct amt_skb_cb를 제거합니다.

동작 변경 사항: - 릴레이 자체의 일반 쿼리는 이제 amt 장치의 이그레스 경로(qdisc, tc egress (clsact/tcx), netfilter 이그레스 훅 및 패킷 탭)를 통과하지 않습니다. 여전히 언더레이(underlay) 상에서 UDP로 표시됩니다. - 성공적으로 전송된 쿼리는 더 이상 tx_dropped로 카운트되지 않습니다. 이전의 쿼리 분기는 잠금 해제 라벨을 통해 빠져나가며, 전송된 모든 쿼리를 dropped로 카운팅했습니다. - 다른 곳(예: 사용자 공간 querier)에서 릴레이로의 amt_dev_xmit()에 도달하는 쿼리는 이제 IGMP/MLD 유형 스위치에서 드롭됩니다. 이전에는 skb->cb가 포함하는 내용에 무조건 신뢰했으며, NULL 터널은 WARN_ON(1)을 발생시켰습니다.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

책임이 있는

Linux

예약하다

2026. 09. 25.

모더레이션

수락

항목

VDB-425768

EPSS

0.00000

활동

낮음

출처

Do you know our Splunk app?

Download it now for free!