CVE-2026-61599
Açıklama
djust, Django için Rust destekli performansla Phoenix LiveView tarzı reaktif sunucu tarafı oluşturma sağlar. Versiyon 1.0.7 öncesinde, djust canlı taşıma katmanı, istemci tarafından sağlanan noktalı bir yol üzerinden bağlanacak olan LiveView'u `__import__(module_path, ...)` çağrısını yaparak çözer. Modül, çerçeve çözümlenen nesnenin bir `LiveView` alt sınıfı olduğunu kontrol etmeden ve görünüm bazlı herhangi bir kimlik doğrulaması yapılmadan önce içe aktarılır ve böylece üst düzey kodu (içe aktarma yan etkileri) çalıştırılır. Bunu içermesi gereken `LIVEVIEW_ALLOWED_MODULES` izin verilenler listesi, hata durumunda açık kalır (`if allowed_modules:` — ayar belirlenmediğinde, yani çerçeve varsayılanında atlanır) ve gevşek `startswith` eşleşmesi kullanır. Bu nedenle, kimliği doğrulanmamış bir WebSocket istemcisi (WS el sıkışması kimlik doğrulaması gerektirmez; görünüm bazlı kimlik doğrulaması yalnızca içe aktarma ve örnekleme işleminden sonra çalışır), `view = "<herhangi.bir.içe.aktarılabilir.modül>.HerhangiBirİsim"` içeren bir `mount` / `live_redirect_mount` / `url_change` çerçevesi (veya bir SSE mount) göndererek sunucunun adıyla herhangi bir içe aktarılabilir Python modülünü içe aktarmasına ve üst düzey kodunu yürütmesine neden olabilir. Versiyon 1.0.7, sorunu hata durumunda kapalı kalan bir çözümleme geçidiyle (`djust._view_resolution.is_view_import_allowed`) düzeltir: Bir istemci görünüm yolu yalnızca (a) modülü zaten yüklüyse (`sys.modules` — böylece çözümleme yeni bir kod çalıştırmaz; başlangıçta URLconf tarafından yüklenen URL yönlendirmeli görünümler sıfır yapılandırma ile çalışmaya devam eder) veya (b) bir modül segment sınırında `LIVEVIEW_ALLOWED_MODULES` ile eşleşiyorsa (tembel olarak içe aktarılan görünümler için açık onay) çözümlenir. Geçit, her üç noktada da `__import__` işleminden önce çalışır (`_instantiate_view` içinde derinlemesine savunma ile birlikte). Geçici bir çözüm olarak, `LIVEVIEW_ALLOWED_MODULES` ayarını, bağlanabilir LiveView sınıflarınızı içeren dar bir modül listesine ayarlayın. (Not: yamadan önce izin verilenler listesi `startswith` ile eşleştirilir ve içe aktarma işlemi hala alt sınıf kontrolünden önce gerçekleşir, bu nedenle bu tam bir düzeltme değil, hafifletmedir.)
Nasıl düzeltilir
- djust1.0.7 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| djustPyPI | v < 1.0.7 | 1.0.7 |
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.