CVE-2026-45839
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: bpf: bpf_core_parse_spec() fonksiyonundaki negatif CO-RE erişici indeksleri reddedin CO-RE erişici dizeleri, bir kök BTF türünden hedef alana giden yolu tanımlayan iki nokta üst üste ile ayrılmış indekslerdir; örneğin "0:1:2" iç içe geçmiş struct üyeleri arasında gezinir. bpf_core_parse_spec(), her bileşeni sscanf("%d") ile ayrıştırdığından, -1 gibi negatif değerler sessizce kabul edilir. Sonraki sınır kontrolleri (access_idx >= btf_vlen(t)) yalnızca üst sınırı korur ve negatif değerler için her zaman geçerli olur çünkü C tam sayı terfisi (integer promotion), __u16 btf_vlen sonucunu int türüne dönüştürerek herhangi bir pozitif N için (int)(-1) >= (int)(N) karşılaştırmasını yanlış yapar. -1 değeri btf_member_bit_offset() fonksiyonuna ulaştığında u32 0xffffffff değerine dönüştürülür ve bu da members dizisinin çok ötesinde bir sınır dışı okuma (out-of-bounds read) işlemine neden olur. vmlinux BTF içinde mevcut olan herhangi bir struct üzerinde (örneğin task_struct) negatif bir CO-RE erişicisine sahip özel olarak hazırlanmış bir BPF programı, CONFIG_DEBUG_INFO_BTF=y seçeneğinin etkin olduğu (başlıca dağıtımlarda varsayılan) herhangi bir sistemde BPF_PROG_LOAD sırasında çekirdeği belirgin şekilde çökertebilir. Hata, CAP_BPF yetkisiyle tetiklenebilir: 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 erişici indeksleri doğası gereği negatif olamazlar (struct üye indeksi, dizi eleman indeksi veya numaralandırıcı indeksi), bu nedenle ayrıştırma işleminden hemen sonra reddedilmelidirler.
Nasıl düzeltilir
- linux linux_kernel5.15.209, 6.1.175, 6.6.141, 6.12.91, 6.18.33, 7.0.10 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| 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 |
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.