- 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ı
- 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ım | Etkilenen | Dü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
- CVE.org kaydı
- NVD kaydı
- git.kernel.org/…ble/c/95114e421196250e3d9662f12df442799477d3c3 Diğer
- git.kernel.org/…ble/c/e7183b7d518ce8b3e1f7284f9881d7a87569df14 Diğer
- git.kernel.org/…ble/c/181cb48c1e9af6b402567e132f879f89d1c54131 Diğer
- git.kernel.org/…ble/c/e7ea63b4195a150604993044ab574d8240f2a399 Diğer
- git.kernel.org/…ble/c/afae89de73dd693cfa329580ba0fba63bd3f0a11 Diğer
Kayıt geçmişi
- 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.