CVE-2026-45933

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: bpf: sync_linked_regs() fonksiyonunda register id değeri korunuyor sync_linked_regs(), known_reg'in sınırlarını known_reg'in off değerini kullanarak reg'e yayarken, known_reg'in id değerini reg'e kopyalar; ancak known_reg şu şekilde reg ile ilişkilendirildiğinde: known_reg = reg ; hem known_reg hem de reg aynı id değerini alır known_reg += 4 ; known_reg off = 4 değerini alır ve id değeri BPF_ADD_CONST olur şimdi bir sync_linked_regs() çağrısı gerçekleştiğinde, örneğin şu durumda: if known_reg >= 10 goto pc+2 known_reg'in yeni sınırları reg'e yayılır ancak bu sefer reg, kopyalama nedeniyle BPF_ADD_CONST değerini alır. Bu durum, reg için başka bir bağlantı oluşturulduğunda şuna yol açar: another_reg = reg ; another_reg, reg'in id değerini almalıdır ancak assign_scalar_id_before_mov() reg üzerinde BPF_ADD_CONST görür ve ona yeni bir id atar. reg artık yeni bir id'ye sahip olduğu için known_reg'in reg ile olan bağlantısı kopar. known_reg için yeni sınırlar bulunduğunda bunlar reg'e yayılmaz. Bu durum, bir sonraki commit ile eklenen selftest işleminde görülebilir: 0: (85) call bpf_get_prandom_u32#7 ; R0=scalar() 1: (57) r0 &= 255 ; R0=scalar(smin=smin32=0,smax=umax=smax32=umax32=255,var_off=(0x0; 0xff)) 2: (bf) r1 = r0 ; R0=scalar(id=1,smin=smin32=0,smax=umax=smax32=umax32=255,var_off=(0x0; 0xff)) R1=scalar(id=1,smin=smin32=0,smax=umax=smax32=umax32=255,var_off=(0x0; 0xff)) 3: (07) r1 += 4 ; R1=scalar(id=1+4,smin=umin=smin32=umin32=4,smax=umax=smax32=umax32=259,var_off=(0x0; 0x1ff)) 4: (a5) if r1 < 0xa goto pc+4 ; R1=scalar(id=1+4,smin=umin=smin32=umin32=10,smax=umax=smax32=umax32=259,var_off=(0x0; 0x1ff)) 5: (bf) r2 = r0 ; R0=scalar(id=2,smin=umin=smin32=umin32=6,smax=umax=smax32=umax32=255) R2=scalar(id=2,smin=umin=smin32=umin32=6,smax=umax=smax32=umax32=255) 6: (a5) if r1 < 0xe goto pc+2 ; R1=scalar(id=1+4,smin=umin=smin32=umin32=14,smax=umax=smax32=umax32=259,var_off=(0x0; 0x1ff)) 7: (35) if r0 >= 0xa goto pc+1 ; R0=scalar(id=2,smin=umin=smin32=umin32=6,smax=umax=smax32=umax32=9,var_off=(0x0; 0xf)) 8: (37) r0 /= 0 div by zero 4 doğrulandığında, r1'in sınırları r0'a yayılır ancak r0 ayrıca BPF_ADD_CONST alır (hata). 5 doğrulandığında, r0 yeni bir id (2) alır ve r1 ile olan bağlantısı kopar. 6'dan sonra r1'in [14, 259] sınırlarına sahip olduğunu biliyoruz ve dolayısıyla r0'ın [10, 255] sınırlarına sahip olması gerekir, bu nedenle 7'deki dal (branch) her zaman alınır. Ancak r0'ın id değeri 2 olarak değiştirildiği için r1'in yeni sınırları r0'a yayılmaz. Verifier hala 7'den önce r0'ın [6, 255] sınırlarına sahip olduğunu düşünür ve yürütme sıfıra bölme (div by zero) işlemine ulaşabilir. Bu sorun, sync_linked_regs() fonksiyonunda off ve subreg_def gibi id değerinin korunmasıyla düzeltilmiştir.

ÖnemYüksek
CVSS7.8
İstismar olasılığı9. yüzdelik%0,2
ÜrünLinux Kernel
Yayın27 May 2026
İlk görülme27 May 2026
Zayıflık türüCWE-682CWE-682

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.12.75, 6.18.14, 6.19.4 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel6.11 ≤ v < 6.12.75, 6.13 ≤ v < 6.18.14, 6.19 ≤ v < 6.19.46.12.75, 6.18.14, 6.19.4

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.

Intelligence 360 paketinde

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.

CVE-2026-45933 · Linux Kernel · Dark Radar