CVE-2026-46025
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: mm/damon/core: damon_call() ve kdamond_fn() çıkış yarışı düzeltildi "mm/damon/core: fix damon_call()/damos_walk() vs kdmond exit race" yama serisi. damon_call() ve damos_walk(), kdamond sonlandırmalarıyla yarış durumuna girdiğinde bellek sızıntısına ve/veya kilitlenmeye (deadlock) neden olabilir. Bunlar düzeltildi. Bu yama (2 üzerinden 1); kdamond_fn() ana döngüsü tamamlandığında, fonksiyon kalan tüm damon_call() isteklerini iptal eder ve API çağırıcılarının ve API fonksiyonlarının bağlamın sonlandırıldığını bilmesi için damon_ctx->kdamond değerini sıfırlar. damon_call() önce çağırıcının isteğini kuyruğa ekler. Ardından, damon_ctx'in kdamond biriminin hala çalışıp çalışmadığını kontrol eder (damon_ctx->kdamond ayarlanmış mı). Yalnızca kdamond çalışıyorsa, damon_call() yeni eklenen isteğin kdamond tarafından işlenmesini beklemeye başlar. Ancak, damon_call() istek kaydı ile damon_ctx->kdamond sıfırlama işlemi farklı mutex'ler tarafından korunmaktadır. Bu nedenle, damon_call() ile damon_ctx->kdamond sıfırlama işlemi arasında yarış durumu oluşabilir ve bu da kilitlenmelere yol açabilir. Örneğin, kdamond'un damon_call() isteklerinin iptalini başarıyla tamamladığını varsayalım. Hemen ardından, ilgili bağlam için damon_call() çağrılır. Yeni isteği kaydeder ve damon_ctx->kdamond sıfırlama işlemi henüz tamamlanmadığı için bağlamın hala çalıştığını görür. Böylece damon_call() çağırıcısı, isteğin işlenmesini beklemeye başlar. Ancak kdamond zaten sonlandırma aşamasındadır, dolayısıyla yeni isteği asla işlemez. Sonuç olarak, damon_call() çağırıcı iş parçacıkları sonsuza kadar bekler. Bu sorun, call_controls_obsolete adında başka bir damon_ctx alanı eklenerek düzeltilmiştir. Bu alan, damon_call() istek kayıtlarını koruyan damon_ctx->call_controls_lock tarafından korunur. damon_start() geri dönmeden önce kdamond_fn() içinde başlatılır (sıfırlanır) ve kalan damon_call() isteklerinin iptali yürütülmeden hemen önce ayarlanır. damon_call(), kilit altında obsolete alanını okur ve yeni bir istek eklemekten kaçınır. Bu değişiklikten sonra, yalnızca işleneceği veya iptal edileceği garanti edilen istekler kaydedilir. Bu nedenle, kayıt sonrası DAMON bağlam sonlandırma kontrolüne artık gerek kalmamıştır; bu kontrol birlikte kaldırılmıştır. Tekrar modu (repeat mode) isteği için damon_call() çağrıldığında kilitlenmenin meydana gelmeyeceğini unutmayın. Bu durumda damon_call(), istek kaydı başarılı olduğunda ve kdamond'un çalıştığı görüldüğünde, işlemeyi beklemek yerine geri döner. Ancak, istek aynı zamanda dealloc_on_cancel içeriyorsa, istek belleği sızdırılacaktır. Sorun sashiko [1] tarafından bulunmuştur.
Nasıl düzeltilir
- linux linux_kernel6.18.27, 7.0.4 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 6.14 ≤ v < 6.18.27, 6.19 ≤ v < 7.0.4 | 6.18.27, 7.0.4 |
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.