CVE-2023-52828

Orta

Açıklama

Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: bpf: BPF programının bir parçası olarak IP == ksym.end tespiti Artık bpf_throw kfunc, doğrulayıcı (verifier) içinde noreturn semantiğine sahip ilk çağrı talimatı olduğundan, bu durum ölü kod elemesini daha önce görülmemiş şekillerde tetiklemektedir. Birincisi, bpf_throw çağrısını takip eden herhangi bir talimat asla "görüldü" (seen) olarak işaretlenmeyecektir. Dahası, eğer bir çağrı zinciri sonuçta hata fırlatırsa (throwing), çağıran fonksiyonlarda nihayetinde hata fırlatan alt programa yapılan çağrı talimatından sonra gelen tüm talimatlar da asla "görüldü" olarak işaretlenmeyecektir. Bunu düzeltmenin cazip yolu, bir programın jited_len değerini artıran ek 'int3' talimatları yayınlamak ve çalışma zamanında bir program hata fırlattığında, bpf_throw'a (veya her zaman hata fırlatan alt programlara) yapılan çağrı talimatı programdaki son talimat olarak yayınlanmış olsa bile sınırlarını tespit edebilmemizi sağlamaktır. Bu tür bir programa örnek şudur: do_something(): ... r0 = 0 exit foo(): r1 = 0 call bpf_throw r0 = 0 exit bar(cond): if r1 != 0 goto pc+2 call do_something exit call foo r0 = 0 // Doğrulayıcı tarafından asla görülmez exit // main(ctx): r1 = ... call bar r0 = 0 exit Burada, eğer hata fırlatılırsa, yığın izi (stacktrace) şu şekilde olacaktır: bpf_throw foo bar main bar içerisinde yayınlanan son talimat foo'ya yapılan çağrı olacaktır; dolayısıyla dönüş adresi, sonraki talimat (JIT'in x86 üzerinde int3 olarak yayınladığı) olacaktır. Bu durum, programın jited_len değerinin dışında kalacaktır, böylece geri sarma (unwinding) işlemi sırasında dönüş adresinin herhangi bir programa ait olduğunu tespit edemeyeceğiz ve hiç beklemediğimiz BPF programlarının güvenilmez yığın geri sarması nedeniyle bir panik durumuyla karşılaşacağız. Bu durumu düzeltmek için, bpf_prog_ksym_find fonksiyonunun IP == ksym.end durumunu BPF programının bir parçası olarak değerlendirmesi sağlanmıştır; böylece böyle bir durum oluştuğunda is_bpf_text_address true dönecek ve son talimatın bir çağrı talimatı olması durumunda güvenilir bir şekilde geri sarma işlemi yapabileceğiz.

ÖnemOrta
CVSS5.5
İstismar olasılığı—
ÜrünLinux Kernel
Yayın21 May 2024
İlk görülme21 May 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.10.202, 5.15.140, 6.1.64, 6.5.13, 6.6.3 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernelv < 5.10.202, 5.11 ≤ v < 5.15.140, 5.16 ≤ v < 6.1.64, 6.2 ≤ v < 6.5.13, 6.6 ≤ v < 6.6.35.10.202, 5.15.140, 6.1.64, 6.5.13, 6.6.3

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-2023-52828 · Linux Kernel · Dark Radar