CVE-2026-89647

Yüksək

Təsvir

Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: ceph: tərəqqi mümkün olmadıqda ceph_trim_dentries() funksiyasını təkrarlamayın ceph_cap_reclaim_work() funksiyası, ceph_trim_dentries() -EAGAIN qaytardığı müddətcə özünü yenidən növbəyə əlavə edir; bu isə hər dəfə bir lease gəzintisi öz `nr_to_scan` büdcəsini tükətdikdə baş verir. Bu, geri qaytarılacaq heç nə olmadıqda, heç bir tərəqqi etmədən CPU istehlak edən məşğul dövr (busy loop) yaradır: cap təzyiqi olmadıqda (`count==0`) və skan edilən hər bir lease hələ də etibarlı olduqda, hər bir keçid tam skan büdcəsini sıfıra endirir və `-EAGAIN` qaytarır, yalnız dərhal yenidən növbəyə əlavə edilir. Dir-lease gəzintisi vəziyyəti daha da pisləşdirmişdir. `expire_dir_lease` false olduqda (yəni dir lease-lərini geri qaytarmaq niyyətimiz olmadıqda), __dir_lease_check() hər bir etibarlı lease üçün `TOUCH` qaytarırdı. `TOUCH` dentry-ni siyahının sonuna keçirir və __dentry_dir_lease_touch() vasitəsilə `di->time`-ı sıfırlayır, buna görə də N sayda etibarlı lease üzərindəki gəzinti mənasız şəkildə siyahını yenidən yazır, vaxt möhürlərini yeniləyir (onların köhnəlməsinin qarşısını alır) və həmişə `nr_to_scan`-i boşaldaraq `-EAGAIN` ilə yenidən növbəyə alınmanı təmin edirdi. Bu problem üç addımla düzəldilir: - `expire_dir_lease` false olduqda `TOUCH` əvəzinə `KEEP` qaytarın. Əgər biz lease-i geri qaytarmayacaqsınızsa, siyahını qarışdırmaq və onun vaxt möhürünü sıfırlamaq əvəzinə onu olduğu kimi saxlayın; beləliklə, gəzinti təbii şəkildə (və ya ilk yeni lease-də `STOP` vasitəsilə) başa çatır. - Birinci (dentry-lease) gəzintisindən yalnız həqiqətən nəsə azad edildikdə `-EAGAIN` qaytarın. Heç nəyi azad etməyən tam paket eyni siyahının dərhal yenidən yoxlanılmasının faydasız olduğu anlamına gəlir; bunun əvəzinə dir-lease gəzintisinə keçid edin. - Hər iki gəzintidən sonra, heç nə azad edilmədikdə və cap təzyiqi olmadıqda (`count==0`), uğurla (0) çıxın. Cap limitini aşmadıqda və heç bir tərəqqi əldə etmədikdə yenidən cəhd etmək üçün heç bir səbəb yoxdur. Həqiqi cap təzyiqi altında (`count>0`) reclaim yolu dəyişməz qalır və hələ də `-EAGAIN` vasitəsilə yenidən cəhd edir. Bu yam olmadan veb serverlərimizdə saniyədə 500 ceph_trim_dentries() çağırışı müşahidə etdim. Bu, `/proc/lock_stat` faylında (5 dəqiqəlik tutma) çox aydın görünür: class name con-bounces contentions waittime-min waittime-max waittime-total waittime-avg acq-bounces acquisitions holdtime-min holdtime-max holdtime-total holdtime-avg &mdsc->dentry_list_lock: 126180 128218 0.04 8063.44 15986965.20 124.69 1573354 5296812 0.04 8291.28 74164526.48 14.00 ----------------------- &mdsc->dentry_list_lock 111736 [<000000007b11e319>] __ceph_dentry_dir_lease_touch+0x7c/0xa8 &mdsc->dentry_list_lock 2631 [<0000000050597999>] __dentry_leases_walk+0x64/0x2c8 &mdsc->dentry_list_lock 3878 [<00000000c0022f62>] __ceph_dentry_lease_touch+0x5c/0xa8 &mdsc->dentry_list_lock 9973 [<000000002f27cb6f>] __dentry_lease_unlist+0x50/0xa0 ----------------------- &mdsc->dentry_list_lock 123621 [<0000000050597999>] __dentry_leases_walk+0x64/0x2c8 &mdsc->dentry_list_lock 1822 [<000000007b11e319>] __ceph_dentry_dir_lease_touch+0x7c/0xa8 &mdsc->dentry_list_lock 2720 [<000000002f27cb6f>] __dentry_lease_unlist+0x50/0xa0 &mdsc->dentry_list_lock 55 [<00000000c0022f62>] __ceph_dentry_lease_touch+0x5c/0xa8 Bu yam ilə: class name con-bounces contentions waittime-min waittime-max waittime-total waittime-avg acq-bounces acquisitions holdtime-min holdtime-max holdtime-total holdtime-avg &mdsc->dentry_list_lock: 1203 1215 0.16 408.88 33082.88 27.23 4320501 7357389 0.04 500.64 1961578.00 0.27 ----------------------- &mdsc->dentry_list_lock 1029 [<000000003c9aea8a>] __ceph_dentry_dir_lease_touch+0x7c/0xa8 &mdsc->dentry_list_lock 1 ---kəsilmişdir---

CiddilikYüksək
CVSS7.5
İstismar ehtimalı—
MəhsulMicrosoft Azl3 Kernel
Dərc11 sen 2026
İlk görülmə11 sen 2026

Necə düzəltmək olar

Mənbələrdə bu zəiflik üçün düzəldilmiş versiya və ya yamaq keçidi yoxdur.

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
microsoft azl3_kernel_6.6.157.1-1Aralıq göstərilməyib—
microsoft azl3_kernel_6.6.150.1-1Aralıq göstərilməyib—
microsoft azl3_kernel_6.6.152.1-1Aralıq göstərilməyib—
microsoft azl3_kernel_6.6.159.1-1Aralıq göstərilməyib—

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.