CVE-2026-98414
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: memcg: obj_cgroup_charge_pages() fonksiyonunun kök memcg'ye ücret yansıtması önlendi obj_cgroup_charge_pages(), objcg'yi ilgili memcg ile çözümler ve kök memcg için kısa devre mekanizmasına sahip olmayan try_charge_memcg() fonksiyonunu çağırır. Bu memcg, kök memcg olabilir: obj_cgroup_is_root() fonksiyonu, objcg'nin oluşturulduğu memcg'yi yansıtır ve asla güncellenmez; ancak memcg_reparent_objcgs() fonksiyonu, rmdir sırasında objcg->memcg'yi üst dizine yönlendirir. Bu nedenle, kökün ölmekte olan bir alt öğesine ait bir objcg, tüm obj_cgroup_is_root() filtrelerini geçer ancak kök memcg olarak çözümlenir. Folio'lar kendilerine ücret yansıtılan objcg'yi korurlar, bu nedenle durum zswap üzerinden kolayca tetiklenebilir: bir cgroup içinde anonim bellek ayırın, görevi dışarı taşıyın, cgroup'u kaldırın ve ardından kök cgroup'un memory.reclaim dosyasına yazın. Geri kazanılan folio'lara yeniden ebeveyn atanmış objcg aracılığıyla ücret yansıtılır ve bunlar kök memcg ile birlikte refill_stock() fonksiyonuna ulaşır: WARNING: mm/memcontrol.c:2198 at refill_stock+0x644/0x940 refill_stock+0x644/0x940 try_charge_memcg+0x12d6/0x1570 __obj_cgroup_charge+0x35/0xf0 obj_cgroup_charge+0x1de/0x210 obj_cgroup_charge_zswap+0x83/0x270 zswap_store+0x1620/0x2000 swap_writeout+0x94c/0x14c0 shrink_folio_list+0x3388/0x52b0 [...] try_to_free_mem_cgroup_pages+0x30d/0x830 user_proactive_reclaim+0x504/0x840 memory_reclaim+0x1f/0x30 Uyarının ötesinde, ücretlendirme asimetriktir: obj_cgroup_uncharge_pages() kök memcg için refill_stock() işlemini atlar, böylece kökün sayfa sayacı artar ve hiçbir zaman geri alınmaz. memory.current kök üzerinde sunulmadığından bu durum kullanıcı tarafından görülmez, ancak bir sızıntıdır. Kök memcg için erken dönüş yapan ve obj_cgroup_uncharge_pages() ile simetriyi yeniden sağlayan try_charge() kullanılmıştır. Yukarıdaki dizi, bağımsız bir reprodüksiyon senaryosuna dönüştürülmüş (zswap açık, virtio disk üzerinde swap aktif, kök cgroup'un bir alt öğesi içinde 512MB anonim bellek hata ile yüklenmiş, görev daha sonra kök cgroup'a taşınmış, alt öğe kaldırılmış ve ardından kök üzerinde "echo 600M swappiness=max > memory.reclaim" komutu çalıştırılmış) ve CONFIG_DEBUG_VM=y yapılandırmalı bir VM'de çalıştırılmıştır. Yeniden ebeveyn atanmış bir folio'nun ilk zswap depolamasında, raporla aynı çağrı zinciriyle hatayı yeniden üretmektedir. Bu yama uygulandığında, çalışma boyunca zswap depolama sayısı değişmezken hata ortadan kalkmaktadır, yani aynı yol hala kullanılmaktadır. cgroup selftestleri test_zswap, test_kmem ve test_memcontrol herhangi bir yeni hata göstermemiştir.
Nasıl düzeltilir
- Linux Linuxd5cdff14c385bf42d03c0dd4c3e88ddf4c28b8a9, ecc03877b1b05cb1e3a72175ccb868383eccc518, 6e673d0879ef78c395cfe0d3ba316690a60055d8 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 20d6c17252282c3af261d1cde8e34def1b2458c8 ≤ v < d5cdff14c385bf42d03c0dd4c3e88ddf4c28b8a9, 20d6c17252282c3af261d1cde8e34def1b2458c8 ≤ v < ecc03877b1b05cb1e3a72175ccb868383eccc518, 20d6c17252282c3af261d1cde8e34def1b2458c8 ≤ v < 6e673d0879ef78c395cfe0d3ba316690a60055d8, 6.15 | d5cdff14c385bf42d03c0dd4c3e88ddf4c28b8a9, ecc03877b1b05cb1e3a72175ccb868383eccc518, 6e673d0879ef78c395cfe0d3ba316690a60055d8 |
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.