CVE-2026-46116
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: xfrm: __xfrm_state_delete funksiyasında xfrm_state siyahılarının ehtiyat tədbiri olaraq hash-lərdən çıxarılması linux-6.12.y stabil versiyasında (6.12.47-də təkrarlandı, həmçinin torvalds/master və ipsec budaqlarında eyni kod yolu ilə əlçatandır) syzkaller yükü altında KASAN, __xfrm_state_delete() funksiyasındakı hlist_del_rcu çağırışlarında slab-use-after-free xətasını aşkar edir. xfrm_state həyat dövründə doqquz unikal imza qruplaşdırılır, bunlardan ən kritik olanı budur: 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 Digər müşahidə edilən imzalar byseq/byspi hash zəncirləri üzərində __xfrm_state_lookup, xfrm_alloc_spi, __xfrm_state_insert və __xfrm_state_delete-nin OOB yazma variantından eyni slab obyektinə müraciət edir. __xfrm_state_delete() özünün byseq və byspi unhash proseslərini dəyərəsaslı predikatlarla qoruyur: if (x->km.seq) hlist_del_rcu(&x->byseq); if (x->id.spi) hlist_del_rcu(&x->byspi); halbuki faylın digər yerlərində (məsələn, state_cache, state_cache_input) daha təhlükəsiz olan hlist_unhashed() yoxlamasından istifadə olunur. xfrm_alloc_spi() funksiyası xfrm_state_lock daxilində x->id.spi = newspi təyin edir və dərhal byspi-yə daxil edir, lakin xfrm_state_lock xaricində x->id.spi != 0 olduğunu görən bir yol, x-in faktiki olaraq siyahıda olub-olmaması ilə uyğunsuz şəkildə byspi unhash prosesini ötürə və ya ona toxuna bilər. Eynisi x->km.seq və byseq üçün də keçərlidir; bydst/bysrc unhash proseslərində isə heç bir predikat yoxdur, buna görə də eyni obyekt üzərində ikinci __xfrm_state_delete() çağırışı LIST_POISON pprev vasitəsilə yazma əməliyyatı yerinə yetirir. Buradakı müdafiəvi dəyişiklik: - bydst, bysrc, byseq və byspi üzərində hlist_del_rcu() əvəzinə hlist_del_init_rcu() istifadə edin ki, ikinci silmə əməliyyatı LIST_POISON pprev vasitəsilə yazma əvəzinə boş əməliyyat (no-op) olsun. byseq/byspi düyünləri artıq xfrm_state_alloc()-da başladılıb. - byseq/byspi üçün dəyər predikatı əvəzinə hlist_unhashed() yoxlamasını tətbiq edin, beləliklə unhash qərarı dəyişdirilə bilən skalyar sahələri deyil, siyahı vəziyyətini izləsin. Empirik təsdiqləmə: bu yam (patch) v6.12.47 üzərinə tətbiq edildi, yenidən quruldu və əvvəllər çöküşlərə səbəb olan konfiqurasiyada eyni syzkaller sınağı 1 saat 16 dəqiqə ərzində yenidən işlədildi. Bu konfiqurasiya əvvəllər xfrm_alloc_spi-də Oxuma / __xfrm_state_lookup-da Oxuma / __xfrm_state_delete-də Yazma şəklində hər birindən ~100 slab-use-after-free xətası istehsal etmişdi. Yamdan sonra 32 VM-də saniyədə ~1550 icra ilə 7.1 milyon icra zamanı sıfır xfrm_state UAF/OOB xətası aşkar edildi. /proc/slabinfo təsdiqləyir ki, xfrm_state slab-ı iş zamanı aktiv şəkildə ayrılır və azad edilir (~143 KiB rezident), yəni fuzzer hələ də həmin kod yollarını yoxlayır — sadəcə onlar artıq çökmür. Təkrarlandırma: - Linux 6.12.47 x86_64 + KASAN_GENERIC + KASAN_INLINE + KCOV - syzkaller @ 746545b8b1e4c3a128db8652b340d3df90ce61db - AWS c5.metal bare metal üzərində 32 QEMU/KVM VM x 2 vCPU - Təxminən 9 saat ərzində toplanmış 9 unikal imza, hamısı xfrm_state həyat dövrü daxilindədir.
Necə düzəltmək olar
- linux linux_kernel5.15.210, 6.1.176, 6.6.140, 6.12.88, 6.18.30, 7.0.7 və ya daha yeni versiya
- 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
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| 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 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.