Zafiyet.live Keşfet. Değerlendir. Düzelt. Doğrula.
  • Son 7 gün

CVE-2026-98968

Linux çekirdeğindeki amt sürücüsünde, tünel serbest bırakıldıktan sonra kullanılan bellek (use-after-free) hatası

Linux

Yüksek 8,1 CVSS 3.1
Yayımlandı
Güncellendi
24 Eki 2026
Açık yaşı
5 gün
Kaydı açan
Linux

ÖzetTürkçe

Linux çekirdeğinde amt sürücüsü ile ilgili bir sorun giderilmiştir. Bir kuyruk disiplininde (qdisc) bekleyen bir skb, skb->cb içindeki ham bir işaretçi aracılığıyla kendisine başvuran tüneli, tünel sona erip serbest bırakıldıktan sonra da referans olarak tutabilmektedir. Örneğin, röleda igmp_qrv değeri 1 olarak ayarlandığında bir tünel 135 saniye yaşar; amt aygıtında 180 saniyelik bir netem gecikmesi uygulandığında kuyruktaki paket tünelden uzun süre sonra çıkar. Tünel serbest bırakıldıktan sonra yapılan dequeue işlemi amt_dev_xmit içinde kullanılan bellek (use-after-free) hatasını tetikler. Düzeltmede, amt_send_igmp_gq ve amt_send_mld_gq fonksiyonları artık sorguyu doğrudan alım yolundan gönderir; böylece sorgu kuyrukta beklemez, tünel yalnızca bulunduğu RCU bölümü içinde kullanılır ve skb->cb kullanılmaz. amt_dev_xmit içindeki sorgu dalı, amt_skb_cb fonksiyonu ve amt_skb_cb yapısı kaldırılmıştır. Davranış değişiklikleri: rölenin kendi genel sorguları artık amt aygıtının çıkış yolundan (qdisc, tc egress, netfilter çıkış kancası ve paket izleyicileri) geçmez, ancak alt katmanda UDP olarak görünmeye devam eder. Başarıyla gönderilen sorgular artık tx_dropped olarak sayılmaz. Röleye başka bir yerden, örneğin kullanıcı alanındaki bir sorgulayıcıdan gelen sorgular artık IGMP/MLD tür kontrolünde düşürülür; önceden skb->cb içeriğine güveniliyor ve NULL tünel WARN_ON(1) tetikliyordu. Etkilenen sürümler: 5.16 sürümü. Düzeltilmiş sürümler: 6.6.160, 6.12.113, 6.18.57 ve 7.2.11 ve sonrası.

Kaynaktaki açıklama (İngilizce)

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).

Bu açığın açıklamasını Türkçeye çevirdik. Adım adım çözüm önerilerini kritik ve yeni açıklar için hazırlıyoruz; düzeltilmiş sürüm aşağıdaki tabloda, ayrıntılar üreticinin duyurusunda.

Etkilenen sürümler1 yazılım

YazılımEtkilenenDüzeltildiği sürüm
Linux 5.16 –
< 5.16 Etkilenmiyor –
≥ 6.6.160 Etkilenmiyor –
≥ 6.12.113 Etkilenmiyor –
≥ 6.18.57 Etkilenmiyor –
≥ 7.2.11 Etkilenmiyor –

Kaynaklar7 kaynak

Kayıt geçmişi

  1. Yayımlandı

İlgili açıklar

Türkçe metin, resmi kayıtlardaki bilgilerle yapay zekâ yardımıyla yazıldı ve yayından önce otomatik kontrollerden geçti. Bir değişikliği uygulamadan önce üreticinin duyurusuna mutlaka bakın.