CVE-2023-53178

Yüksək

Təsvir

Linux kernel-də aşağıdakı boşluq aradan qaldırılmışdır: mm: zswap writeback yarış şərtinin (race condition) düzəldilməsi zswap writeback mexanizmi yaddaşın korlanmasına səbəb olan yarış şərtinə yol aça bilər ki, burada swap-dan çıxarılan səhifə, başqa bir səhifəyə yazılmış məlumatlarla geri qaytarılır. Yarış şərti bu şəkildə baş verir: 1. Məlumat A və swap ofseti X olan səhifə zswap-da saxlanılır. 2. zswap-shrink işi zamanı writeback üçün zpool drayveri tərəfindən səhifə A LRU-dan çıxarılır, A-nın məlumatları zpool drayveri tərəfindən xəritələndirilir. 3. İstifadəçi sahəsi proqramı xəta verir və səhifə girişi A-nı etibarsızlaşdırır, ofset X boş hesab edilir. 4. kswapd səhifə B-ni zswap-da X ofsetində saxlayır (zswap dolu ola bilər, bu halda səhifə B X-ə IO ilə yazılacaq və 5-ci addım ötürüləcək). 5. tree->rbroot-da giriş A, B ilə əvəzlənir; bu, zswap-shrink işi tərəfindən saxlanılan lokal istinada təsir etmir. 6. zswap-shrink işi A-nı X-ə geri yazır və zswap girişi A-nı azad edir. 7. Slot X-in swapin prosesi B əvəzinə A-nı yaddaşa gətirir. Həlli: Swap səhifə keşləri ayrıldıqdan sonra (ZSWAP_SWAPCACHE_NEW halı), zswap-shrink işi sadəcə lokal zswap_entry istinadının hələ də ağacdakı ilə eyni olub-olmadığını yoxlayır. Əgər eyni deyilsə, bu o deməkdir ki, o, ya etibarsızlaşdırılıb, ya da əvəz olunub; hər iki halda writeback ləğv edilir, çünki lokal giriş köhnəlmiş məlumatlar ehtiva edir. Reproduksiyası: Bunu ilk dəfə zswap writeback mexanizmi üzrində işimi təsdiqləmək üçün gecə boyu `stress` işlədərkən aşkar etmişəm, bu, sınaq maşınımda saatlar sonra özünü göstərib. Bunun baş verməsi üçün əsas şərt zswap writeback-lərinin olmasıdır, buna görə də /sys/kernel/debug/zswap/written_back_pages parametrini artıran hər hansı konfiqurasiya bunu təmin etməlidir. VM-də bunu daha sürətli reproduksiya etmək üçün mən təxminən 100M əlçatan yaddaşı və 500M swap faylı olan sistem qurmuşam, sonra `stress --vm 1 --vm-bytes 300000000 --vm-stride 4000` komandasını işlətmək bunu onlarla dəqiqə ərzində baş verir. Prosesi daha da sürətləndirmək üçün /sys/module/zswap/parameters/max_pool_percent parametrini, məsələn, 20 və 1 arasında dəyişmək olar; bu, onun onlarla saniyə ərzində reproduksiya olunmasını təmin edir. `--vm-stride` parametrini 4096-dan fərqli bir qiymətə təyin etmək vacibdir, əks halda bütün səhifələr eyni məlumata malik olduğu üçün `stress` yaddaşın korlandığını anlamayacaq.

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc15 sen 2025
İlk görülmə15 sen 2025

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel6.1.30, 6.3.4 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel3.11 ≤ v < 6.1.30, 6.2 ≤ v < 6.3.4, 6.46.1.30, 6.3.4

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