Penligent Başlık

Hayalet Sınıfı: Craft CMS'de CVE-2025-32432 Yii2 Konteyner Enjeksiyonunu Silahlandırmak

PHP güvenlik açıkları hiyerarşisinde, Bağımlılık Enjeksiyonu (DI) Konteyner Enjeksiyonu tespit edilmesi karmaşık, istismar edilmesi zarif ve etkisi yıkıcı olan en tepede yer alır.

Açıklanması CVE-2025-32432 hedefleme Craft CMS (ve buna bağlı olarak, altta yatan Yii2 Çerçevesi) acımasız bir hatırlatma görevi görür: kullanıcı girdisi sınıf örneklemesini kontrol ettiğinde, uygulama saldırgana aittir.

Birçok güvenlik tarayıcısı bunu bir "Yapılandırma Sorunu" olarak işaretlese de, seçkin güvenlik mühendisleri bunun gerçekte ne olduğunun farkındadır: Uzaktan Kod Yürütme (RCE) güvensiz nesne serileştirme yoluyla. Bu makale, güvenlik açığının teknik bir otopsisini yaparak gadget zincirini yeniden yapılandırmakta ve yapay zeka odaklı analizin bu mantık kusurlarını geniş ölçekte yakalamanın tek yolu olduğunu göstermektedir.

Başarısızlığın Mimarisi: Yii2 Konteynerinin İçinde

CVE-2025-32432'yi anlamak için Yii2'nin kalbini anlamanız gerekir: Yii2'nin yii\\di\\Container.

Craft CMS, sınıf bağımlılıklarını yönetmek için Yii2'nin DI konteynerine güvenir. Kapsayıcı, geliştiricilerin dizileri kullanarak nesneleri yapılandırmasına olanak tanır. Örneğin:

PHP

// Meşru kullanım $object = Yii::createObject([ 'class' => 'app\\models\\User', 'name' => 'Admin', ]);

Güvenlik açığı, bir saldırgan bu yapılandırma dizisini etkileyebildiğinde ortaya çıkar. Bir denetleyici eylemi ham JSON girdisi alır ve bunu kör bir şekilde Yii::createObject() veya Yii::$container->set()saldırgan, uygulamayı herhangi bir sınıf ile otomatik yükleme yolunda kullanılabilir herhangi bir mülk değerler.

Saldırı Yüzeyi

Hata genellikle API isteklerini işleyen Craft CMS denetleyicilerinde veya girdi sanitizasyonunun mantık (Sınıf tanımları) yerine XSS'ye (HTML etiketleri) odaklandığı eklenti yapılandırmalarında bulunur.

  • Kaynak: Kullanıcı tarafından sağlanan JSON (örn, POST /actions/vulnerable-plugin/save-config).
  • Lavabo: Yii::createObject($userInput).
Hayalet Sınıfı: Craft CMS'de CVE-2025-32432 Yii2 Konteyner Enjeksiyonunu Silahlandırmak

Öldürme Zincirinin Oluşturulması: PoC

Sömürü için bir yol bulmak gerekir. Gadget-Yaşam döngüsü yöntemlerinde tehlikeli işlemler (dosya yazma veya komut yürütme gibi) gerçekleştiren bir sınıf (__construct, başlangıç, __yok etveya UYAN).

CVE-2025-32432 bağlamında, Yii2 ekosisteminde bulunan ve aşağıdakileri içeren ortak bir gadget zincirinden yararlanıyoruz yii\\rest\\IndexAction veya benzer geri çağırma ağırlıklı sınıflar.

Konsept

Bir PHP geri çağırma işlevini yürütmemize izin veren bir sınıfı örneklemek istiyoruz (örneğin sistem veya yönetici) sağlanan bir argüman üzerinde.

Silahlandırılmış JSON Yükü

Aşağıda, kötü amaçlı bir sınıf tanımı enjekte ederek RCE'nin nasıl tetikleneceğini gösteren kavramsal bir Kavram Kanıtı (PoC) yer almaktadır.

JSON

{"rce_trigger": { "class": "yii\\\\rest\\\\IndexAction", "checkAccess": "system", "id": "rce", "controller": { "class": "yii\\\\web\\\\Controller", "id": "dummy" }, "modelClass": "yii\\\\base\\\\Model", "run": "id; uname -a" } }

