CVE-2026-89987

Orta

Açıklama

Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: mm/huge_memory: zap sırasında pmd dirty bit'ini folio'ya aktarın zap_huge_pmd_folio(), dosya durumu için pmd young bit'ini folio'ya iletir ancak dirty bit'ini iletmez. pte yolu bunu zap_present_folio_ptes() içinde iletir ve pmd bölme yolu da __split_huge_pmd_locked() içinde aynı şekilde iletir. Çoğu dosya eşlemesi için bu eksiklik zararsızdır çünkü paylaşılan bir dosya eşlemesine yazma işlemi, folio'yu kirleten page_mkwrite() üzerinden gerçekleşir. tmpfs farklıdır: page_mkwrite() fonksiyonuna sahip değildir ve vma_wants_writenotify() onun için yanlıştır; bu nedenle MAP_SHARED tmpfs eşlemesinde bir *okuma* hatası, do_read_fault() aracılığıyla yazılabilir bir pmd kurar. do_read_fault(), fault_dirty_shared_page() fonksiyonunu çağırmaz, dolayısıyla bu eşleme üzerinden yapılan sonraki depolamalar yalnızca pmd'deki donanım dirty bit'ini ayarlar ve asla folio_mark_dirty() fonksiyonunu çağırmaz. Bir hata tarafından tahsis edilen shmem folio'su güncel olarak işaretlenir ancak kirli olarak işaretlenmez (bkz. shmem_get_folio_gfp() içindeki clear: bloğu), böylece PG_dirty hiçbir zaman ayarlanmaz. Böyle bir folio'nun eşlemesinin kaldırılması -munmap() veya süreç öldüğünde exit_mmap()- ardından, zap_huge_pmd() dirty bit'ini aktarmadan pmd'yi bıraktığı için yazıldığına dair tek kayıt kaybolur. Sonrasındaki geri kazanım (reclaim) temiz bir shmem folio'su görür: shrink_folio_list() içindeki tüm swap-out bloğu "if (folio_test_dirty(folio))" içerisindedir, bu nedenle pageout() atlanır ve folio __remove_mapping() içine düşer. Orada, swap destekli bir folio için folio_is_file_lru() yanlıştır, bu nedenle herhangi bir gölge giriş oluşturulmaz ve __filemap_remove_folio(folio, NULL) basitçe i_pages yuvasını boşaltır. Veriler swap'e hiç yazılmadan serbest bırakılır ve o dizindeki bir sonraki hata taze sıfırlanmış bir folio döndürür. Bu durum, bir eşleme kaldırma işlemi boyunca MAP_SHARED tmpfs segmentinde durum tutan herhangi bir süreç için sessiz veri kaybıdır - örneğin /dev/shm aracılığıyla bir süreç neslinden diğerine aktarılan bir önbellek. Folio'nun PMD-eşlemeli olmasını gerektirir, bu nedenle yalnızca shmem THP etkinleştirildiğinde ortaya çıkar (Meta filosunda yaptığımız ve çökmeleri fark etmeye başladığımız durum budur); THP kapalıyken pte yolu dirty bit'ini doğru şekilde aktarır. Ayrıca yalnızca swap etkin olduğunda görünür hale gelir, çünkü swap cihazı olmadığında (anon LRU üzerinde olan) shmem folio'ları geri kazanım tarafından hiç taranmaz, dolayısıyla temiz folio asla bırakılmaz. x86_64 üzerinde huge=within_size ile bağlanmış bir tmpfs ile yeniden üretilmiştir: 2MB destekli bir bölgede okuma hatası oluşturun, sonuçlanan eşleme üzerinden bilinen bir desen yazın, munmap yapın, cgroup'un geri kazanımını zorlayın, ardından yeniden eşleyin ve geri okuyun. Bu yama olmadan bölge sıfırlar olarak okunur ve vmstat zswpout 0 gösterir - veriler takas edilmek yerine atılmıştır. Bu yama ile bölge doğru şekilde okunur ve sayfalar beklendiği gibi dışarı aktarılır (swap-out). huge=never ile veya ilk dokunuş bir yazma işlemi olduğunda, test her iki durumda da geçer.

ÖnemOrta
CVSS5.5
İstismar olasılığı—
ÜrünMicrosoft Azl3 Kernel
Yayın16 Eyl 2026
İlk görülme16 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.150.1-1Aralık belirtilmemiş—
microsoft azl3_kernel_6.6.152.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.

CVE-2026-89987 · Microsoft Azl3 Kernel · Dark Radar