CVE-2025-39989

Orta

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: x86/mce: copy-from-user bağlamını belirlemek için is_copy_from_user() kullanımı Yama serisi "mm/hwpoison: Fix regressions in memory failure handling", v4. ## 1. Yapılmaya çalışılan işlem: Bu yama seti, 5.10 LTS sürümüne kıyasla, üst akış (upstream) çekirdeğinde 5.17 sürümünden itibaren ortaya çıkan bellek hatası yönetimiyle ilgili iki kritik regresyonu gidermektedir. - copyin durumu: Çekirdek kullanıcı alanından kopyalama yaparken kullanıcı sayfasında poison tespit edilmesi - instr durumu: Kullanıcı alanında komut getirme (instruction fetching) sırasında poison tespit edilmesi ## 2. Beklenen sonuç ve nedeni - copyin durumu için: Çekirdek; get_user() veya copy_from_user() işlemlerini gerçekleştirdiği yerlerde bir hata dönüşü alırsa ve çekirdek çökmek yerine sürece -EFAULT döndürürse, tespit edilen poison durumundan kurtulabilir. Daha spesifik olarak, MCE işleyicisi, çekirdek içindeki bir #MC'nin kurtarılıp kurtarılamayacağına karar vermek için fixup işleyici türünü kontrol eder. EX_TYPE_UACCESS bulunduğunda, PC (program sayacı) _ASM_EXTABLE_FAULT() içinde belirtilen kurtarma koduna atlar ve kullanıcı alanına -EFAULT döndürür. - instr durumu için: Kullanıcı alanında komut getirme sırasında bir poison tespit edilirse tam kurtarma mümkündür. Kullanıcı süreci #PF alır, Linux yeni bir sayfa tahsis eder ve depolama biriminden okuma yaparak sayfayı doldurur. ## 3. Gerçekleşen durum ve nedeni - copyin durumu için: v5.17 sürümünden beri kernel panic oluşmaktadır. 4c132d1d844a numaralı commit ("x86/futex: Remove .fixup usage"), yeni bir extable fixup türü olan EX_TYPE_EFAULT_REG'i tanıtmıştır ve sonraki yamalar copy-from-user işlemleri için extable fixup türünü EX_TYPE_UACCESS'ten EX_TYPE_EFAULT_REG'e güncellemiştir. Bu durum, get_user() veya copy_from_user() sırasında poison tespit edildiğindeki önceki EX_TYPE_UACCESS yönetimini bozmaktadır. - instr durumu için: #CMCI ve #MCE yarışı nedeniyle kullanıcı süreci bir SIGBUS sinyali ile sonlandırılmaktadır. Düzeltilemeyen bir bellek hatası tüketildiğinde, bellek denetleyicisinden gelen ve UCNA imzalı düzeltilemeyen bir hatayı bildiren CMCI ile verinin tüketilmek üzere olduğu sırada çekirdeğin bildirdiği ve SRAR imzalı makine kontrolü arasında bir yarış meydana gelir. ### Arka Plan: Intel platformunda düzeltilemeyen hataların neden CMCI ile bağlantılı olduğu [1] Icelake öncesinde bellek denetleyicileri, makine kontrolü bankasında SRAO (Software Recoverable Action Optional) imzalı bir yayın makine kontrolü sinyalleyerek bellekte daha önce görülmemiş düzeltilemeyen bir hatayı tespit eden devriye temizleme (patrol scrub) olaylarını bildiriyordu. Hiçbir çekirdeğin bu bozuk veriyi tüketme eşiğinde olmadığı acil olmayan bir sorun olduğu için bu yöntem aşırıydı. Ayrıca çoklu SRAO UCE'lerin iç içe geçmiş MCE kesintilerine yol açabileceği ve nihayetinde bir IERR'ye dönüşebileceği tespit edilmiştir. Bu nedenle Intel, devriye temizlemenin makine kontrolü bankası imzasını SRAO'dan UCNA'ya (Uncorrected, No Action required) düşürmüş ve sinyali #CMCI olarak değiştirmiştir. Karışıklığı artırmak adına, Linux uc_decode_notifier() içinde UC*NA* imza adına rağmen sayfayı çevrim dışı bırakmaya çalışarak bir eylem gerçekleştirir. ### Arka Plan: Intel platformunda poison tüketilirken neden #CMCI ve #MCE yarışı yaşandığı [1] Devriye temizleme hataları için en iyi eylemin CMCI/UCNA olduğuna karar verilince, bellek denetleyicisi bunu okumalar için de kullanmaya başlamıştır. Ancak bellek denetleyicisi çekirdekten asenkron olarak çalışır ve "gerçek" bir okuma ile spekülatif bir okuma arasındaki farkı ayırt edemez. Dolayısıyla herhangi bir okumada hata bulunursa CMCI/UCNA işlemini gerçekleştirir. Böylece: 1) Çekirdek zekice davranıp A adresine yakında ihtiyaç duyacağını düşünür ve spekülatif bir okuma başlatır. 2) Çekirdek, okuma isteğini gönderdikten kısa süre sonra A adresini kullanacağını anlar. 3) Bellek denetleyicisinden gelen CMCI, A adresinden yüklemeyi (load) emekli etmeye çalışacak olan çekirdekten gelen MCE ile yarış halindedir. Sıkça (spekülasyon yetenekleri geliştiği için), bellek denetleyicisinden gelen CMCI, çekirdek A adresini okuyan komuta bağlı kalmadan önce iletilir; böylece kesinti alınır ve Linux sayfayı çevrim dışı bırakır (onu poison olarak işaretler). ## Instr durumu için kullanıcı sürecinin öldürülme nedeni 046545a661af numaralı commit ("mm/hwpoison: fix error page recovered but reported "not...

ÖnemOrta
CVSS5.5
İstismar olasılığı—
ÜrünLinux Kernel
Yayın18 Nis 2025
İlk görülme18 Nis 2025
Zayıflık türüCWE-401CWE-401

Nasıl düzeltilir

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel5.15.58 ≤ v < 5.16, 5.17 ≤ v < 6.6.89, 6.7 ≤ v < 6.12.23, 6.13 ≤ v < 6.13.11, 6.14 ≤ v < 6.14.25.16, 6.6.89, 6.12.23, 6.13.11, 6.14.2

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-2025-39989 · Linux Kernel · Dark Radar