Yükün Dağılımı:

  1. sınıf: DI konteynerine, DI'yı örneklemesi için talimat veriyoruz yii\\rest\\IndexAction.
  2. checkAccess: Bu bizim tehlikeli özelliğimiz. Bu özel aygıtta checkAccess özelliği bir çağrılabilir tutmak için tasarlanmıştır. Bunu şu şekilde ayarladık sistem.
  3. Yürütmenin Tetiklenmesi: Uygulama bu nesneyi işlediğinde (genellikle run() metot yürütme veya özellik doğrulama), depolanan geri çağırmayı çağırır checkAccess bağlam (veya saldırgan) tarafından sağlanan argümanlarla.
  4. Sonuç: Sunucu şu işlemleri yürütür system('id; uname -a').

Not: Sertleştirilmiş bir ortamda, saldırganlar bunu yii\\caching\\FileCache 'ye bir PHP web kabuğu yazmak için web/ dizin.

Geleneksel Tarayıcılar Bunu Neden Gözden Kaçırıyor?

CVE-2025-32432'yi tespit etmek eski DAST araçları için oldukça zordur.

  • İmza yok: Yük geçerli bir JSON'dur. SQL enjeksiyon sözdizimi içermez (' VEYA 1=1) veya XSS etiketleri ().
  • Bağlam Bağımlıdır: Güvenlik açığı girdinin kendisinde değil nasıl çerçeve yorumluyor sınıf Anahtar. Standart bir tarayıcı bunu anlamaz sınıf haritalar Yii::createObject.

Yapay Zeka Güdümlü Tespit: Penligent Avantajı

İşte burası Penligent.ai paradigmayı değiştirir. Penligent şunları kullanır Bağlam Farkında Yapay Zeka Ajanları Çerçeveye özgü mantığı anlayan.

  1. Çerçeve Tanıma: Penligent'ın aracıları hedefin Craft CMS / Yii2 çalıştırdığını tespit eder. Bu çerçeveye özgü "Tehlikeli Lavaboları" bilir (örn, Yii::createObject).
  2. Mantıksal Çıkarım: Yapay zeka, kör bulanıklaştırma yerine API şemasını analiz eder. Yapılandırma benzeri parametreleri kabul eden bir JSON nesnesi görürse, akıllıca "Probing Payloads" enjekte eder - örneğin, aşağıdaki gibi iyi huylu bir sınıfı örneklemeye çalışır yii\\helpers\\VarDumper-konteynerin erişilebilir olup olmadığını test etmek için.
  3. Otomatik Doğrulama: Prob başarılı olursa (örneğin, uygulama farklı davranırsa veya sınıf örneklemesini gösteren belirli bir hata döndürürse), Penligent uç noktayı aşağıdakilere karşı savunmasız olarak işaretler Konteyner Enjeksiyonu ve düzeltme doğrulaması için belirli RCE yükünü oluşturur.

İyileştirme ve Savunma

Craft CMS'yi CVE-2025-32432 ve benzeri DI saldırılarına karşı güvence altına almak:

  1. Sıkı Tip Kontrolü: Ham kullanıcı girdi dizilerini asla Yii::createObject. Her zaman aşağıdakileri doğrulayın sınıf anahtarı ya yoktur (arka uçta sabit kodlanmıştır) ya da kesinlikle izin verilenler listesindedir.
  2. Craft CMS'yi güncelleyin: En son yamaları hemen uygulayın. Satıcı büyük olasılıkla eylem keyfi sınıf tanımlarını reddetmek için işleme mantığı.
  3. Tehlikeli İşlevleri Devre Dışı Bırakın: Senin içinde php.ini, kullan disable_functions engellemek için sistem, yönetici, passthruve proc_open DKAB'ın etkisini azaltmak için.

Sonuç

CVE-2025-32432 modern PHP çerçevelerinin güçlü olmalarına rağmen karmaşık saldırı yüzeyleri oluşturduklarını hatırlatıyor. Container Injection, "2020'lerin SQL Injection "ıdır - tam kontrol sağlayan bir mantık hatası.

Güvenlik mühendisleri için ders açıktır: Kullanıcıların nesneleri tanımlamasına izin verirseniz, onlar da sizin yıkımınızı tanımlayacaktır. Verilerin "Şeklini" doğrulamak artık yeterli değildir; "Türünü" de doğrulamanız gerekir.

Güvenilir Referanslar

Gönderiyi paylaş:
İlgili Yazılar
tr_TRTurkish