CVE-2026-45839
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: bpf: bpf_core_parse_spec() funksiyasında mənfi CO-RE accessor indekslərini rədd edin CO-RE accessor sətirləri kök BTF tipindən hədəf sahəyə qədər olan yolu təsvir edən iki nöqtə ilə ayrılmış indekslərdir, məsələn, "0:1:2" iç-içə struktur üzvləri boyunca keçidi ifadə edir. bpf_core_parse_spec() hər bir komponenti sscanf("%d") ilə analiz etdiyindən, -1 kimi mənfi dəyərlər səssiz şəkildə qəbul edilir. Sonrakı sərhəd yoxlamaları (access_idx >= btf_vlen(t)) yalnız yuxarı sərhədi qoruyur və mənfi dəyərlər üçün həmişə uğurlu olur, çünki C tam ədəd artımı (integer promotion) __u16 btf_vlen nəticəsini int tipinə çevirir və bu da istənilən müsbət N üçün (int)(-1) >= (int)(N) müqayisəsini yanlış edir. -1 dəyəri btf_member_bit_offset() funksiyasına çatdıqda o, u32 0xffffffff tipinə çevrilir və üzvlər massivinin çox xaricində sərhədlərdən kənar oxumaya (out-of-bounds read) səbəb olur. vmlinux BTF-də mövcud olan hər hansı struktura (məsələn, task_struct) mənfi CO-RE accessor tətbiq edilmiş xüsusi hazırlanmış BPF proqramı, CONFIG_DEBUG_INFO_BTF=y (əsas distribyusiyalarda standartdır) konfiqurasiyalı hər hansı sistemdə BPF_PROG_LOAD zamanı nüvəni (kernel) deterministik olaraq çökdürür. Bu xətaya CAP_BPF ilə daxil olmaq mümkündür: BUG: unable to handle page fault for address: ffffed11818b6626 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page Oops: Oops: 0000 [#1] SMP KASAN NOPTI CPU: 0 UID: 0 PID: 85 Comm: poc Not tainted 7.0.0-rc6 #18 PREEMPT(full) RIP: 0010:bpf_core_parse_spec (tools/lib/bpf/relo_core.c:354) RAX: 00000000ffffffff Call Trace: <TASK> bpf_core_calc_relo_insn (tools/lib/bpf/relo_core.c:1321) bpf_core_apply (kernel/bpf/btf.c:9507) check_core_relo (kernel/bpf/verifier.c:19475) bpf_check (kernel/bpf/verifier.c:26031) bpf_prog_load (kernel/bpf/syscall.c:3089) __sys_bpf (kernel/bpf/syscall.c:6228) </TASK> CO-RE accessor indeksləri təbiəti etibarilə qeyri-mənfidirlər (struktur üzvü indeksi, massiv elementi indeksi və ya enumerator indeksi), buna görə də onlar analiz edildikdən dərhal sonra rədd edilməlidir.
Necə düzəltmək olar
- linux linux_kernel5.15.209, 6.1.175, 6.6.141, 6.12.91, 6.18.33, 7.0.10 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 5.4 ≤ v < 5.15.209, 5.16 ≤ v < 6.1.175, 6.2 ≤ v < 6.6.141, 6.7 ≤ v < 6.12.91, 6.13 ≤ v < 6.18.33, 6.19 ≤ v < 7.0.10 | 5.15.209, 6.1.175, 6.6.141, 6.12.91, 6.18.33, 7.0.10 |
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.