CVE-2026-89647
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: ceph: ilerleme sağlanamadığında ceph_trim_dentries() işlemini tekrarlamayın ceph_cap_reclaim_work(), bir kira taraması `nr_to_scan` bütçesini tükettiğinde gerçekleşen ve ceph_trim_dentries() fonksiyonunun -EAGAIN döndürdüğü sürece kendisini yeniden kuyruğa ekler. Bu durum, geri alınacak hiçbir şey olmadığında herhangi bir ilerleme kaydetmeden CPU tüketen yoğun bir döngü oluşturur: kapak baskısı yokken (`count==0`) ve taranan her kira hala geçerliyken, her geçiş tam tarama bütçesini sıfıra indirir ve `-EAGAIN` döndürür, ardından hemen tekrar kuyruğa eklenir. Dizin kira taraması bu durumu daha da kötüleştirmiştir. `expire_dir_lease` değeri `false` olduğunda (yani dizin kiralarını geri alma niyetimiz olmadığında), __dir_lease_check() her geçerli kira için `TOUCH` döndürüyordu. `TOUCH`, dentry'yi listenin sonuna taşır ve __dentry_dir_lease_touch() aracılığıyla `di->time` değerini sıfırlar; böylece N adet geçerli kira üzerindeki bir tarama anlamsızca listeyi yeniden yazar, zaman damgalarını günceller (onların zaman aşımına uğramasını engeller) ve her zaman `nr_to_scan` bütçesini tüketerek `-EAGAIN` ile yeniden kuyruğa eklemeyi garanti eder. Bu sorun üç adımda düzeltilmiştir: - `expire_dir_lease` değeri `false` olduğunda `TOUCH` yerine `KEEP` döndürün. Kirayı geri almayacaksak, listeyi karıştırmak ve zaman damgasını sıfırlamak yerine onu olduğu yerde bırakın; böylece tarama doğal olarak sona erer (veya ilk yeni kirada `STOP` ile durur). - İlk (dentry-kira) taramasından yalnızca gerçekten bir şeyler serbest bırakıldığında `-EAGAIN` döndürün. Hiçbir şeyi serbest bırakmayan tam bir grup, aynı listenin hemen yeniden denenmesinin beyhude olduğu anlamına gelir; bunun yerine dizin kira taramasına geçin. - Her iki taramadan sonra, hiçbir şey serbest bırakılmadığında ve kapak baskısı olmadığında (`count==0`), başarıyla (0) çıkış yapın. Kapak sınırını aşmadığımızda ve ilerleme kaydedilmediğinde yeniden denemeye devam etmek için hiçbir neden yoktur. Gerçek kapak baskısı altında (`count>0`), geri alma yolu değişmemiştir ve hala `-EAGAIN` üzerinden yeniden denemeler yapar. Bu yama olmadan, web sunucularımızda saniyede 500 ceph_trim_dentries() çağrısı gözlemlenmiştir. Bu durum `/proc/lock_stat` dosyasında belirgindir (5 dakikalık kayıt): 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 yama ile: 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 ---kesildi---
Nasıl düzeltilir
Kaynaklarda bu zafiyet için düzeltilmiş sürüm ya da yama bağlantısı yok.
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| microsoft azl3_kernel_6.6.157.1-1 | Aralık belirtilmemiş | — |
| microsoft azl3_kernel_6.6.150.1-1 | Aralık belirtilmemiş | — |
| microsoft azl3_kernel_6.6.152.1-1 | Aralık belirtilmemiş | — |
| microsoft azl3_kernel_6.6.159.1-1 | Aralık belirtilmemiş | — |
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.
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.