CVE-2023-52920

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: bpf: dəqiqlik izləmədə stekə/stekdən r10 olmayan register spill/fill dəstəyi Təlimatın (tullanma) tarixçəsindən istifadə edərək, bunun yalnız oxunaqlı r10 registeri vasitəsilə və ya r10-u başqa bir registerə kopyaladıqdan *və* potensial olaraq ofseti tənzimlədikdən sonra hər hansı digər register vasitəsilə yerinə yetirildiyindən asılı olmayaraq, stekə/stekdən register spill/fill həyata keçirən təlimatları qeyd edin. Bunun etibarlı şəkildə işləməsini təmin etmək üçün biz təlimat tarixçəsinə əlavə hər təlimat üzrə bayraqlar (flags) əlavə edirik və stek slot indeksini (spi) və stek freym nömrəsini təlimat tarixçəsindəki prev_idx-dən götürülmüş əlavə 10 bitlik bayraqlarda kodlaşdırırıq. Maksimum performans üçün idx sahəsinə toxunmuruq, çünki geri izləmə (backtracking) zamanı ən çox bu sahə yoxlanılır. Bu dəyişiklik BPF verifier-dəki dəqiqlik geri izləmə məntiqinin praktiki olaraq sonuncu qalan məhdudiyyətini aradan qaldırır. Bu, məlum çatışmazlıqları düzəldir, həmçinin növbəti yamalarda araşdırılan təsdiqlənmiş vəziyyətlərin sayını azaltmaq üçün yeni imkanlar açır. veristat-a görə, selftest-lərin BPF obyekt fayllarında cəmi üç fərq var və onların hamısı müsbət istiqamətdədir (daha az vəziyyət). File Program Insns (A) Insns (B) Insns (DIFF) States (A) States (B) States (DIFF) -------------------------------------- ------------- --------- --------- ------------- ---------- ---------- ------------- test_cls_redirect_dynptr.bpf.linked3.o cls_redirect 2987 2864 -123 (-4.12%) 240 231 -9 (-3.75%) xdp_synproxy_kern.bpf.linked3.o syncookie_tc 82848 82661 -187 (-0.23%) 5107 5073 -34 (-0.67%) xdp_synproxy_kern.bpf.linked3.o syncookie_xdp 85116 84964 -152 (-0.18%) 5162 5130 -32 (-0.62%) Qeyd: Dəyişdirilən sətirlərin sayını və bpf ilə bpf-next ağacları arasındakı potensial birləşmə (merge) konfliktlərini minimuma endirmək üçün jmp_history adını daha ümumi olan insn_hist ilə əvəzləməkdən qaçmışam. Həmçinin, təlimat verifikasiya dövrünün başında cur_hist_entry göstəricisinin (pointer) NULL-a sıfırlanmasına diqqət yetirin. Bu göstərici, cari təlimat üçün artıq girişin olub-olmadığını müəyyən etmək üçün sonuncu tullanma tarixçəsi girişinin insn_idx-inə güvənmək probleminin qarşısını alır. Belə ola bilər ki, cari təlimat is_jmp_point() olduğu üçün tullanma tarixçəsi girişi əlavə etmişik, lakin eyni zamanda stek girişləri üçün təlimat bayraqlarını da əlavə etməliyik. Bu halda iki giriş istəmirik, ona görə də mövcuddursa, sonuncu əlavə edilmiş girişdən yenidən istifadə etməliyik. insn_idx müqayisəsinə güvənmək, yaxınlarda [0]-da düzəldilmiş problemlə eyni qeyri-müəyyənlik problemini yaradır, buna görə də biz bundan qaçırıq. [0] https://patchwork.kernel.org/project/netdevbpf/patch/[email protected]/

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc5 noy 2024
İlk görülmə5 noy 2024

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel6.8 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernelv < 6.86.8

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