CVE-2026-46116
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: xfrm: __xfrm_state_delete içinde xfrm_state listelerini savunmacı biçimde hash'ten çıkar KASAN, linux-6.12.y kararlı sürümünde syzkaller yükü altında __xfrm_state_delete() içindeki hlist_del_rcu çağrılarında bir slab-use-after-free durumunu yeniden üretmektedir (6.12.47 üzerinde yeniden üretilmiş, aynı kod yoluyla torvalds/master ve ipsec ağacında da erişilebilir). Dokuz benzersiz imza xfrm_state yaşam döngüsünde kümelenmekte olup, yükü taşıyan imza şudur: BUG: KASAN: slab-use-after-free in __hlist_del include/linux/list.h:990 [inline] BUG: KASAN: slab-use-after-free in hlist_del_rcu include/linux/rculist.h:516 [inline] BUG: KASAN: slab-use-after-free in __xfrm_state_delete net/xfrm/xfrm_state.c Write of size 8 at addr ffff8881198bcb70 by task kworker/u8:9/435 Workqueue: netns cleanup_net Call Trace: __hlist_del / hlist_del_rcu __xfrm_state_delete xfrm_state_delete xfrm_state_flush xfrm_state_fini ops_exit_list cleanup_net Gözlemlenen diğer imzalar, __xfrm_state_lookup, xfrm_alloc_spi, __xfrm_state_insert ve __xfrm_state_delete'in bir OOB yazma varyantından aynı slab nesnesine çarpmakta olup, hepsi byseq/byspi hash zincirleri üzerindedir. __xfrm_state_delete(), byseq ve byspi hash'ten çıkarmalarını değer tabanlı koşullarla korumaktadır: if (x->km.seq) hlist_del_rcu(&x->byseq); if (x->id.spi) hlist_del_rcu(&x->byspi); oysa dosyanın geri kalan her yerinde (ör. state_cache, state_cache_input) daha güvenli olan hlist_unhashed() kontrolü kullanılmaktadır. xfrm_alloc_spi(), xfrm_state_lock içinde x->id.spi = newspi atamasını yapar ve hemen ardından byspi'ye ekler; ancak x->id.spi != 0 değerini xfrm_state_lock dışında gözlemleyen bir yol, x'in gerçekte listede olup olmadığıyla tutarsız biçimde byspi hash'ten çıkarmasını atlayabilir veya gerçekleştirebilir. Aynı durum x->km.seq ile byseq için de geçerlidir ve bydst/bysrc hash'ten çıkarmalarının hiçbir koşulu yoktur; bu nedenle aynı nesne üzerinde ikinci bir __xfrm_state_delete() çağrısı LIST_POISON pprev üzerinden yazma yapar. Buradaki savunmacı değişiklik: - bydst, bysrc, byseq ve byspi üzerinde hlist_del_rcu() yerine hlist_del_init_rcu() kullanır; böylece ikinci bir silme işlemi LIST_POISON pprev üzerinden yazma yerine etkisiz bir işlem olur. byseq/byspi düğümleri zaten xfrm_state_alloc() içinde başlatılmaktadır. - byseq/byspi için değer koşulu yerine hlist_unhashed() testi yapar; böylece hash'ten çıkarma kararı değişebilir skaler alanlar yerine liste durumunu izler. Ampirik doğrulama: bu yama v6.12.47 üzerine uygulanmış, yeniden derlenmiş ve daha önce çöken ve xfrm_alloc_spi içinde Read / __xfrm_state_lookup içinde Read / __xfrm_state_delete içinde Write olmak üzere her birinden ~100 isabet üreten bir yapılandırmada aynı syzkaller koşum takımı 1s16d boyunca yeniden çalıştırılmıştır. Yama sonrasında, 32 VM üzerinde ~1550 exec/sn hızında 7,1M exec, sıfır xfrm_state UAF/OOB isabeti üretmiştir. /proc/slabinfo, xfrm_state slab'ının çalışma sırasında etkin biçimde tahsis edilip serbest bırakıldığını doğrulamaktadır (~143 KiB yerleşik), yani fuzzer bu kod yollarını hâlâ çalıştırmaktadır -- yalnızca artık çökmemektedirler. Yeniden üretim: - Linux 6.12.47 x86_64 + KASAN_GENERIC + KASAN_INLINE + KCOV - syzkaller @ 746545b8b1e4c3a128db8652b340d3df90ce61db - AWS c5.metal çıplak metal üzerinde 32 QEMU/KVM VM x 2 vCPU - ~9 saat içinde toplanan 9 benzersiz imza, hepsi xfrm_state yaşam döngüsü içinde
Nasıl düzeltilir
- linux linux_kernel5.15.210, 6.1.176, 6.6.140, 6.12.88, 6.18.30, 7.0.7 ya da sonraki bir sürüm
- access.redhat.com/errata/RHSA-2026:41235
- access.redhat.com/errata/RHSA-2026:41234
- access.redhat.com/errata/RHSA-2026:39371
- access.redhat.com/errata/RHSA-2026:42919
- access.redhat.com/errata/RHSA-2026:47739
- access.redhat.com/errata/RHSA-2026:43231
- access.redhat.com/errata/RHSA-2026:44385
- access.redhat.com/errata/RHSA-2026:36018
- access.redhat.com/errata/RHSA-2026:59143
- access.redhat.com/errata/RHSA-2026:39179
- access.redhat.com/errata/RHSA-2026:59146
- access.redhat.com/errata/RHSA-2026:47633
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 2.6.19 ≤ v < 5.15.210, 5.16 ≤ v < 6.1.176, 6.2 ≤ v < 6.6.140, 6.7 ≤ v < 6.12.88, 6.13 ≤ v < 6.18.30, 6.19 ≤ v < 7.0.7, 7.1 | 5.15.210, 6.1.176, 6.6.140, 6.12.88, 6.18.30, 7.0.7 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.