CVE-2026-46253

Yüksek

Açıklama

Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: pstore/ram: persistent_ram_save_old() fonksiyonundaki arabellek taşması düzeltildi persistent_ram_save_old(), aynı persistent_ram_zone için birden fazla kez çağrılabilir (örneğin, PSTORE_TYPE_DMESG kayıtları için ramoops_pstore_read -> ramoops_get_next_prz aracılığıyla). Şu anda fonksiyon, prz->old_log yalnızca NULL olduğunda tahsis etmektedir; ancak prz->old_log_size değerini koşulsuz olarak mevcut arabellek boyutuyla günceller ve ardından bu yeni boyutu kullanarak memcpy_fromio() işlemini gerçekleştirir. Eğer arabellek boyutu ilk tahsisten bu yana büyümüşse (bu durum farklı kernel önyükleme döngüleri arasında gerçekleşebilir), şu sonuçlar ortaya çıkar: 1. memcpy_fromio() çağrılarında bir yığın arabellek taşması (OOB yazma) 2. ramoops_pstore_read() fonksiyonunun hatalı (daha büyük) old_log_size değerini kullanarak arabelleğe erişmesiyle oluşan ardışık bir OOB okuma KASAN raporu şuna benzer olacaktır: BUG: KASAN: slab-out-of-bounds in ramoops_pstore_read+0x... Read of size N at addr ... by task ... Bu koşulların tetiklenmesi muhtemelen oldukça zordur: 0. Kayıt maksimum boyutundan daha az baytlık bir ramoops yazımı ile sistem çökmesi. 1. Yeniden başlatma: ramoops kaydedilir, pstore_get_records(0) eski çökmeyi okur, X boyutunda old_log tahsis eder. 2. Çökme işleyicisi kaydedilir, zamanlayıcı başlatılır (pstore_update_ms >= 0 ise). 3. Bir Oops meydana gelir (ölümcül olmayan, sistem çalışmaya devam eden). 4. pstore_dump(), ramoops_pstore_write() üzerinden Y boyutunda (>X) oops verisini yazar. 5. pstore_new_entry = 1 olur, pstore_timer_kick() çağrılır. 6. Sistem çalışmaya devam eder (panic oops değil). 7. Zamanlayıcı, pstore_update_ms milisaniye sonra tetiklenir. 8. pstore_timefunc() → schedule_work() → pstore_dowork() → pstore_get_records(1) 9. ramoops_get_next_prz() → persistent_ram_save_old() 10. buffer_size() Y değerini döndürür, ancak old_log X bayttır. 11. Y > X: memcpy_fromio() yığını taşırır. Gereksinimler: - Kayıt boyutunu doldurmayan önceden mevcut bir çökme kaydı olması (çökme işleyicisinin kayıt boyutuna sığdırabildiği kadar veri yazdığı, bunun maksimum kayıt boyutuyla sınırlandırıldığı ve kmsg arabelleğinin neredeyse her zaman maksimum kayıt boyutunu aştığı göz önüne alındığında neredeyse imkansızdır). - pstore_update_ms >= 0 (varsayılan olarak devre dışıdır). - Ölümcül olmayan Oops (sistemin hayatta kalması). Yeni boyut, önceden tahsis edilen boyuttan farklı olduğunda arabelleği serbest bırakın ve yeniden tahsis edin. Bu, old_log'un kopyalanan veriler için her zaman yeterli alana sahip olmasını sağlar.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın3 Haz 2026
İlk görülme3 Haz 2026
Zayıflık türüCWE-122CWE-122

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.10.252, 5.15.202, 6.1.165, 6.6.128, 6.12.75, 6.18.14, 6.19.4 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel3.5.1 ≤ v < 5.10.252, 5.11 ≤ v < 5.15.202, 5.16 ≤ v < 6.1.165, 6.2 ≤ v < 6.6.128, 6.7 ≤ v < 6.12.75, 6.13 ≤ v < 6.18.14, 6.19 ≤ v < 6.19.4, 3.55.10.252, 5.15.202, 6.1.165, 6.6.128, 6.12.75, 6.18.14, 6.19.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.

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