CVE-2023-52828

Orta

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: bpf: IP == ksym.end vəziyyətinin BPF proqramının bir hissəsi kimi aşkarlanması İndi ki bpf_throw kfunc verifikator daxilində noreturn semantikasına malik ilk belə çağırış təlimatıdır, bu, həmçinin ölü kodun aradan qaldırılmasını görünməmiş şəkildə işə salır. Birincisi, bpf_throw çağırışından sonra gələn istənilən təlimat heç vaxt görülmüş kimi işarələnməyəcək. Bundan əlavə, əgər çağırış zənciri nəticədə throw edirsə, çağıranlarda nəticədə throw edən alt proqrama aparan çağırış təlimatından sonra gələn istənilən təlimatlar da heç vaxt görülmüş kimi işarələnməyəcək. Bunu düzəltməyin cəlbedici yolu proqramın jited_len dəyərini artıran əlavə 'int3' təlimatları yaymaq və iş vaxtı ərzində proqram throw etdikdə, hətta bpf_throw-a (və ya həmişə throw edən alt proqramlara) çağırış təlimatı proqramda son təlimat kimi yayılsa belə, onun sərhədlərini aşkar edə bilməyimizi təmin etməkdir. Belə bir proqrama nümunə aşağıdakı kimi olardı: 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 // Verifikator tərəfindən heç vaxt görülmür exit // main(ctx): r1 = ... call bar r0 = 0 exit Burada, əgər nəticədə throw etsək, stacktrace aşağıdakı kimi olardı: bpf_throw foo bar main bar daxilində yayılan son təlimat foo-ya çağırış olacaq, buna görə də qayıdış ünvanı sonrakı təlimat olacaq (JIT onu x86-də int3 kimi yayır). Bu, proqramın jited_len dəyərindən kənarda qalacaq, beləliklə, açarkən qayıdış ünvanının hər hansı proqrama aid olduğunu aşkar edə bilməyəcəyik və heç vaxt gözləmədiyimiz BPF proqramlarının etibarsız stack açılması səbəbindən panic vəziyyətinə düşəcəyik. Bu halı aradan qaldırmaq üçün bpf_prog_ksym_find funksiyası IP == ksym.end vəziyyətini BPF proqramının bir hissəsi kimi qəbul etsin ki, belə hal baş verdikdə is_bpf_text_address true qaytarsın və son təlimat çağırış təlimatı olduqda etibarlı şəkildə aça bilək.

CiddilikOrta
CVSS5.5
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc21 may 2024
İlk görülmə21 may 2024

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel5.10.202, 5.15.140, 6.1.64, 6.5.13, 6.6.3 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
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

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