CVE-2026-98642

Orta

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: bpf: alloc_bulk funksiyasında ttrace siyahılarının eyni vaxtda istifadəsi səbəbindən yaranan UAF xətasının düzəldilməsi Syzkaller, bpf memalloc daxilindəki waiting_for_gp_ttrace düyünləri ilə bağlı təkrarlanan UAF xətalarını aşkar etmişdir: BUG: KASAN: slab-use-after-free in llist_del_first+0x85/0x110 lib/llist.c:61 Read of size 8 at addr ffff8881572cd080 by task syz.4.470/5112 ... llist_del_first+0x85/0x110 lib/llist.c:61 alloc_bulk+0x193/0x460 kernel/bpf/memalloc.c:229 bpf_mem_refill+0x386/0x560 kernel/bpf/memalloc.c:436 Freed by task 14: ... __free_rcu kernel/bpf/memalloc.c:281 [inline] __free_rcu_tasks_trace+0x48/0xd0 kernel/bpf/memalloc.c:291 rcu_tasks_invoke_cbs+0x1ec/0x3e0 kernel/rcu/tasks.h:571 rcu_tasks_one_gp+0x13d/0x220 kernel/rcu/tasks.h:621 rcu_tasks_kthread+0xf3/0x120 kernel/rcu/tasks.h:651 Bunun səbəbi odur ki, UAF xətası RCU Tasks Trace GP müddəti bitdikdən sonra baş verir: __free_rcu() geri çağırışı işə düşdükdə, llist_del_all() funksiyasının waiting_for_gp_ttrace üzərində əməliyyat aparan eyni vaxtlı alloc_bulk() funksiyasına qarşı qoruyucu sinxronizasiya mövcud deyil və bu, aşağıdakı yarış şəraitinə (race condition) səbəb olur: CPU0 CPU1 __free_rcu (RCU Tasks Trace callback) alloc_bulk llist_del_first(&c->waiting_for_gp_ttrace) entry = smp_load_acquire(&head->first); do { if (entry == NULL) return NULL; free_all(llist_del_all(&c->waiting_for_gp_ttrace)) llist_for_each_safe(pos, t, llnode) free_one(pos); next = READ_ONCE(entry->next); <-- trigger UAF } while (!try_cmpxchg(&head->first, &entry, next)); Əlavə olaraq, free_by_rcu_ttrace siyahısında da nəzəri bir yarış şəraiti mövcuddur. Bu yarış üçün iki ilkin şərt tələb olunur: c->call_rcu_ttrace_in_progress == 1 vəziyyətini saxlayan aktiv bir Tasks Trace GP və c->free_by_rcu_ttrace siyahısını yeni düyünlərlə yenidən dolduran eyni vaxtlı çarpaz-CPU azad etmə əməliyyatları. Bu şərtlər altında aşağıdakı ssenari UAF xətasını tetikləyir: // CPU0 // irq work hələ də məşğuldur (PREEMPT_RT-də) alloc_bulk() llist_del_first(&c->free_by_rcu_ttrace) entry = smp_load_acquire(&head->first); do { if (entry == NULL) return NULL; // CPU1 bpf_mem_alloc_destroy() WRITE_ONCE(c->draining, true) // CPU0-ın gözlənilməsi irq_work_sync() // CPU2 do_call_rcu_ttrace(tgt(CPU0)) if (c->draining) { llist_del_all(&c->free_by_rcu_ttrace) free_all() } // CPU0 davam edir next = READ_ONCE(entry->next); <-- trigger UAF while (!try_cmpxchg(&head->first, &entry, next)); Bu problem, waiting_for_gp_ttrace və free_by_rcu_ttrace üzərindəki eyni vaxtlı istehlakı sinxronlaşdırmaq üçün raw spinlock tətbiq edilməklə həll edilmişdir.

CiddilikOrta
CVSS6.4
İstismar ehtimalı—
MəhsulMicrosoft Azl3 Kernel
Dərc18 okt 2026
İlk görülmə18 okt 2026

Necə düzəltmək olar

Mənbələrdə bu zəiflik üçün düzəldilmiş versiya və ya yamaq keçidi yoxdur.

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
microsoft azl3_kernel_6.6.157.1-1Aralıq göstərilməyib—
microsoft azl3_kernel_6.6.159.1-1Aralıq göstərilməyib—

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.

Intelligence 360 paketində

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.

CVE-2026-98642 · Microsoft Azl3 Kernel · Dark Radar