CVE-2026-49400
Açıklama
October System, October Content Management System için system modülünü sağlamaktadır. Versiyonlar 3.7.17 ve 4.2.21 öncesinde, backend `SessionMaker` trait'i, widget oturum durumunu `base64(serialize(...))` olarak saklamakta ve bunu herhangi bir `allowed_classes` kısıtlaması olmaksızın `unserialize()` ile tüketmekteydi. Saldırgan tarafından kontrol edilen baytlarla bir `widget.*` oturum anahtarına yazabilen herhangi bir kod yolu, widget oturum durumunu bir sonraki okuma işleminde PHP nesne enjeksiyonunu tetikleyebilir; bu da rastgele sınıfların örneklendirilmesine ve erişilebilir PHP gadget zincirlerinin çalıştırılmasına olanak tanırdı. Bu sorun yalnızca `cms.safe_mode` etkinleştirilmiş kurulumları etkilemektedir. Güvenli Mod (Safe Mode), öncelikle demo kurulumları ile güvenilmeyen kullanıcılara kasıtlı olarak CMS işaretleme düzenleyici erişimi verilen çok kiracılı veya paylaşımlı düzenleyici senaryolarında kullanılan niş bir isteğe bağlı özelliktir. Standart üretim dağıtımlarında Güvenli Mod kapalıdır, backend erişimi güvenilir yöneticilerle sınırlandırılmıştır ve bir işaretleme düzenleyici zaten doğrudan rastgele PHP kodu çalıştırabilir. Bu noktaya ulaşan oturum yazma yolu Güvenli Mod sandbox'ı ile korunduğundan, Güvenli Mod etkin olmayan kurulumlar risk altında değildir. Etki kapsamı, Güvenli Mod etkin olsa bile dardır. Widget oturum durumunu dolduran standart backend kod yolları (arama terimleri, sıralama seçenekleri, seçili ID'ler, filtre değerleri), girdiyi serileştirmeden önce bilinen bir dizi yapısı içine sardığından, kullanıcı tarafından sağlanan değerler hiçbir zaman `unserialize()` fonksiyonuna kontrol edilebilir serileştirilmiş bir yük olarak ulaşmaz. İstismar işlemi, Güvenli Mod oturum yazma yolunun yanı sıra yüklü bağımlılık setinden erişilebilen uygun bir PHP gadget zinciri gerektirir. Aşağıdaki sıkılaştırma, temel nesne enjeksiyon noktasını kaldırarak sorunun bu sınıfını tamamen kapatmaktadır. Zafiyet v3.7.17 ve v4.2.21 sürümlerinde yamalanmıştır. İki değişiklik uygulanmıştır: `Backend\Traits\SessionMaker` artık widget oturum durumunu `base64(serialize(...))` yerine düz JSON olarak saklayarak yeni yazımlar için nesne enjeksiyon noktasını tamamen ortadan kaldırmaktadır. Okumalar, mevcut oturumların kaydedilen widget durumlarını koruması için tek bir yükseltme döngüsü boyunca şeffaf bir şekilde eski formata geri dönmektedir. Eski `unserialize()` geri dönüş yolu artık `allowed_classes => false` şeklinde ayarlanmıştır, böylece yükseltmeden önce yazılan değerler bile nesneleri örneklendiremez. Geçici bir çözüm olarak, her türlü dağıtım için standart October CMS önerisi olduğu üzere, CMS işaretleme düzenleme erişimini yalnızca tam güvenilir yöneticilerle sınırlandırın.
Nasıl düzeltilir
- october/system3.7.17, 4.2.23 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| october/systemPackagist | v < 3.7.17, 4.0.0 ≤ v < 4.2.23 | 3.7.17, 4.2.23 |
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.