CVE-2026-89675

Kritik

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: nfsd: async copy iptali ve kapatma işlemlerindeki UAF hatası düzeltildi Bir teardown çağırıcısı (OFFLOAD_CANCEL, nfsd4_shutdown_copy, nfsd4_cancel_copy_by_sb), copy kthread ile yarış durumuna girdiğinde bir async copy serbest bırakılabilir veya serbest bırakıldıktan sonra kullanılabilir (UAF): - find_async_copy() fonksiyonu copy->refcount değerini artırmış ancak copy nesnesini clp->async_copies üzerinde bırakmıştı; bu nedenle reaper'ın cleanup_async_copy() fonksiyonu, bir iptal/kapatma çağırıcısıyla eşzamanlı olarak release_copy_files() fonksiyonunu çalıştırabiliyordu. Her iki işlem de ortak bir kilit olmadan put işlemini gerçekleştirip nf_src/nf_dst değerlerini NULL yapıyordu, bu da nfsd_file nesnesinin iki kez put edilmesine ve erken serbest bırakılmasına neden oluyordu. - nfsd4_do_async_copy() fonksiyonu, copy nesnesinin son kullanımlarından (copy->nf_dst üzerindeki nfsd_update_cmtime_attr() ve nfsd4_send_cb_offload()) önce NFSD4_COPY_F_STOPPED bitini ayarlıyordu. nfsd4_stop_copy() fonksiyonu, ayarlanmış bir STOPPED bitini "kthread tamamlandı, kthread_stop() işlemini atla" şeklinde yorumladığından, bir teardown çağırıcısı, kthread hala referans verirken release_copy_files() fonksiyonunu (bu fonksiyon nf_dst'yi put eder ve NULL yapar) çalıştırıyordu (NULL/UAF). - copy->copy_task hiçbir zaman sabitlenmemişti (pinned). Tek seferlik kthread dönüşte kendini temizlediğinden, kthread_stop()'un get_task_struct() işlemi serbest bırakılmış bir task_struct yapısına erişebiliyordu. - co_cb, copy içerisine gömülüdür ancak nfsd4_send_cb_offload() yalnızca istemci üzerinde bir referans tutuyordu; bu nedenle eşzamanlı bir teardown işlemi, CB_OFFLOAD geri çağırması devam ederken copy nesnesini serbest bırakabilirdi. Teardown yaşam döngüsü genel olarak şu şekilde düzeltilmiştir: - find_async_copy(), async_lock altında copy bağlantısını keser (clear cp_clp, list_del_init); iptal, kapatma ve sb-iptal yolları, nfsd4_stop_copy() işleminden sonra nfs4_put_copy() aracılığıyla liste üyeliği referansını düşürür. cleanup_async_copy() içindeki artık gereksiz olan list_del düzeltmesi kaldırılmıştır. - Bağlantının kesilmesi, copy nesnesini reaper'dan gizlediği için, cleanup_async_copy() artık copy'nin s2s_cp_stateids girişini kaldıramaz; iptal/kapatma/sb-iptal yolları artık (cp_clp hala geçerliyken) kendileri nfs4_free_copy_state() fonksiyonunu çağırır, böylece giriş, laundromat ve manage_cpntf_state() tarafından referans verilmek üzere serbest bırakılmış bellekte boşta kalmaz. - kthread'e, wake_up_process() öncesinde nfsd4_copy() içinde alınan ve nfsd4_do_async_copy() sonunda düşürülen kendi referansı verilmiştir; list_add() işleminden önce wake_up_process() çağrılır. - nfsd4_copy() içinde get_task_struct() ile task_struct sabitlenmiş ve nfs4_put_copy() içinde serbest bırakılmıştır, böylece kthread her çıkış yaptığında kthread_stop() güvenli hale gelmiştir. NFSD4_COPY_F_STOPPED biti yalnızca, artık her zaman release_copy_files() öncesinde kthread_stop() yapan nfsd4_stop_copy() içinde ayarlanır; tamamlanma durumu hala NFSD4_COPY_F_COMPLETED üzerinden bildirildiği için nfsd4_has_active_async_copies() etkilenmez. Her teardown çağırıcısı önce copy nesnesini clp->async_copies listesinden çıkarır, böylece kthread_stop() tam olarak bir kez çalışır. - nfsd4_send_cb_offload() içinde bir copy referansı alınmış ve nfsd4_cb_offload_release() içinde düşürülmüştür. kthread orada hala kendi referansını tuttuğu için refcount_inc() işlemi nihai serbest bırakma ile yarışamaz. - Sırasız set_bit()/clear_bit() yazıcılarıyla eşleşmesi için cp_clp, smp_load_acquire() ile okunur (Documentation/atomic_bitops.rst).

ÖnemKritik
CVSS9.8
İstismar olasılığı39. yüzdelik%0,4
ÜrünMicrosoft Azl3 Kernel
Yayın11 Eyl 2026
İlk görülme11 Eyl 2026

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ünEtkilenen sürümlerDüzeltildiği sürüm
microsoft azl3_kernel_6.6.157.1-1Aralık belirtilmemiş—
microsoft azl3_kernel_6.6.159.1-1Aralı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.

Intelligence 360 paketinde

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.